From: Chao Yu <chao@kernel.org> To: xiang@kernel.org Cc: chao@kernel.org, linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org, Christian Brauner <brauner@kernel.org>, Gao Xiang <hsiangkao@linux.alibaba.com>, Chao Yu <chao.yu@oppo.com> Subject: [PATCH v2] erofs: support idmapped mounts Date: Tue, 17 May 2022 18:41:03 +0800 [thread overview] Message-ID: <20220517104103.3570721-1-chao@kernel.org> (raw) This patch enables idmapped mounts for erofs, since all dedicated helpers for this functionality existsm, so, in this patch we just pass down the user_namespace argument from the VFS methods to the relevant helpers. Simple idmap example on erofs image: 1. mkdir dir 2. touch dir/file 3. mkfs.erofs erofs.img dir 4. mount -t erofs -o loop erofs.img /mnt/erofs/ 5. ls -ln /mnt/erofs/ total 0 -rw-rw-r-- 1 1000 1000 0 May 17 15:26 file 6. mount-idmapped --map-mount b:1000:1001:1 /mnt/erofs/ /mnt/scratch_erofs/ 7. ls -ln /mnt/scratch_erofs/ total 0 -rw-rw-r-- 1 1001 1001 0 May 17 15:26 file Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Signed-off-by: Chao Yu <chao.yu@oppo.com> --- v2: - fix testcase pointed out by Christian Brauner. fs/erofs/inode.c | 2 +- fs/erofs/super.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index e8b37ba5e9ad..5320bf52c1ce 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -370,7 +370,7 @@ int erofs_getattr(struct user_namespace *mnt_userns, const struct path *path, stat->attributes_mask |= (STATX_ATTR_COMPRESSED | STATX_ATTR_IMMUTABLE); - generic_fillattr(&init_user_ns, inode, stat); + generic_fillattr(mnt_userns, inode, stat); return 0; } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 0c4b41130c2f..7dc5f2e8ddee 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -781,7 +781,7 @@ static struct file_system_type erofs_fs_type = { .name = "erofs", .init_fs_context = erofs_init_fs_context, .kill_sb = erofs_kill_sb, - .fs_flags = FS_REQUIRES_DEV, + .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP, }; MODULE_ALIAS_FS("erofs"); -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Chao Yu <chao@kernel.org> To: xiang@kernel.org Cc: Christian Brauner <brauner@kernel.org>, linux-kernel@vger.kernel.org, Gao Xiang <hsiangkao@linux.alibaba.com>, linux-erofs@lists.ozlabs.org, Chao Yu <chao.yu@oppo.com> Subject: [PATCH v2] erofs: support idmapped mounts Date: Tue, 17 May 2022 18:41:03 +0800 [thread overview] Message-ID: <20220517104103.3570721-1-chao@kernel.org> (raw) This patch enables idmapped mounts for erofs, since all dedicated helpers for this functionality existsm, so, in this patch we just pass down the user_namespace argument from the VFS methods to the relevant helpers. Simple idmap example on erofs image: 1. mkdir dir 2. touch dir/file 3. mkfs.erofs erofs.img dir 4. mount -t erofs -o loop erofs.img /mnt/erofs/ 5. ls -ln /mnt/erofs/ total 0 -rw-rw-r-- 1 1000 1000 0 May 17 15:26 file 6. mount-idmapped --map-mount b:1000:1001:1 /mnt/erofs/ /mnt/scratch_erofs/ 7. ls -ln /mnt/scratch_erofs/ total 0 -rw-rw-r-- 1 1001 1001 0 May 17 15:26 file Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Signed-off-by: Chao Yu <chao.yu@oppo.com> --- v2: - fix testcase pointed out by Christian Brauner. fs/erofs/inode.c | 2 +- fs/erofs/super.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index e8b37ba5e9ad..5320bf52c1ce 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -370,7 +370,7 @@ int erofs_getattr(struct user_namespace *mnt_userns, const struct path *path, stat->attributes_mask |= (STATX_ATTR_COMPRESSED | STATX_ATTR_IMMUTABLE); - generic_fillattr(&init_user_ns, inode, stat); + generic_fillattr(mnt_userns, inode, stat); return 0; } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 0c4b41130c2f..7dc5f2e8ddee 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -781,7 +781,7 @@ static struct file_system_type erofs_fs_type = { .name = "erofs", .init_fs_context = erofs_init_fs_context, .kill_sb = erofs_kill_sb, - .fs_flags = FS_REQUIRES_DEV, + .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP, }; MODULE_ALIAS_FS("erofs"); -- 2.25.1
next reply other threads:[~2022-05-17 10:42 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-17 10:41 Chao Yu [this message] 2022-05-17 10:41 ` [PATCH v2] erofs: support idmapped mounts Chao Yu 2022-05-17 12:38 ` Christian Brauner 2022-05-17 12:38 ` Christian Brauner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220517104103.3570721-1-chao@kernel.org \ --to=chao@kernel.org \ --cc=brauner@kernel.org \ --cc=chao.yu@oppo.com \ --cc=hsiangkao@linux.alibaba.com \ --cc=linux-erofs@lists.ozlabs.org \ --cc=linux-kernel@vger.kernel.org \ --cc=xiang@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.