From ec034e7fd90e116b711071ff09bf3c3cf7b4eead Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Wed, 8 Feb 2012 11:11:09 -0500 Subject: [PATCH] propagating file change attr on open --- daemon/open.c | 1 + daemon/upcall.h | 2 +- sys/nfs41_driver.c | 12 ++++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/daemon/open.c b/daemon/open.c index e3396c4..a46d167 100644 --- a/daemon/open.c +++ b/daemon/open.c @@ -602,6 +602,7 @@ static int handle_open(nfs41_upcall *upcall) nfs_to_basic_info(&info, &args->basic_info); nfs_to_standard_info(&info, &args->std_info); args->mode = info.mode; + args->changeattr = info.change; if (state->delegation.state) args->deleg_type = state->delegation.state->state.type; } diff --git a/daemon/upcall.h b/daemon/upcall.h index 5efc7fb..a1d6fd9 100644 --- a/daemon/upcall.h +++ b/daemon/upcall.h @@ -53,7 +53,7 @@ typedef struct __open_upcall_args { ULONG create_opts; LONG open_owner_id; DWORD mode; - LONGLONG changeattr; + ULONGLONG changeattr; HANDLE srv_open; DWORD deleg_type; BOOLEAN created; diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c index 97a6f1a..fa27152 100644 --- a/sys/nfs41_driver.c +++ b/sys/nfs41_driver.c @@ -173,7 +173,7 @@ typedef struct _updowncall_entry { ULONG cattrs; LONG open_owner_id; DWORD mode; - LONGLONG changeattr; + ULONGLONG changeattr; HANDLE srv_open; DWORD deleg_type; BOOLEAN symlink_embedded; @@ -372,7 +372,7 @@ typedef struct _NFS41_FCB { FILE_STANDARD_INFORMATION StandardInfo; BOOLEAN Renamed; DWORD mode; - LONGLONG changeattr; + ULONGLONG changeattr; } NFS41_FCB, *PNFS41_FCB; #define NFS41GetFcbExtension(pFcb) \ (((pFcb) == NULL) ? NULL : (PNFS41_FCB)((pFcb)->Context)) @@ -1574,8 +1574,8 @@ NTSTATUS unmarshal_nfs41_open( *buf += sizeof(HANDLE); RtlCopyMemory(&cur->u.Open.mode, *buf, sizeof(DWORD)); *buf += sizeof(DWORD); - RtlCopyMemory(&cur->u.Open.changeattr, *buf, sizeof(LONGLONG)); - *buf += sizeof(LONGLONG); + RtlCopyMemory(&cur->u.Open.changeattr, *buf, sizeof(ULONGLONG)); + *buf += sizeof(ULONGLONG); RtlCopyMemory(&cur->u.Open.deleg_type, *buf, sizeof(DWORD)); *buf += sizeof(DWORD); if (cur->errno == ERROR_REPARSE) { @@ -1597,7 +1597,7 @@ NTSTATUS unmarshal_nfs41_open( cur->u.Open.symlink.MaximumLength); DbgP("[open] ERROR_REPARSE -> '%wZ'\n", &cur->u.Open.symlink); } - DbgP("[open] open_state 0x%x mode %o changeattr 0x%x deleg_type %d\n", + DbgP("[open] open_state 0x%x mode %o changeattr 0x%lx deleg_type %d\n", cur->open_state, cur->u.Open.mode, cur->u.Open.changeattr, cur->u.Open.deleg_type); out: @@ -3158,7 +3158,7 @@ BOOLEAN isDataAccess( } BOOLEAN has_file_changed( - IN LONGLONG new_changeattr, + IN ULONGLONG new_changeattr, IN PFILE_BASIC_INFORMATION new_binfo, IN PNFS41_FCB nfs41_fcb) {