diff options
Diffstat (limited to 'debian/patches/fs_unification0005-libnetfs-treat-disconnected-shadow-roots-as-virtual-.patch')
-rw-r--r-- | debian/patches/fs_unification0005-libnetfs-treat-disconnected-shadow-roots-as-virtual-.patch | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/debian/patches/fs_unification0005-libnetfs-treat-disconnected-shadow-roots-as-virtual-.patch b/debian/patches/fs_unification0005-libnetfs-treat-disconnected-shadow-roots-as-virtual-.patch deleted file mode 100644 index 2f7dd826..00000000 --- a/debian/patches/fs_unification0005-libnetfs-treat-disconnected-shadow-roots-as-virtual-.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0a4c575e6ad9587e5a007309576c89737a96de39 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Thu, 21 Apr 2016 17:51:40 +0200 -Subject: [PATCH hurd 5/5] libnetfs: treat disconnected shadow roots as virtual - roots - -* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Treat a shadow_root with -null shadow_root_parent as a "virtual root". - -Analog to 6875a586. ---- - libnetfs/dir-lookup.c | 33 +++++++++++++++++++++++---------- - 1 file changed, 23 insertions(+), 10 deletions(-) - -diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c -index 3bcc745..731e53c 100644 ---- a/libnetfs/dir-lookup.c -+++ b/libnetfs/dir-lookup.c -@@ -125,16 +125,29 @@ netfs_S_dir_lookup (struct protid *dircred, - if (dnp == dircred->po->shadow_root) - /* We're at the root of a shadow tree. */ - { -- *do_retry = FS_RETRY_REAUTH; -- *retry_port = dircred->po->shadow_root_parent; -- *retry_port_type = MACH_MSG_TYPE_COPY_SEND; -- if (lastcomp && mustbedir) /* Trailing slash. */ -- strcpy (retry_name, "/"); -- else if (!lastcomp) -- strcpy (retry_name, nextname); -- err = 0; -- pthread_mutex_unlock (&dnp->lock); -- goto out; -+ if (dircred->po->shadow_root_parent == MACH_PORT_NULL) -+ { -+ /* This is a shadow root with no parent, meaning -+ we should treat it as a virtual root disconnected -+ from its real .. directory. */ -+ err = 0; -+ np = dnp; -+ netfs_nref (np); -+ } -+ else -+ { -+ /* Punt the client up to the shadow root parent. */ -+ *do_retry = FS_RETRY_REAUTH; -+ *retry_port = dircred->po->shadow_root_parent; -+ *retry_port_type = MACH_MSG_TYPE_COPY_SEND; -+ if (lastcomp && mustbedir) /* Trailing slash. */ -+ strcpy (retry_name, "/"); -+ else if (!lastcomp) -+ strcpy (retry_name, nextname); -+ err = 0; -+ pthread_mutex_unlock (&dnp->lock); -+ goto out; -+ } - } - else if (dircred->po->root_parent != MACH_PORT_NULL) - /* We're at a real translator root; even if DIRCRED->po has a --- -2.1.4 - |