propagating file change attr on open
This commit is contained in:
parent
3def6f5e24
commit
ec034e7fd9
3 changed files with 8 additions and 7 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue