propagating file change attr on open

This commit is contained in:
Olga Kornievskaia 2012-02-08 11:11:09 -05:00
parent 3def6f5e24
commit ec034e7fd9
3 changed files with 8 additions and 7 deletions

View file

@ -602,6 +602,7 @@ static int handle_open(nfs41_upcall *upcall)
nfs_to_basic_info(&info, &args->basic_info); nfs_to_basic_info(&info, &args->basic_info);
nfs_to_standard_info(&info, &args->std_info); nfs_to_standard_info(&info, &args->std_info);
args->mode = info.mode; args->mode = info.mode;
args->changeattr = info.change;
if (state->delegation.state) if (state->delegation.state)
args->deleg_type = state->delegation.state->state.type; args->deleg_type = state->delegation.state->state.type;
} }

View file

@ -53,7 +53,7 @@ typedef struct __open_upcall_args {
ULONG create_opts; ULONG create_opts;
LONG open_owner_id; LONG open_owner_id;
DWORD mode; DWORD mode;
LONGLONG changeattr; ULONGLONG changeattr;
HANDLE srv_open; HANDLE srv_open;
DWORD deleg_type; DWORD deleg_type;
BOOLEAN created; BOOLEAN created;

View file

@ -173,7 +173,7 @@ typedef struct _updowncall_entry {
ULONG cattrs; ULONG cattrs;
LONG open_owner_id; LONG open_owner_id;
DWORD mode; DWORD mode;
LONGLONG changeattr; ULONGLONG changeattr;
HANDLE srv_open; HANDLE srv_open;
DWORD deleg_type; DWORD deleg_type;
BOOLEAN symlink_embedded; BOOLEAN symlink_embedded;
@ -372,7 +372,7 @@ typedef struct _NFS41_FCB {
FILE_STANDARD_INFORMATION StandardInfo; FILE_STANDARD_INFORMATION StandardInfo;
BOOLEAN Renamed; BOOLEAN Renamed;
DWORD mode; DWORD mode;
LONGLONG changeattr; ULONGLONG changeattr;
} NFS41_FCB, *PNFS41_FCB; } NFS41_FCB, *PNFS41_FCB;
#define NFS41GetFcbExtension(pFcb) \ #define NFS41GetFcbExtension(pFcb) \
(((pFcb) == NULL) ? NULL : (PNFS41_FCB)((pFcb)->Context)) (((pFcb) == NULL) ? NULL : (PNFS41_FCB)((pFcb)->Context))
@ -1574,8 +1574,8 @@ NTSTATUS unmarshal_nfs41_open(
*buf += sizeof(HANDLE); *buf += sizeof(HANDLE);
RtlCopyMemory(&cur->u.Open.mode, *buf, sizeof(DWORD)); RtlCopyMemory(&cur->u.Open.mode, *buf, sizeof(DWORD));
*buf += sizeof(DWORD); *buf += sizeof(DWORD);
RtlCopyMemory(&cur->u.Open.changeattr, *buf, sizeof(LONGLONG)); RtlCopyMemory(&cur->u.Open.changeattr, *buf, sizeof(ULONGLONG));
*buf += sizeof(LONGLONG); *buf += sizeof(ULONGLONG);
RtlCopyMemory(&cur->u.Open.deleg_type, *buf, sizeof(DWORD)); RtlCopyMemory(&cur->u.Open.deleg_type, *buf, sizeof(DWORD));
*buf += sizeof(DWORD); *buf += sizeof(DWORD);
if (cur->errno == ERROR_REPARSE) { if (cur->errno == ERROR_REPARSE) {
@ -1597,7 +1597,7 @@ NTSTATUS unmarshal_nfs41_open(
cur->u.Open.symlink.MaximumLength); cur->u.Open.symlink.MaximumLength);
DbgP("[open] ERROR_REPARSE -> '%wZ'\n", &cur->u.Open.symlink); 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->open_state, cur->u.Open.mode, cur->u.Open.changeattr,
cur->u.Open.deleg_type); cur->u.Open.deleg_type);
out: out:
@ -3158,7 +3158,7 @@ BOOLEAN isDataAccess(
} }
BOOLEAN has_file_changed( BOOLEAN has_file_changed(
IN LONGLONG new_changeattr, IN ULONGLONG new_changeattr,
IN PFILE_BASIC_INFORMATION new_binfo, IN PFILE_BASIC_INFORMATION new_binfo,
IN PNFS41_FCB nfs41_fcb) IN PNFS41_FCB nfs41_fcb)
{ {