Jeff Layton <jlayton@xxxxxxxxxx> writes: > On Mon, 2021-04-19 at 11:30 +0100, Luis Henriques wrote: ... > Ouch. That looks like a real bug, alright. > > Basically when building the path, we occasionally need to fetch the > crypto context for parent inodes and such, and that can cause us to > recurse back into __ceph_getxattr and try to issue another RPC to the > MDS. > > I'll have to look and see what we can do. Maybe it's safe to drop the > mdsc->mutex while we're building the path? Or maybe this is a good time > to re-think a lot of the really onerous locking in this codepath? > > I'm open to suggestions here... Yeah, I couldn't see a good fix at a first glace. Dropping the mutex while building the path was my initial thought too but it's not easy to proof that's a safe thing to do. The other idea I had was to fetch all the needed fscrypt contexts at the end, after building the path. But I didn't found a way for doing that because to build the path... we need the contexts. It looks like this leaves us with the locking rethinking option. /me tries harder to find another way out Cheers, -- Luis