mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: lockctl, read, write: oplocks
This commit is contained in:
parent
7518a6e418
commit
764b772731
@ -52,7 +52,7 @@ static NTSTATUS FspFsvolLockControlRetry(
|
|||||||
/* perform oplock check; we are only implementing Win7 behavior */
|
/* perform oplock check; we are only implementing Win7 behavior */
|
||||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||||
(PVOID)(UINT_PTR)FspFsvolLockControlRetry, FspWqOplockComplete, FspWqOplockPrepare);
|
(PVOID)(UINT_PTR)FspFsvolLockControlRetry, FspWqOplockComplete, FspWqOplockPrepare);
|
||||||
if (STATUS_PENDING == Result)
|
if (!NT_SUCCESS(Result) || STATUS_PENDING == Result)
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Main);
|
FspFileNodeRelease(FileNode, Main);
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -119,7 +119,7 @@ static NTSTATUS FspFsvolReadCached(
|
|||||||
/* perform oplock check */
|
/* perform oplock check */
|
||||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||||
(PVOID)(UINT_PTR)FspFsvolReadCached, FspWqOplockComplete, FspWqOplockPrepare);
|
(PVOID)(UINT_PTR)FspFsvolReadCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||||
if (STATUS_PENDING == Result)
|
if (!NT_SUCCESS(Result) || STATUS_PENDING == Result)
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Main);
|
FspFileNodeRelease(FileNode, Main);
|
||||||
return Result;
|
return Result;
|
||||||
@ -250,7 +250,7 @@ static NTSTATUS FspFsvolReadNonCached(
|
|||||||
{
|
{
|
||||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||||
(PVOID)(UINT_PTR)FspFsvolReadNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
(PVOID)(UINT_PTR)FspFsvolReadNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||||
if (STATUS_PENDING == Result)
|
if (!NT_SUCCESS(Result) || STATUS_PENDING == Result)
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Full);
|
FspFileNodeRelease(FileNode, Full);
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -143,7 +143,7 @@ static NTSTATUS FspFsvolWriteCached(
|
|||||||
/* perform oplock check */
|
/* perform oplock check */
|
||||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||||
(PVOID)(UINT_PTR)FspFsvolWriteCached, FspWqOplockComplete, FspWqOplockPrepare);
|
(PVOID)(UINT_PTR)FspFsvolWriteCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||||
if (STATUS_PENDING == Result)
|
if (!NT_SUCCESS(Result) || STATUS_PENDING == Result)
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Main);
|
FspFileNodeRelease(FileNode, Main);
|
||||||
return Result;
|
return Result;
|
||||||
@ -320,7 +320,7 @@ static NTSTATUS FspFsvolWriteNonCached(
|
|||||||
{
|
{
|
||||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||||
(PVOID)(UINT_PTR)FspFsvolWriteNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
(PVOID)(UINT_PTR)FspFsvolWriteNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||||
if (STATUS_PENDING == Result)
|
if (!NT_SUCCESS(Result) || STATUS_PENDING == Result)
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Full);
|
FspFileNodeRelease(FileNode, Full);
|
||||||
return Result;
|
return Result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user