]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
vol: nt_open should not create missing directories
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 20 Jan 2011 07:11:57 +0000 (02:11 -0500)
committerDerrick Brashear <shadow@dementia.org>
Fri, 4 Feb 2011 21:52:30 +0000 (13:52 -0800)
Revert the prior change that added directory creation
to nt_open().  nt_open() should fail and the caller should
create the directories.  Failure to do so results in an
incomplete tree which confuses the salvager.

Reviewed-on: http://gerrit.openafs.org/3709
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 1ad22ed7e14d1ed643add0dbf80c82b96ae69fc8)

Change-Id: I4669ee27bd5c3d9100f3e7fc880d6c32e990493f
Reviewed-on: http://gerrit.openafs.org/3844
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/vol/ntops.c

index 79f7c5bacb9973c39d316fb7fb546d54f6bd91ef..4155e13672b1efc6f149aaa22f431e3c3c1fb237 100644 (file)
@@ -119,39 +119,6 @@ nt_open(char *name, int flags, int mode)
     fh = CreateFile(name, nt_access, nt_share, NULL, nt_create, FandA, NULL);
     if (fh == INVALID_HANDLE_VALUE) {
         DWORD gle = GetLastError();
-
-        if (gle == ERROR_PATH_NOT_FOUND) {
-            /*
-             * one or more of the directories in the path
-             * does not exist.  We must create them and
-             * try again to create the file.
-             */
-            char * p;
-
-            for (p=name; *p && *p != OS_DIRSEPC; p++);
-            while (*p == OS_DIRSEPC) p++;    /* ignore the first dirsep */
-            for (; *p; p++) {
-                if (*p == OS_DIRSEPC) {
-                    *p = '\0';
-                    if (CreateDirectory(name, NULL))
-                        gle = 0;
-                    else
-                        gle = GetLastError();
-                    *p = OS_DIRSEPC;
-                    if (gle != ERROR_SUCCESS &&
-                         gle != ERROR_ALREADY_EXISTS) {
-                        /* The directory creation failed. */
-                        fh = INVALID_FD;
-                        break;
-                    } else {
-                        while (*(p+1) == OS_DIRSEPC) p++;
-                    }
-                }
-            }
-
-            if (!*p) /* successful creation of the path */
-                goto retry;
-        }
         errno = nterr_nt2unix(gle, EBADF);
     }
     return fh;