mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
sys: read, write: oplocks
This commit is contained in:
parent
2772af5478
commit
7518a6e418
@ -116,6 +116,15 @@ static NTSTATUS FspFsvolReadCached(
|
||||
if (!Success)
|
||||
return FspWqRepostIrpWorkItem(Irp, FspFsvolReadCached, 0);
|
||||
|
||||
/* perform oplock check */
|
||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||
(PVOID)(UINT_PTR)FspFsvolReadCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||
if (STATUS_PENDING == Result)
|
||||
{
|
||||
FspFileNodeRelease(FileNode, Main);
|
||||
return Result;
|
||||
}
|
||||
|
||||
/* check the file locks */
|
||||
if (!FsRtlCheckLockForReadAccess(&FileNode->FileLock, Irp))
|
||||
{
|
||||
@ -236,6 +245,18 @@ static NTSTATUS FspFsvolReadNonCached(
|
||||
if (!Success)
|
||||
return FspWqRepostIrpWorkItem(Irp, FspFsvolReadNonCached, 0);
|
||||
|
||||
/* perform oplock check */
|
||||
if (!PagingIo)
|
||||
{
|
||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||
(PVOID)(UINT_PTR)FspFsvolReadNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||
if (STATUS_PENDING == Result)
|
||||
{
|
||||
FspFileNodeRelease(FileNode, Full);
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
|
||||
/* check the file locks */
|
||||
if (!PagingIo && !FsRtlCheckLockForReadAccess(&FileNode->FileLock, Irp))
|
||||
{
|
||||
|
@ -140,6 +140,15 @@ static NTSTATUS FspFsvolWriteCached(
|
||||
if (!Success)
|
||||
return FspWqRepostIrpWorkItem(Irp, FspFsvolWriteCached, 0);
|
||||
|
||||
/* perform oplock check */
|
||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||
(PVOID)(UINT_PTR)FspFsvolWriteCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||
if (STATUS_PENDING == Result)
|
||||
{
|
||||
FspFileNodeRelease(FileNode, Main);
|
||||
return Result;
|
||||
}
|
||||
|
||||
/* check the file locks */
|
||||
if (!FsRtlCheckLockForWriteAccess(&FileNode->FileLock, Irp))
|
||||
{
|
||||
@ -306,6 +315,18 @@ static NTSTATUS FspFsvolWriteNonCached(
|
||||
if (!Success)
|
||||
return FspWqRepostIrpWorkItem(Irp, FspFsvolWriteNonCached, 0);
|
||||
|
||||
/* perform oplock check */
|
||||
if (!PagingIo)
|
||||
{
|
||||
Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp,
|
||||
(PVOID)(UINT_PTR)FspFsvolWriteNonCached, FspWqOplockComplete, FspWqOplockPrepare);
|
||||
if (STATUS_PENDING == Result)
|
||||
{
|
||||
FspFileNodeRelease(FileNode, Full);
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
|
||||
/* check the file locks */
|
||||
if (!PagingIo && !FsRtlCheckLockForWriteAccess(&FileNode->FileLock, Irp))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user