Re: [RFC PATCH v6 00/20] ceph+fscrypt: context, filename and symlink support

Luis Henriques
2021-04-19T16:02:46Z

Jeff Layton <jlayton@kernel.org> 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