Commit graph

602 commits

Author SHA1 Message Date
Olga Kornievskaia
57baa75f04 changing error code when path is too long 2012-04-26 11:06:31 -04:00
Olga Kornievskaia
7f338d871b [driver] storing fsattrs in netroot 2012-04-25 12:40:58 -04:00
Olga Kornievskaia
c4c76c97d2 [volume] fixing FsAttributes volume query
not setting the length of the reply produced a zero valued query.
2012-04-25 11:37:24 -04:00
Olga Kornievskaia
b3a86d0256 simply logic for unsetting readonly attribute 2012-04-24 11:41:40 -04:00
Casey Bodley
2baeeb855b volume: cache volume attributes on mount
struct NFS41_V_NET_ROOT_EXTENSION now stores only the FILE_FS_ATTRIBUTE_INFORMATION (without the extra buffer space for a name).  on QueryVolumeInfo() for FileFsAttributeInformation on the root directory, the FILE_FS_ATTRIBUTE_INFORMATION is copied into the output buffer, and the name is added there.  QueryVolumeInfo() only makes upcalls when FileFsAttributeInformation queries are not for the root directory

new function is_root_directory() uses the logic from Set/GetReparsePoint() to determine whether it's operating on the root directory

moved logic from volume.c:handle_volume_attributes() to superblock.c:nfs41_superblock_fs_attributes().  the mount downcall copies the FILE_FS_ATTRIBUTE_INFORMATION buffer down to the driver.  the driver reads this buffer directly into VNetRootContext->FsAttrs

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-20 15:03:14 -04:00
Olga Kornievskaia
4c8c263b49 implement getattr for FileNetworkOpenInformation 2012-04-20 12:42:36 -04:00
Olga Kornievskaia
f4071450c0 [driver] done overide open create mode 0 w 0777
removing the check of mode 0 and then setting mode 0777. cygwin can
open for create with mode 0 which we were overriding with 0777.
2012-04-09 15:02:21 -04:00
Casey Bodley
c837631750 ea: fail non-cygwin EAs without named attr support
if non-cygwin EAs are given to Create, SetEaInfo, or QueryEaInfo and the server does not support named attributes, fail with STATUS_EAS_NOT_SUPPORTED.  also adds access checks for FILE_READ_EA and FILE_WRITE_EA

Create will accept all 3 cygwin EAs: NfsV3Attributes, NfsActOnLink, and NfsSymlinkTargetName.  it now handles NfsActOnLink by adding FILE_OPEN_REPARSE_POINT to the create options

SetEaInfo will only accept NfsV3Attributes for setting the file mode. the other two will fail with STATUS_INVALID_PARAMETER.  removed handling of NfsActOnLink in setattr.c

QueryEaInfo will accept all 3 cygwin EAs

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-09 15:01:15 -04:00
Casey Bodley
b3229d20f6 ea: query each superblock for named attr support
adds a new function nfs41_superblock_getattr(), which adds an OPENATTR call with createdir=0 after the GETATTR to check for named attribute support.  OPENATTR will either return ERR_NOTSUPP if not supported, or OK/ERR_NOENT depending on whether named attributes are present on the given file.  we can't query for the 'named_attr' attribute, because it only tells us whether the given file contains named attributes

if named attributes are supported on a superblock, it will return FILE_SUPPORTS_EXTENDED_ATTRIBUTES for associated volume queries

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-09 15:01:12 -04:00
Casey Bodley
fd591f92d7 ea: initialize named attr paths
zero-initialize the paths for named attrs, and initialize the file.name instead of using a temporary dst_name

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-09 15:01:03 -04:00
Casey Bodley
7bd70cf488 ea: defer storing mode until SetEaInfo succeeds
on SetEaInfo for NfsV3Attributes, wait to set nfs41_fcb.mode until the upcall returns successfully

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-09 15:00:57 -04:00
Olga Kornievskaia
92d3500bd2 changing silly rename scheme take 2
reverting patch 4d18cf9ce7.

it was wrong to append the timestamp to create a silly renamed name
because it was not a reproducable name.

