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
#define DEBUGTEST(Percent) \
(0 == (fsp_debug & fsp_debug_dt) || DebugRandom() <= (Percent) * 0x7fff / 100)
#define DEBUGTEST_EX(C, Percent, Deflt) \
((C) ? DEBUGTEST(Percent) : (Deflt))
#else
#define DEBUGTEST(Percent) (TRUE)
#define DEBUGTEST_EX(C, Percent, Deflt) (Deflt)
#endif
/* FSP_ENTER/FSP_LEAVE */

View File

@ -1069,7 +1069,8 @@ retry:
*/
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
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);
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0);
@ -1203,7 +1204,8 @@ retry:
*/
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
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);
FspFsvolDeviceFileRenameRelease(FsvolDeviceObject);
@ -1424,7 +1426,8 @@ retry:
*/
Result = FspCheckOplockEx(FspFileNodeAddrOfOplock(FileNode), Irp,
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);
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, 0, 0, 0);