changing more printouts
This commit is contained in:
parent
8adad77d4b
commit
7d19a7ffef
3 changed files with 115 additions and 41 deletions
|
|
@ -575,21 +575,21 @@ unsigned char *print_fs_information_class(int InfoClass)
|
|||
}
|
||||
}
|
||||
|
||||
void print_caching_level(int on, ULONG flag)
|
||||
void print_caching_level(int on, ULONG flag, PUNICODE_STRING name)
|
||||
{
|
||||
if (!on) return;
|
||||
switch(flag) {
|
||||
case 0:
|
||||
DbgP("DISABLE_CACHING\n");
|
||||
DbgP("enable_caching: DISABLE_CACHING %wZ\n", name);
|
||||
break;
|
||||
case 1:
|
||||
DbgP("ENABLE_READ_CACHING\n");
|
||||
DbgP("enable_caching: ENABLE_READ_CACHING %wZ\n", name);
|
||||
break;
|
||||
case 2:
|
||||
DbgP("ENABLE_WRITE_CACHING\n");
|
||||
DbgP("enable_caching: ENABLE_WRITE_CACHING %wZ\n", name);
|
||||
break;
|
||||
case 3:
|
||||
DbgP("ENABLE_READWRITE_CACHING\n");
|
||||
DbgP("enable_caching: ENABLE_READWRITE_CACHING %wZ\n", name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ void print_basic_info(int on, PFILE_BASIC_INFORMATION info);
|
|||
void print_std_info(int on, PFILE_STANDARD_INFORMATION info);
|
||||
void print_ea_info(int on, PFILE_FULL_EA_INFORMATION info);
|
||||
void print_get_ea(int on, PFILE_GET_EA_INFORMATION info);
|
||||
void print_caching_level(int on, ULONG flag);
|
||||
void print_caching_level(int on, ULONG flag, PUNICODE_STRING s);
|
||||
const char *opcode2string(int opcode);
|
||||
void print_open_error(int on, int status);
|
||||
void print_wait_status(int on, const char *str, NTSTATUS status,
|
||||
|
|
|
|||
|
|
@ -38,9 +38,12 @@
|
|||
#define USE_MOUNT_SEC_CONTEXT
|
||||
|
||||
/* debugging printout defines */
|
||||
//#define DEBUG_MARSHAL_HEADER
|
||||
//#define DEBUG_MARSHAL_DETAIL
|
||||
//#define DEBUG_OPEN
|
||||
//#define DEBUG_CLOSE
|
||||
//#define DEBUG_CACHE
|
||||
//#define DEBUG_INVALIDATE_CACHE
|
||||
//#define DEBUG_READ
|
||||
//#define DEBUG_WRITE
|
||||
//#define DEBUG_DIR_QUERY
|
||||
|
|
@ -51,6 +54,8 @@
|
|||
//#define DEBUG_EA_QUERY
|
||||
//#define DEBUG_EA_SET
|
||||
//#define DEBUG_LOCK
|
||||
//#define DEBUG_MISC
|
||||
//#define DEBUG_TIME_BASED_COHERENCY
|
||||
|
||||
//#define ENABLE_TIMINGS
|
||||
//#define ENABLE_INDV_TIMINGS
|
||||
|
|
@ -547,10 +552,12 @@ NTSTATUS marshal_nfs41_header(
|
|||
RtlCopyMemory(tmp, &entry->open_state, sizeof(HANDLE));
|
||||
tmp += sizeof(HANDLE);
|
||||
|
||||
#ifdef DEBUG_MARSHAL_HEADER
|
||||
DbgP("[upcall header] xid=%lld opcode=%s filename=%wZ version=%d "
|
||||
"session=0x%x open_state=0x%x\n", entry->xid,
|
||||
opcode2string(entry->opcode), entry->filename,
|
||||
entry->version, entry->session, entry->open_state);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -606,10 +613,12 @@ NTSTATUS marshal_nfs41_mount(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_mount: server name=%wZ mount point=%wZ sec_flavor=%s "
|
||||
"rsize=%d wsize=%d\n", entry->u.Mount.srv_name, entry->u.Mount.root,
|
||||
secflavorop2name(entry->u.Mount.sec_flavor), entry->u.Mount.rsize,
|
||||
entry->u.Mount.wsize);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -667,12 +676,14 @@ NTSTATUS marshal_nfs41_open(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_open: name=%wZ mask=0x%x access=0x%x attrs=0x%x "
|
||||
"opts=0x%x dispo=0x%x open_owner_id=0x%x mode=%o srv_open=%p\n",
|
||||
entry->u.Open.filename, entry->u.Open.access_mask,
|
||||
entry->u.Open.access_mode, entry->u.Open.attrs, entry->u.Open.copts,
|
||||
entry->u.Open.disp, entry->u.Open.open_owner_id, entry->u.Open.mode,
|
||||
entry->u.Open.srv_open);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -725,9 +736,11 @@ NTSTATUS marshal_nfs41_rw(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_rw: len=%u offset=%lu MdlAddress=%p Userspace=%p\n",
|
||||
entry->u.ReadWrite.len, entry->u.ReadWrite.offset,
|
||||
entry->u.ReadWrite.MdlAddress, entry->u.ReadWrite.buf);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -764,9 +777,11 @@ NTSTATUS marshal_nfs41_lock(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_lock: offset=%llx length=%llx exclusive=%u "
|
||||
"blocking=%u\n", entry->u.Lock.offset, entry->u.Lock.length,
|
||||
entry->u.Lock.exclusive, entry->u.Lock.blocking);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -808,7 +823,9 @@ NTSTATUS marshal_nfs41_unlock(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_unlock: count=%u\n", entry->u.Unlock.count);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -851,9 +868,11 @@ NTSTATUS marshal_nfs41_close(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_close: name=%wZ remove=%d srv_open=%p renamed=%d\n",
|
||||
entry->u.Close.filename->Length?entry->u.Close.filename:&SLASH,
|
||||
entry->u.Close.remove, entry->u.Close.srv_open, entry->u.Close.renamed);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -912,11 +931,13 @@ NTSTATUS marshal_nfs41_dirquery(
|
|||
RtlCopyMemory(tmp, &entry->u.QueryFile.mdl_buf, sizeof(HANDLE));
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_dirquery: filter='%wZ'class=%d len=%d "
|
||||
"1st\\restart\\single=%d\\%d\\%d\n", entry->u.QueryFile.filter,
|
||||
entry->u.QueryFile.InfoClass, entry->u.QueryFile.buf_len,
|
||||
entry->u.QueryFile.initial_query, entry->u.QueryFile.restart_scan,
|
||||
entry->u.QueryFile.return_single);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -951,7 +972,9 @@ NTSTATUS marshal_nfs41_filequery(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_filequery: class=%d\n", entry->u.QueryFile.InfoClass);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -988,10 +1011,12 @@ NTSTATUS marshal_nfs41_fileset(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_fileset: filename='%wZ' class=%d\n",
|
||||
entry->u.SetFile.filename, entry->u.SetFile.InfoClass);
|
||||
print_hexbuf(0, (unsigned char *)"setfile buffer", entry->u.SetFile.buf,
|
||||
entry->u.SetFile.buf_len);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1028,8 +1053,10 @@ NTSTATUS marshal_nfs41_easet(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_easet: filename=%wZ, buflen=%d mode=0x%x\n",
|
||||
entry->u.SetEa.filename, entry->u.SetEa.buf_len, entry->u.SetEa.mode);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1071,10 +1098,12 @@ NTSTATUS marshal_nfs41_eaget(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_eaget: filename=%wZ, index=%d list_len=%d "
|
||||
"rescan=%d single=%d\n", entry->u.QueryEa.filename,
|
||||
entry->u.QueryEa.EaIndex, entry->u.QueryEa.EaListLength,
|
||||
entry->u.QueryEa.RestartScan, entry->u.QueryEa.ReturnSingleEntry);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1111,9 +1140,11 @@ NTSTATUS marshal_nfs41_symlink(
|
|||
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_symlink: name %wZ symlink target %wZ\n",
|
||||
entry->u.Symlink.filename,
|
||||
entry->u.Symlink.set?entry->u.Symlink.target : NULL);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1142,7 +1173,9 @@ NTSTATUS marshal_nfs41_volume(
|
|||
RtlCopyMemory(tmp, &entry->u.Volume.query, sizeof(FS_INFORMATION_CLASS));
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_volume: class=%d\n", entry->u.Volume.query);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1171,7 +1204,9 @@ NTSTATUS marshal_nfs41_getacl(
|
|||
RtlCopyMemory(tmp, &entry->u.Acl.query, sizeof(SECURITY_INFORMATION));
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_getacl: class=0x%x\n", entry->u.Acl.query);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1205,8 +1240,10 @@ NTSTATUS marshal_nfs41_setacl(
|
|||
RtlCopyMemory(tmp, entry->u.Acl.buf, entry->u.Acl.buf_len);
|
||||
*len = header_len;
|
||||
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("marshal_nfs41_setacl: class=0x%x sec_desc_len=%d\n",
|
||||
entry->u.Acl.query, entry->u.Acl.buf_len);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1229,13 +1266,15 @@ NTSTATUS nfs41_invalidate_cache (
|
|||
ULONG flag = DISABLE_CACHING;
|
||||
PMRX_SRV_OPEN srv_open;
|
||||
|
||||
DbgEn();
|
||||
RtlCopyMemory(&srv_open, buf, sizeof(HANDLE));
|
||||
|
||||
DbgP("nfs41_invalidate_cache: received srv_open=%p\n", srv_open);
|
||||
#ifdef DEBUG_INVALIDATE_CACHE
|
||||
DbgP("nfs41_invalidate_cache: received srv_open=%p %wZ\n",
|
||||
srv_open, srv_open->pAlreadyPrefixedName);
|
||||
#endif
|
||||
if (MmIsAddressValid(srv_open))
|
||||
RxChangeBufferingState((PSRV_OPEN)srv_open, ULongToPtr(flag), 1);
|
||||
DbgEx();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
@ -1496,8 +1535,10 @@ void unmarshal_nfs41_header(
|
|||
*buf += sizeof(tmp->status);
|
||||
RtlCopyMemory(&tmp->errno, *buf, sizeof(tmp->errno));
|
||||
*buf += sizeof(tmp->errno);
|
||||
#ifdef DEBUG_MARSHAL_HEADER
|
||||
DbgP("[downcall header] xid=%lld opcode=%s status=%d errno=%d\n", tmp->xid,
|
||||
opcode2string(tmp->opcode), tmp->status, tmp->errno);
|
||||
#endif
|
||||
}
|
||||
|
||||
void unmarshal_nfs41_mount(
|
||||
|
|
@ -1507,8 +1548,10 @@ void unmarshal_nfs41_mount(
|
|||
RtlCopyMemory(&cur->session, *buf, sizeof(HANDLE));
|
||||
*buf += sizeof(HANDLE);
|
||||
RtlCopyMemory(&cur->version, *buf, sizeof(DWORD));
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_mount: session pointer 0x%x version %d\n", cur->session,
|
||||
cur->version);
|
||||
#endif
|
||||
}
|
||||
|
||||
VOID unmarshal_nfs41_setattr(
|
||||
|
|
@ -1517,7 +1560,9 @@ VOID unmarshal_nfs41_setattr(
|
|||
unsigned char **buf)
|
||||
{
|
||||
RtlCopyMemory(dest_buf, *buf, sizeof(ULONGLONG));
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_setattr: returned ChangeTime %llu\n", *dest_buf);
|
||||
#endif
|
||||
}
|
||||
|
||||
NTSTATUS unmarshal_nfs41_rw(
|
||||
|
|
@ -1529,8 +1574,10 @@ NTSTATUS unmarshal_nfs41_rw(
|
|||
RtlCopyMemory(&cur->u.ReadWrite.len, *buf, sizeof(cur->u.ReadWrite.len));
|
||||
*buf += sizeof(cur->u.ReadWrite.len);
|
||||
RtlCopyMemory(&cur->u.ReadWrite.ChangeTime, *buf, sizeof(ULONGLONG));
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_rw: returned len %lu ChangeTime %llu\n",
|
||||
cur->u.ReadWrite.len, cur->u.ReadWrite.ChangeTime);
|
||||
#endif
|
||||
#if 1
|
||||
/* 08/27/2010: it looks like we really don't need to call
|
||||
* MmUnmapLockedPages() eventhough we called
|
||||
|
|
@ -1585,11 +1632,15 @@ NTSTATUS unmarshal_nfs41_open(
|
|||
}
|
||||
RtlCopyMemory(cur->u.Open.symlink.Buffer, *buf,
|
||||
cur->u.Open.symlink.MaximumLength);
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_open: ERROR_REPARSE -> '%wZ'\n", &cur->u.Open.symlink);
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_open: open_state 0x%x mode %o changeattr %llu "
|
||||
"deleg_type %d\n", cur->open_state, cur->u.Open.mode,
|
||||
cur->u.Open.changeattr, cur->u.Open.deleg_type);
|
||||
#endif
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1602,7 +1653,9 @@ NTSTATUS unmarshal_nfs41_dirquery(
|
|||
ULONG buf_len;
|
||||
|
||||
RtlCopyMemory(&buf_len, *buf, sizeof(ULONG));
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
DbgP("unmarshal_nfs41_dirquery: reply size %d\n", buf_len);
|
||||
#endif
|
||||
*buf += sizeof(ULONG);
|
||||
__try {
|
||||
MmUnmapLockedPages(cur->u.QueryFile.mdl_buf, cur->u.QueryFile.mdl);
|
||||
|
|
@ -1644,8 +1697,10 @@ void unmarshal_nfs41_getattr(
|
|||
unmarshal_nfs41_attrget(cur, cur->u.QueryFile.buf,
|
||||
&cur->u.QueryFile.buf_len, buf);
|
||||
RtlCopyMemory(&cur->u.QueryFile.ChangeTime, *buf, sizeof(LONGLONG));
|
||||
#ifdef DEBUG_MARSHAL_DETAIL
|
||||
if (cur->u.QueryFile.InfoClass == FileBasicInformation)
|
||||
DbgP("[unmarshal_nfs41_getattr] ChangeTime %llu\n", cur->u.QueryFile.ChangeTime);
|
||||
#endif
|
||||
}
|
||||
|
||||
NTSTATUS unmarshal_nfs41_getacl(
|
||||
|
|
@ -3614,15 +3669,12 @@ VOID nfs41_remove_fcb_entry(
|
|||
ExAcquireFastMutex(&fcblistLock);
|
||||
|
||||
pEntry = openlist->head.Flink;
|
||||
#ifdef DEBUG_CLOSE
|
||||
DbgP("nfs41_remove_srvopen_entry: Looking for fcb=%p\n", fcb);
|
||||
#endif
|
||||
while (!IsListEmpty(&openlist->head)) {
|
||||
cur = (nfs41_fcb_list_entry *)CONTAINING_RECORD(pEntry,
|
||||
nfs41_fcb_list_entry, next);
|
||||
if (cur->fcb == fcb) {
|
||||
#ifdef DEBUG_CLOSE
|
||||
DbgP("nfs41_remove_srvopen_entry: Found match\n");
|
||||
DbgP("nfs41_remove_srvopen_entry: Found match for fcb=%p\n", fcb);
|
||||
#endif
|
||||
RemoveEntryList(pEntry);
|
||||
RxFreePool(cur);
|
||||
|
|
@ -3630,7 +3682,8 @@ VOID nfs41_remove_fcb_entry(
|
|||
}
|
||||
if (pEntry->Flink == &openlist->head) {
|
||||
#ifdef DEBUG_CLOSE
|
||||
DbgP("nfs41_remove_srvopen_entry: reached end of the list\n");
|
||||
DbgP("nfs41_remove_srvopen_entry: reached EOL looking for fcb "
|
||||
"%p\n", fcb);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
|
@ -3976,6 +4029,9 @@ NTSTATUS nfs41_QueryVolumeInformation(
|
|||
status = STATUS_SUCCESS;
|
||||
goto out;
|
||||
}
|
||||
case FileAccessInformation:
|
||||
status = STATUS_INVALID_PARAMETER;
|
||||
goto out;
|
||||
|
||||
case FileFsAttributeInformation:
|
||||
/* used cached fs attributes if available */
|
||||
|
|
@ -3998,7 +4054,7 @@ NTSTATUS nfs41_QueryVolumeInformation(
|
|||
break;
|
||||
|
||||
default:
|
||||
print_error("unhandled fs query class %d\n", InfoClass);
|
||||
print_error("nfs41_QueryVolumeInformation: unhandled class %d\n", InfoClass);
|
||||
status = STATUS_INVALID_PARAMETER;
|
||||
goto out;
|
||||
}
|
||||
|
|
@ -4076,10 +4132,6 @@ VOID nfs41_update_fcb_list(
|
|||
nfs41_fcb_list_entry *cur;
|
||||
ExAcquireFastMutex(&fcblistLock);
|
||||
pEntry = openlist->head.Flink;
|
||||
#if defined(DEBUG_FILE_SET) || defined(DEBUG_ACL_SET) || \
|
||||
defined(DEBUG_WRITE) || defined(DEBUG_EA_SET)
|
||||
DbgP("nfs41_update_fcb_list: Looking for fcb=%p\n", fcb);
|
||||
#endif
|
||||
while (!IsListEmpty(&openlist->head)) {
|
||||
cur = (nfs41_fcb_list_entry *)CONTAINING_RECORD(pEntry,
|
||||
nfs41_fcb_list_entry, next);
|
||||
|
|
@ -4087,8 +4139,8 @@ VOID nfs41_update_fcb_list(
|
|||
cur->ChangeTime != ChangeTime) {
|
||||
#if defined(DEBUG_FILE_SET) || defined(DEBUG_ACL_SET) || \
|
||||
defined(DEBUG_WRITE) || defined(DEBUG_EA_SET)
|
||||
DbgP("nfs41_update_fcb_list: Found match: updating %llu to "
|
||||
"%llu\n", cur->ChangeTime, ChangeTime);
|
||||
DbgP("nfs41_update_fcb_list: Found match for fcb %p: updating "
|
||||
"%llu to %llu\n", fcb, cur->ChangeTime, ChangeTime);
|
||||
#endif
|
||||
cur->ChangeTime = ChangeTime;
|
||||
break;
|
||||
|
|
@ -4097,7 +4149,8 @@ VOID nfs41_update_fcb_list(
|
|||
if (pEntry->Flink == &openlist->head) {
|
||||
#if defined(DEBUG_FILE_SET) || defined(DEBUG_ACL_SET) || \
|
||||
defined(DEBUG_WRITE) || defined(DEBUG_EA_SET)
|
||||
DbgP("nfs41_update_fcb_list: reached end of the list\n");
|
||||
DbgP("nfs41_update_fcb_list: reached EOL loooking for "
|
||||
"fcb=%p\n", fcb);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
|
@ -4700,7 +4753,7 @@ NTSTATUS nfs41_QueryFileInformation(
|
|||
case FileAttributeTagInformation:
|
||||
break;
|
||||
default:
|
||||
print_error("unhandled file query class %d\n", InfoClass);
|
||||
print_error("nfs41_QueryFileInformation: unhandled class %d\n", InfoClass);
|
||||
status = STATUS_INVALID_PARAMETER;
|
||||
goto out;
|
||||
}
|
||||
|
|
@ -4939,7 +4992,7 @@ NTSTATUS nfs41_SetFileInformation(
|
|||
break;
|
||||
}
|
||||
default:
|
||||
print_error("unknown set_file information class %d\n", InfoClass);
|
||||
print_error("nfs41_SetFileInformation: unhandled class %d\n", InfoClass);
|
||||
status = STATUS_NOT_SUPPORTED;
|
||||
goto out;
|
||||
}
|
||||
|
|
@ -5018,11 +5071,8 @@ NTSTATUS nfs41_ComputeNewBufferingState(
|
|||
OUT ULONG *pNewBufferingState)
|
||||
{
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
ULONG flag;
|
||||
DbgEn();
|
||||
flag = PtrToUlong(pMRxContext);
|
||||
DbgP("nfs41_ComputeNewBufferingState: pSrvOpen %p Flags %08x\n",
|
||||
pSrvOpen, pSrvOpen->BufferingFlags);
|
||||
ULONG flag = PtrToUlong(pMRxContext), oldFlags = pSrvOpen->BufferingFlags;
|
||||
|
||||
switch(flag) {
|
||||
case DISABLE_CACHING:
|
||||
if (pSrvOpen->BufferingFlags &
|
||||
|
|
@ -5050,11 +5100,12 @@ NTSTATUS nfs41_ComputeNewBufferingState(
|
|||
(FCB_STATE_READBUFFERING_ENABLED | FCB_STATE_READCACHING_ENABLED |
|
||||
FCB_STATE_WRITECACHING_ENABLED | FCB_STATE_WRITEBUFFERING_ENABLED);
|
||||
}
|
||||
DbgP("nfs41_ComputeNewBufferingState: new Flags %08x\n",
|
||||
pSrvOpen->BufferingFlags);
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("nfs41_ComputeNewBufferingState: %wZ pSrvOpen %p Old %08x New %08x\n",
|
||||
pSrvOpen->pAlreadyPrefixedName, pSrvOpen, oldFlags,
|
||||
pSrvOpen->BufferingFlags);
|
||||
*pNewBufferingState = pSrvOpen->BufferingFlags;
|
||||
|
||||
DbgEx();
|
||||
#endif
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
@ -5089,7 +5140,10 @@ void enable_caching(
|
|||
(SrvOpen->DesiredAccess & FILE_WRITE_DATA))
|
||||
flag = ENABLE_READWRITE_CACHING;
|
||||
|
||||
print_caching_level(1, flag);
|
||||
#if defined(DEBUG_TIME_BASED_COHERENCY) || \
|
||||
defined(DEBUG_WRITE) || defined(DEBUG_READ)
|
||||
print_caching_level(1, flag, SrvOpen->pAlreadyPrefixedName);
|
||||
#endif
|
||||
|
||||
if (!flag)
|
||||
return;
|
||||
|
|
@ -5098,25 +5152,32 @@ void enable_caching(
|
|||
|
||||
ExAcquireFastMutex(&fcblistLock);
|
||||
pEntry = openlist->head.Flink;
|
||||
DbgP("enable_caching: Looking for fcb=%p\n", SrvOpen->pFcb);
|
||||
while (!IsListEmpty(&openlist->head)) {
|
||||
cur = (nfs41_fcb_list_entry *)CONTAINING_RECORD(pEntry,
|
||||
nfs41_fcb_list_entry, next);
|
||||
if (cur->fcb == SrvOpen->pFcb) {
|
||||
DbgP("enable_caching: Found match\n");
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("enable_caching: Looked&Found match for fcb=%p %wZ\n",
|
||||
SrvOpen->pFcb, SrvOpen->pAlreadyPrefixedName);
|
||||
#endif
|
||||
cur->skip = FALSE;
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
if (pEntry->Flink == &openlist->head) {
|
||||
DbgP("enable_caching: reached end of the list\n");
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("enable_caching: reached EOL looking for fcb=%p %wZ\n",
|
||||
SrvOpen->pFcb, SrvOpen->pAlreadyPrefixedName);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
pEntry = pEntry->Flink;
|
||||
}
|
||||
if (!found && nfs41_fobx->deleg_type) {
|
||||
nfs41_fcb_list_entry *oentry;
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("enable_caching: delegation recalled: srv_open=%p\n", SrvOpen);
|
||||
#endif
|
||||
oentry = RxAllocatePoolWithTag(NonPagedPool,
|
||||
sizeof(nfs41_fcb_list_entry), NFS41_MM_POOLTAG);
|
||||
if (oentry == NULL) return;
|
||||
|
|
@ -5782,8 +5843,10 @@ NTSTATUS nfs41_FsCtl(
|
|||
IN OUT PRX_CONTEXT RxContext)
|
||||
{
|
||||
NTSTATUS status = STATUS_INVALID_DEVICE_REQUEST;
|
||||
#ifdef DEBUG_MISC
|
||||
DbgEn();
|
||||
print_debug_header(RxContext);
|
||||
#endif
|
||||
switch (RxContext->LowIoContext.ParamsFor.FsCtl.FsControlCode) {
|
||||
case FSCTL_SET_REPARSE_POINT:
|
||||
status = nfs41_SetReparsePoint(RxContext);
|
||||
|
|
@ -5792,11 +5855,15 @@ NTSTATUS nfs41_FsCtl(
|
|||
case FSCTL_GET_REPARSE_POINT:
|
||||
status = nfs41_GetReparsePoint(RxContext);
|
||||
break;
|
||||
#ifdef DEBUG_MISC
|
||||
default:
|
||||
DbgP("FsControlCode: %d\n",
|
||||
RxContext->LowIoContext.ParamsFor.FsCtl.FsControlCode);
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG_MISC
|
||||
DbgEx();
|
||||
#endif
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
@ -5805,10 +5872,7 @@ NTSTATUS nfs41_CompleteBufferingStateChangeRequest(
|
|||
IN OUT PMRX_SRV_OPEN SrvOpen,
|
||||
IN PVOID pContext)
|
||||
{
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
DbgEn();
|
||||
DbgEx();
|
||||
return status;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
NTSTATUS nfs41_FsdDispatch (
|
||||
|
|
@ -5998,9 +6062,11 @@ VOID fcbopen_main(PVOID ctx)
|
|||
cur = (nfs41_fcb_list_entry *)CONTAINING_RECORD(pEntry,
|
||||
nfs41_fcb_list_entry, next);
|
||||
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("fcbopen_main: Checking attributes for fcb=%p "
|
||||
"change_time=%llu skipping=%d\n", cur->fcb,
|
||||
cur->ChangeTime, cur->skip);
|
||||
#endif
|
||||
if (cur->skip) goto out;
|
||||
pNetRootContext =
|
||||
NFS41GetNetRootExtension(cur->fcb->pNetRoot);
|
||||
|
|
@ -6023,8 +6089,10 @@ VOID fcbopen_main(PVOID ctx)
|
|||
ULONG flag = DISABLE_CACHING;
|
||||
PMRX_SRV_OPEN srv_open;
|
||||
PLIST_ENTRY psrvEntry;
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("fcbopen_main: old ctime=%llu new_ctime=%llu\n",
|
||||
cur->ChangeTime, entry->u.QueryFile.ChangeTime);
|
||||
#endif
|
||||
cur->ChangeTime = entry->u.QueryFile.ChangeTime;
|
||||
cur->skip = TRUE;
|
||||
psrvEntry = &cur->fcb->SrvOpenList;
|
||||
|
|
@ -6034,15 +6102,19 @@ VOID fcbopen_main(PVOID ctx)
|
|||
MRX_SRV_OPEN, SrvOpenQLinks);
|
||||
if (srv_open->DesiredAccess &
|
||||
(FILE_READ_DATA | FILE_WRITE_DATA | FILE_APPEND_DATA)) {
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("fcbopen_main: ************ Invalidate the cache %wZ"
|
||||
"************\n", srv_open->pAlreadyPrefixedName);
|
||||
#endif
|
||||
RxIndicateChangeOfBufferingStateForSrvOpen(
|
||||
cur->fcb->pNetRoot->pSrvCall, srv_open,
|
||||
srv_open->Key, ULongToPtr(flag));
|
||||
}
|
||||
if (psrvEntry->Flink == &cur->fcb->SrvOpenList) {
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("fcbopen_main: reached end of srvopen for fcb %p\n",
|
||||
cur->fcb);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
pEntry = pEntry->Flink;
|
||||
|
|
@ -6053,7 +6125,9 @@ VOID fcbopen_main(PVOID ctx)
|
|||
RxFreePool(entry);
|
||||
out:
|
||||
if (pEntry->Flink == &openlist->head) {
|
||||
#ifdef DEBUG_TIME_BASED_COHERENCY
|
||||
DbgP("fcbopen_main: reached end of the fcb list\n");
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
pEntry = pEntry->Flink;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue