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.