lkml.org 
[lkml]   [2023]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
SubjectRe: [resend PATCH v2 2/2] fuse: ensure that submounts lookup their parent
On Tue, 10 Oct 2023 at 04:35, Krister Johansen <kjlx@templeofstupid.com> wrote:

> If I manually traverse the path to the submount via something like cd
> and ls from the initial mount namespace, it'll stay referenced until I
> run a umount for the automounted path. I'm reasonably sure it's the
> container setup that's causing the detaching.

Okay. Can you please try the attached test patch. It's not a proper
solution, but I think it's the right direction.

Thanks,
Miklos
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 2e4eb7cf26fb..d5f47203dfbc 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -1524,6 +1524,18 @@ static int fuse_get_tree_submount(struct fs_context *fsc)
return err;
}

+ spin_lock(&mp_fi->lock);
+ if (mp_fi->nlookup) {
+ struct fuse_inode *fi = get_fuse_inode(d_inode(sb->s_root));
+ mp_fi->nlookup--;
+ spin_unlock(&mp_fi->lock);
+ spin_lock(&fi->lock);
+ fi->nlookup++;
+ spin_unlock(&fi->lock);
+ } else {
+ spin_unlock(&mp_fi->lock);
+ }
+
down_write(&fc->killsb);
list_add_tail(&fm->fc_entry, &fc->mounts);
up_write(&fc->killsb);
\
 
 \ /
  Last update: 2023-10-10 10:16    [W:0.095 / U:1.508 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site