From: Jeffrey Altman Date: Thu, 20 Jan 2011 07:06:12 +0000 (-0500) Subject: vol: add comment nt_unlink cannot with fopen handles X-Git-Tag: upstream/1.6.0.pre2^2~49 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=dfb7202bf37bb0ed723369017c724468a34030fc;p=packages%2Fo%2Fopenafs.git 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 --- 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