Messages in this thread | | | From | Amir Goldstein <> | Date | Mon, 31 Jan 2022 18:28:34 +0200 | Subject | Re: [RFC][PATCH 0/5] vfs, overlayfs, cachefiles: Combine I_OVL_INUSE and S_KERNEL_FILE and split out no-remove |
| |
On Mon, Jan 31, 2022 at 5:12 PM David Howells <dhowells@redhat.com> wrote: > > > Hi Amir, > > How about this as a set of patches to do what you suggest[1] and hoist the > handler functions for I_OVL_INUSE into common code and rename the flag to > I_EXCL_INUSE. This can then be shared with cachefiles - allowing me to get > rid of S_KERNEL_FILE. >
They look like what I had in mind. Unfortunately, I had forgotten about another use that ovl makes of the flag (see comment on patch 1/5). I'd made a suggestion on how to get rid of that use case, but I hope this won't complicate things too much for you.
> I did split out the functionality for preventing file/dir removal to a > separate flag, I_NO_REMOVE, so that it's not tied to I_EXCL_INUSE in case > overlayfs doesn't want to use it. The downside to that, though is that it > requires a separate locking of i_lock to set/clear it. > > I also added four general tracepoints to log successful lock/unlock, > failure to lock and a bad unlock. The lock tracepoints log which driver > asked for the lock and all tracepoints allow the driver to log an arbitrary > reference number (in cachefiles's case this is the object debug ID). > > Questions: > > (1) Should it be using a flag in i_state or a flag in i_flags? I'm not > sure what the difference is really.
Me neither.
> > (2) Do we really need to take i_lock when testing I_EXCL_INUSE? Would > READ_ONCE() suffice? >
For ovl_is_inuse() I think READ_ONCE() should suffice.
Thanks, Amir.
| |