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.8.0_pre1^2~4249 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=eb6f3a89a3f4da6d3de2d4ae34743014e4eb0fb2;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. Change-Id: I9cec46bef332c981b2f64ba85e310783e3c71bc9 Reviewed-on: http://gerrit.openafs.org/3707 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Rod Widdowson --- diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index 1884ebe2c..7d9be8b23 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -858,6 +858,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 @@ -1181,6 +1187,9 @@ GetInodeSummary(struct SalvInfo *salvinfo, FILE *inodeFile, VolumeId singleVolum * 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