From f3f282265a3d9e3c968fd06793e6d1a91337f443 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 24 Jun 2012 10:16:42 -0400 Subject: [PATCH] Windows: Media Protected if create on RO volume If there is an attempt to create a file/directory on a readonly volume as indicated by the Volume Characteristics, return STATUS_MEDIA_WRITE_PROTECTED immediately. Do not bother contacting the afsd_service. Change-Id: I809adacbbc429166d9a0e308752e484400799cb8 Reviewed-on: http://gerrit.openafs.org/7647 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp index ec415440c..df0555e73 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp @@ -688,6 +688,28 @@ AFSCommonCreate( IN PDEVICE_OBJECT DeviceObject, pDirectoryCB == NULL)) { + if ( pVolumeCB && + BooleanFlagOn( pVolumeCB->VolumeInformation.Characteristics, FILE_READ_ONLY_DEVICE)) + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSCommonCreate ReadOnly Device on create Status %08lX\n", + ntStatus); + + InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount); + + AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSCommonCreate Decrement13 count on %wZ DE %p Ccb %p Cnt %d\n", + &pParentDirectoryCB->NameInformation.FileName, + pParentDirectoryCB, + NULL, + pParentDirectoryCB->OpenReferenceCount); + + try_return( ntStatus = STATUS_MEDIA_WRITE_PROTECTED); + } + if( uniComponentName.Length == 0 || pDirectoryCB != NULL) { -- 2.39.5