mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 17:03:12 -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 ChangeTime;
|
||||
ULONG InfoChangeNumber;
|
||||
NTSTATUS CcStatus;
|
||||
UINT64 Security;
|
||||
ULONG SecurityChangeNumber;
|
||||
BOOLEAN TruncateOnClose;
|
||||
|
@ -534,8 +534,12 @@ VOID FspFileNodeSetFileInfo(FSP_FILE_NODE *FileNode, PFILE_OBJECT CcFileObject,
|
||||
FileNode->InfoChangeNumber++;
|
||||
|
||||
if (0 != CcFileObject)
|
||||
FileNode->CcStatus = FspCcSetFileSizes(
|
||||
{
|
||||
NTSTATUS Result = FspCcSetFileSizes(
|
||||
CcFileObject, (PCC_FILE_SIZES)&FileNode->Header.AllocationSize);
|
||||
if (!NT_SUCCESS(Result))
|
||||
CcUninitializeCacheMap(CcFileObject, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN FspFileNodeTrySetFileInfo(FSP_FILE_NODE *FileNode, PFILE_OBJECT CcFileObject,
|
||||
|
@ -231,7 +231,9 @@ static NTSTATUS FspFsvolWriteCached(
|
||||
return STATUS_SUCCESS;
|
||||
|
||||
cleanup:
|
||||
CcGetFileSizePointer(FileObject)->QuadPart = OriginalFileSize;
|
||||
/* pull back the cache file size if we extended it */
|
||||
if (ExtendingFile)
|
||||
CcGetFileSizePointer(FileObject)->QuadPart = OriginalFileSize;
|
||||
|
||||
FspFileNodeRelease(FileNode, Main);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user