On Thu, Nov 10, 2016 at 10:44 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > On Thu, Nov 10, 2016 at 8:46 PM, Jan Kara <jack@xxxxxxx> wrote: >> Except it doesn't quite work. We can pin the current marks by a refcount >> but they can still be removed from the list so after we regain srcu lock, >> we are not sure their ->next pointers still point to still allocated marks >> :-| Sadly I realized this only after implementing all this. > > I think the real problem is the synchronous nature of the notification > interface, that really doesn't fit the permission events model very > well. > > If it were to be changed around to an async interface then all the > marks could be iterated, the permission events queued and then the > srcu lock can be released for good. > > Did I miss something? > Just one annoying fact - the the spec says that permission events must be delivered before the lower priority class events (i.e. the passive listeners). But unlike fanotify, that doesn't need the marks after they have been iterated, inotify does need the marks further along and dnotify goes further by taking a lock, which is on the mark itself, throughout the emittion of the event. This is the reason I suggested to walk the mark list while taking different SRCUs, but as I said, that's easier said then done, so I am not sure its a feasible idea. Amir. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html