From dfb7202bf37bb0ed723369017c724468a34030fc Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 20 Jan 2011 02:06:12 -0500 Subject: [PATCH] vol: add comment nt_unlink cannot with fopen handles On Windows, files opened via the CRT fopen or open POSIX compatibility functions cannot be marked for delete on close. Add a comment until such time as the use of fopen and open on Windows can be replaced. Reviewed-on: http://gerrit.openafs.org/3707 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Rod Widdowson (cherry picked from commit eb6f3a89a3f4da6d3de2d4ae34743014e4eb0fb2) Change-Id: I6d66617b53f46e832d72ac8ed9a41730fafca521 Reviewed-on: http://gerrit.openafs.org/3854 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/vol/vol-salvage.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index d19b39af6..656ec52b6 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -840,6 +840,12 @@ SalvageFileSys1(struct DiskPartition64 *partP, VolumeId singleVolumeNumber) * semantics of unlink. In most places in the salvager, we really do * mean to unlink the file at that point. Those places have been * modified to actually do that so that the NT crt can be used there. + * + * jaltman - On NT delete on close cannot be applied to a file while the + * process has an open file handle that does not have DELETE file + * access and FILE_SHARE_DELETE. fopen() calls CreateFile() without + * delete privileges. As a result the nt_unlink() call will always + * fail. */ code = nt_unlink(inodeListPath); #else @@ -1162,6 +1168,9 @@ GetInodeSummary(FILE *inodeFile, VolumeId singleVolumeNumber) * semantics of unlink. In most places in the salvager, we really do * mean to unlink the file at that point. Those places have been * modified to actually do that so that the NT crt can be used there. + * + * jaltman - As commented elsewhere, this cannot work because fopen() + * does not open files with DELETE and FILE_SHARE_DELETE. */ code = nt_unlink(summaryFileName); #else -- 2.39.5