From eb6f3a89a3f4da6d3de2d4ae34743014e4eb0fb2 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. Change-Id: I9cec46bef332c981b2f64ba85e310783e3c71bc9 Reviewed-on: http://gerrit.openafs.org/3707 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Rod Widdowson --- 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 1884ebe2c3..7d9be8b238 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