mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
sys: write.c, file.c: better handle failure cases around cache resizing
This commit is contained in:
parent
1fa9dcaa61
commit
920c15e022
@ -789,7 +789,6 @@ typedef struct
|
|||||||
UINT64 LastWriteTime;
|
UINT64 LastWriteTime;
|
||||||
UINT64 ChangeTime;
|
UINT64 ChangeTime;
|
||||||
ULONG InfoChangeNumber;
|
ULONG InfoChangeNumber;
|
||||||
NTSTATUS CcStatus;
|
|
||||||
UINT64 Security;
|
UINT64 Security;
|
||||||
ULONG SecurityChangeNumber;
|
ULONG SecurityChangeNumber;
|
||||||
BOOLEAN TruncateOnClose;
|
BOOLEAN TruncateOnClose;
|
||||||
|
@ -534,8 +534,12 @@ VOID FspFileNodeSetFileInfo(FSP_FILE_NODE *FileNode, PFILE_OBJECT CcFileObject,
|
|||||||
FileNode->InfoChangeNumber++;
|
FileNode->InfoChangeNumber++;
|
||||||
|
|
||||||
if (0 != CcFileObject)
|
if (0 != CcFileObject)
|
||||||
FileNode->CcStatus = FspCcSetFileSizes(
|
{
|
||||||
|
NTSTATUS Result = FspCcSetFileSizes(
|
||||||
CcFileObject, (PCC_FILE_SIZES)&FileNode->Header.AllocationSize);
|
CcFileObject, (PCC_FILE_SIZES)&FileNode->Header.AllocationSize);
|
||||||
|
if (!NT_SUCCESS(Result))
|
||||||
|
CcUninitializeCacheMap(CcFileObject, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN FspFileNodeTrySetFileInfo(FSP_FILE_NODE *FileNode, PFILE_OBJECT CcFileObject,
|
BOOLEAN FspFileNodeTrySetFileInfo(FSP_FILE_NODE *FileNode, PFILE_OBJECT CcFileObject,
|
||||||
|
@ -231,7 +231,9 @@ static NTSTATUS FspFsvolWriteCached(
|
|||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
CcGetFileSizePointer(FileObject)->QuadPart = OriginalFileSize;
|
/* pull back the cache file size if we extended it */
|
||||||
|
if (ExtendingFile)
|
||||||
|
CcGetFileSizePointer(FileObject)->QuadPart = OriginalFileSize;
|
||||||
|
|
||||||
FspFileNodeRelease(FileNode, Main);
|
FspFileNodeRelease(FileNode, Main);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user