Re: [PATCH v5 00/14] ceph: support idmapped mounts

From: Christian Brauner
Date: Fri Jun 09 2023 - 06:12:36 EST


On Fri, Jun 09, 2023 at 10:59:19AM +0200, Aleksandr Mikhalitsyn wrote:
> On Fri, Jun 9, 2023 at 3:57 AM Xiubo Li <xiubli@xxxxxxxxxx> wrote:
> >
> >
> > On 6/8/23 23:42, Alexander Mikhalitsyn wrote:
> > > Dear friends,
> > >
> > > This patchset was originally developed by Christian Brauner but I'll continue
> > > to push it forward. Christian allowed me to do that :)
> > >
> > > This feature is already actively used/tested with LXD/LXC project.
> > >
> > > Git tree (based on https://github.com/ceph/ceph-client.git master):
>
> Hi Xiubo!
>
> >
> > Could you rebase these patches to 'testing' branch ?
>
> Will do in -v6.
>
> >
> > And you still have missed several places, for example the following cases:
> >
> >
> > 1 269 fs/ceph/addr.c <<ceph_netfs_issue_op_inline>>
> > req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_GETATTR,
> > mode);
>
> +
>
> > 2 389 fs/ceph/dir.c <<ceph_readdir>>
> > req = ceph_mdsc_create_request(mdsc, op, USE_AUTH_MDS);
>
> +
>
> > 3 789 fs/ceph/dir.c <<ceph_lookup>>
> > req = ceph_mdsc_create_request(mdsc, op, USE_ANY_MDS);
>
> We don't have an idmapping passed to lookup from the VFS layer. As I
> mentioned before, it's just impossible now.

->lookup() doesn't deal with idmappings and really can't otherwise you
risk ending up with inode aliasing which is really not something you
want. IOW, you can't fill in inode->i_{g,u}id based on a mount's
idmapping as inode->i_{g,u}id absolutely needs to be a filesystem wide
value. So better not even risk exposing the idmapping in there at all.