ms-nfs41-client/sys
Casey Bodley ccdaa169eb symlink: handle_open() detects symlink creation
added check in handle_open() to avoid calling CREATE/OPEN when we're creating a symlink:

if (args->disposition == FILE_CREATE &&
    args->access_mask == (FILE_WRITE_ATTRIBUTES | SYNCHRONIZE | DELETE) &&
    args->access_mode == 0 &&
    args->create_opts & FILE_OPEN_REPARSE_POINT)

these are the open arguments we get from the CreateSymbolicLink() syscall.  by avoiding the call to CREATE/OPEN on handle_open(), we save ourselves from having to REMOVE the file before creating the symlink

added a check to handle_symlink() in case the file was actually created on open (an application could open the file with different arguments, and send the FSCTL_SET_REPARSE_POINT manually), and removes the file first

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
2010-10-14 12:42:36 -04:00
..
makefile fresh git tree for public release 2010-10-12 10:15:48 -04:00
nfs41_debug.c symlink: driver marshalls new SYMLINK upcall 2010-10-14 12:42:32 -04:00
nfs41_debug.h fresh git tree for public release 2010-10-12 10:15:48 -04:00
nfs41_driver.c symlink: handle_open() detects symlink creation 2010-10-14 12:42:36 -04:00
nfs41_driver.h symlink: driver marshalls new SYMLINK upcall 2010-10-14 12:42:32 -04:00
nfs41_driver.ini fresh git tree for public release 2010-10-12 10:15:48 -04:00
nfs41_driver.rc fresh git tree for public release 2010-10-12 10:15:48 -04:00
sources fresh git tree for public release 2010-10-12 10:15:48 -04:00
wmlkm.c fresh git tree for public release 2010-10-12 10:15:48 -04:00
wmlkm.h fresh git tree for public release 2010-10-12 10:15:48 -04:00