instead, take an fh and md5(fh) then append as before.
2012-04-06 17:01:50 -04:00
Olga Kornievskaia
7fe39f0a53 [cosmetic] adding printfs to open error codes 2012-04-05 17:13:35 -04:00
Olga Kornievskaia
99e127156a [driver] make default upcall timeout 50s 2012-04-03 14:40:56 -04:00
Casey Bodley
4e1449a2f8 ea: fixes for named attributes
assign a superblock to named attribute files on nfs41_open(), to prevent crashing in nfs41_write()
also avoid updating the attribute cache with named attribute files on close and write

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-03 13:43:35 -04:00
Olga Kornievskaia
9135e07221 only send setattr if attr changed
for hidden, system, and archive, first check with our cached attributes
and if the values are the same, ignore this setattr
2012-04-02 18:41:37 -04:00
Olga Kornievskaia
41389178a3 setting archive attr based on createopts
was incorrectly using file_attributes instead of create attributes to check
if we are creating a file or a directory. it lead to creating directories
with archive set.
2012-04-02 18:39:54 -04:00
Casey Bodley
c59124dd20 superblock: mask getattr requests with supported_attrs
on creation of a new superblock, construct a bitmap for the default attribute mask to be used for GETATTR and READDIR requests on that filesystem.  mask out any unsupported attributes, and store the bitmap in the field nfs41_superblock.default_getattr

replaced function init_getattr_request() with nfs41_superblock_getattr_mask(), which returns a copy of superblock->default_getattr

removed the locking in nfs41_superblock_supported_attrs() and nfs41_superblock_supported_attrs_exclcreat(), as the supported_attrs and suppattr_exclcreat fields are read-only after the superblock is first initialized.  also factored out their common code into a bitmap_intersect() function in util.h

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-02 16:34:02 -04:00
Casey Bodley
b955b6d3fe ea: assign superblock to named attribute directory
the upcall to set an EA was crashing in nfs41_open() on a null superblock, because nfs41_rpc_openattr() was returning a filehandle without a superblock.  copy the parent file's superblock to the returned filehandle

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-04-02 16:33:49 -04:00
Olga Kornievskaia
7787ee403b [cosmetic] adding error printf for access_denied on open 2012-04-02 15:29:42 -04:00
Olga Kornievskaia
6ce297022c use provided, not saved mode for superseded opens 2012-04-02 14:42:35 -04:00
Olga Kornievskaia
6f55d3e346 mask attrs only when present
during delegation recovery we don't pass in create attributes.
2012-04-02 13:30:04 -04:00
Olga Kornievskaia
9320098f0c [driver] access error code on open
returning access_denied instead of network_access_denied
2012-04-02 12:51:31 -04:00
Olga Kornievskaia
19715faf2b removing readonly file opened for write check
it causes ifstest problems
2012-04-02 12:50:48 -04:00
Olga Kornievskaia
49580a8cfe handling hidden system archive file attributes
todo: still need to mask supported attributes while doing getattrs
2012-04-02 12:49:44 -04:00
Casey Bodley
68d97f5400 open: use suppattr_exclcreat to mask exclusive create attributes
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 16:17:48 -04:00
Olga Kornievskaia
6bb641e547 open and create accept pointer to attributes
allow callers of nfs41_open() and nfs41_create() to pass arbitrary attributes fo
r use with open_args.openhow.how.createattrs and create_args.createattrs
2012-03-29 16:16:55 -04:00
Olga Kornievskaia
dc9377ce58 adding arguments check functions to mrx functions
moving input argument checks into check_nfs41_X () functions
2012-03-29 15:47:21 -04:00
Olga Kornievskaia
60e1d87a86 removing unused Flags field in FCB context 2012-03-29 15:47:05 -04:00
Casey Bodley
092c39d9d6 driver: change error code for rename, link with RootDirectory
http://msdn.microsoft.com/en-us/library/cc232085%28v=prot.10%29.aspx : "STATUS_INVALID_PARAMETER: An invalid parameter was passed for FileName or FileNameLength, or the target file was open, or the RootDirectory field value was nonzero for a network operation."

as network filesystems are not expected to support this, return STATUS_INVALID_PARAMETER instead of STATUS_NOT_SUPPORTED

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 15:46:55 -04:00
Casey Bodley
e83d36544f symlink: handle errors from REMOVE
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 15:46:44 -04:00
Casey Bodley
829c05d6b5 driver: add checks for reparse points on volume
fail attempts to set/get reparse points when the filename is no longer than the vnetroot name (plus a \) to prevent these operations on a volume.  also adds checks for non-null buffers to pass Set/GetPointInvalidParamTest

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 15:46:32 -04:00
Olga Kornievskaia
4d18cf9ce7 changing silly rename scheme
instead of appending a fh value when creating a silly rename name,
we'll append a timestamp. using fh value was problematic because
it was creating a filename longer than 64char long which is
currently out max_filename_size.
2012-03-29 11:23:55 -04:00
Casey Bodley
61998b5968 driver: convert strings to utf8 instead of ansi
use RtlUnicodeToUTF8N() instead of RtlUnicodeStringToAnsiString() to preserve unicode filenames; passes fileio test UnicodeOnDiskTest

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 11:23:49 -04:00
Olga Kornievskaia
6119fba99f adding sharing violation check for supersede
rdbss usually does sharing violation checks for us but missed this one.
2012-03-29 11:23:45 -04:00
Olga Kornievskaia
b40f685286 return not_supported for windows streams 2012-03-29 11:23:38 -04:00
Olga Kornievskaia
0020104b95 fixing handling of delete_on_close
file can be opened with a delete_on_close flag set. this file can be
opened again as long as opens specify "file_share_delete" access.
after receiving the cleanup irp, the handle enters "delete-pending"
state. opens in this state must fail with status_delete_pending.
file query for standard_info.delete_pending now should return true.

calling setattr with disposition=1 puts the file in "delete-pending"
state.

calling setattr with dispositon=0 will clear delete_on_close only
if file is in "delete-pending" state. otherwise, setattr is ignored.
2012-03-29 11:23:34 -04:00
Casey Bodley
7a8861699f driver: add checks for ifs reparse point tests
Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2012-03-29 11:23:28 -04:00
Olga Kornievskaia
4bfb05adac returning buffer_overflow instead of too_small 2012-03-29 11:23:23 -04:00
Olga Kornievskaia
83cab313f0 propagate attrs on dir creation 2012-03-29 11:23:18 -04:00
Olga Kornievskaia
24781aa472 checking parameters on open
based on MS-FSA document there are a few checks we should do
on open that we didn't before.
2012-03-29 11:23:13 -04:00
Olga Kornievskaia
dd611ff0cd treat OVERWRITE as open4_create unchecked4 2012-03-29 11:23:01 -04:00
Olga Kornievskaia
fae194a5b6 respect NO_INTERMIDIATE_BUFFERING for an open 2012-03-20 11:20:11 -04:00
Olga Kornievskaia
735784e85b notepad specific fixes
removing notepad opens file as a directory ifdef

for volume query notepad supplies insufficient buffer space but
doesn't like buffer_too_small error code. it seems to be fine
with partial buffer filled and buffer_overflow error.
2012-03-19 16:52:20 -04:00
Olga Kornievskaia
f89ded9bf6 [debug] add a missing DEBUG_VOLUME_QUERY 2012-03-19 16:36:42 -04:00
Olga Kornievskaia
439621a459 [driver] respect READONLY attribute
if file is created with READONLY attr then set mode to 444

if file is opened with READONLY attr but askes for WRITE access
return an error
2012-03-19 15:05:02 -04:00
Olga Kornievskaia
4418ba8b69 fixing open for FILE_SUPERSEDE
http://www.osronline.com/showThread.cfm?link=27213
clarifies that unless open for overwrite_if the old file should be
deleted and then created again.
2012-03-19 15:05:01 -04:00
Olga Kornievskaia
c6ee60b362 [driver] fixing possible app/driver/nfsd race
entry->filename points to something the app address space. if app was
started and the ctrl-ed c, then when nfsd picks up the upcall it should
check if the pointer is still valid
2012-03-19 15:04:59 -04:00
Olga Kornievskaia
863db2735b [open] fix open_if for dir when dir exists 2012-03-19 15:04:57 -04:00
Olga Kornievskaia
540ad44f21 [driver] enforcing filename component length checks
on create, check that provided name has the appropriate filename
length for each directory component.

also check on link and rename
2012-03-19 15:04:56 -04:00