[systemd-devel] [PATCH v2 5/5] mount: auto-detect iSCSI and FCoE as requiring network

Lennart Poettering lennart at poettering.net
Wed Dec 17 11:04:38 PST 2014


On Wed, 17.12.14 13:13, Karel Zak (kzak at redhat.com) wrote:

> On Fri, Dec 12, 2014 at 08:11:54PM +0100, Lennart Poettering wrote:
> > > I guess it's enough to add the 'fd' to systmed sd_event_add_io() and
> > > call mnt_table_parse_mtab() when a change is detected. (As already
> > > implemeted in the original Chris' patch.)
> > 
> > Karel, if I got this right, then the new monitor stuff will only wrap
> > inotify on utab, right? I think it would be useful if it would also
> > abstract notifications via /proc/self/mountinfo in it. To make the
> > interface easy for this and to be able to just hand out a single fd,
> > this would mean creating an epoll fd inside the lib, then adding the
> > inotify fd for utab to it, and then on top the EPOLLPRI watch on
> > /proc/self/mountinfo.
> > 
> > This way apps would get the full set of notifications via your
> > library, without knowing what's going on underneath, and userspace
> > notifications and kernel notifications would come the same way. 
> 
> OK, implemented (util-linux "monitor" branch on github).
> 
> But I have changed the userspace monitor to care about
> /run/mount/utab.lock file. It's better than the original Chris idea
> (monitor all /run/mount directory for utab rename changes).  This new
> solution is without possible false positives. 

Not following here. As long as everybody writing utab moves the file
atomically into place I see no reason to watch the lock file ever.

> 
> This is important details, because if you use epoll file descriptor 
> in another epoll then you're correctly notified on the top-level epoll, 
> but you lost information about which underneath file descriptor is active 
> -- then it was impossible to verify the inotify IN_MOVED_TO utab
> event.

Hmm? Not following. The top-level epoll will get an event telling you
that which low-level epoll is triggered. Then, you read an event from
that which tells you precisely which actual file has been triggered...

> The another advantage is that the event is triggered really after utab
> update (the update is covered by flock, and close() means unlock).
> 
> Now:
> 
>          your-epoll
>              |
>       library-epoll-FD
>         /        \
>  mountinfo-FD   utab.lock-inotify-FD
> 
> 
> Note that after notification it's necessary to cleanup (drain) inotify
> bufferes, so I have added mnt_monitor_event_cleanup().

Yupp, makes sense.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list