sys: oplock testing: DEBUGTEST_EX

This commit is contained in:
Bill Zissimopoulos 2016-11-15 13:17:49 -08:00
parent 959d8537c6
commit f17168f2fa
2 changed files with 9 additions and 3 deletions

View File

@ -122,8 +122,11 @@ VOID FspDebugLogIrp(const char *func, PIRP Irp, NTSTATUS Result);
#if DBG #if DBG
#define DEBUGTEST(Percent) \ #define DEBUGTEST(Percent) \
(0 == (fsp_debug & fsp_debug_dt) || DebugRandom() <= (Percent) * 0x7fff / 100) (0 == (fsp_debug & fsp_debug_dt) || DebugRandom() <= (Percent) * 0x7fff / 100)
#define DEBUGTEST_EX(C, Percent, Deflt) \
((C) ? DEBUGTEST(Percent) : (Deflt))
#else #else
#define DEBUGTEST(Percent) (TRUE) #define DEBUGTEST(Percent) (TRUE)
#define DEBUGTEST_EX(C, Percent, Deflt) (Deflt)
#endif #endif
/* FSP_ENTER/FSP_LEAVE */ /* FSP_ENTER/FSP_LEAVE */

View File

@ -1069,7 +1069,8 @@ retry:
*/ */
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp, Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0); OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0);
if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result) if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result ||
DEBUGTEST_EX(NT_SUCCESS(Result), 10, FALSE))
{ {
FspFileNodeRelease(FileNode, Full); FspFileNodeRelease(FileNode, Full);
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0); Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0);
@ -1203,7 +1204,8 @@ retry:
*/ */
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp, Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0); OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0);
if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result) if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result ||
DEBUGTEST_EX(NT_SUCCESS(Result), 10, FALSE))
{ {
FspFileNodeRelease(FileNode, Full); FspFileNodeRelease(FileNode, Full);
FspFsvolDeviceFileRenameRelease(FsvolDeviceObject); FspFsvolDeviceFileRenameRelease(FsvolDeviceObject);
@ -1424,7 +1426,8 @@ retry:
*/ */
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp, Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0); OPLOCK_FLAG_COMPLETE_IF_OPLOCKED, 0, 0, 0);
if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result) if (STATUS_OPLOCK_BREAK_IN_PROGRESS == Result ||
DEBUGTEST_EX(NT_SUCCESS(Result), 10, FALSE))
{ {
FspFileNodeRelease(FileNode, Full); FspFileNodeRelease(FileNode, Full);
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0); Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0);