[systemd-devel] [PATCH v2 5/5] mount: auto-detect iSCSI and FCoE as requiring network
Lennart Poettering
lennart at poettering.net
Mon Dec 8 11:10:08 PST 2014
On Fri, 05.12.14 15:54, Karel Zak (kzak at redhat.com) wrote:
> On Fri, Dec 05, 2014 at 01:46:06AM +0100, Lennart Poettering wrote:
> > With such an API you have the liberty to change later on what
> > precisely you expose there. The fact that you watch a file would be
> > entirely opaque, it could one day be a pipe or socket, or even an fd
> > on some kernel fd, where you just tell us the kind of events you want
> > the user code to listen on.
> >
> > This is how we wrap a lot of our own APIs, to allow integration into
> > arbitrary main loops, without restricting us to decide how precisely
> > the event is generated.
> >
> > Does this make sense?
>
> Yep.
>
> > Would love to get an API in place for this in libmount, because I
> > don't really want to release systemd with the current code.
>
> Implemented.
>
> I have added struct libmnt_monitor to make this new interface easy to
> extend and usable for more resources (I'll probably also add mountinfo
> fd for findmnt(8), but this is irrelevant for systemd;-)
>
> All you need is:
>
> mn = mnt_new_monitor();
> fd = mnt_monitor_userspace_get_fd(mn, NULL); /* utab monitor fd */
>
> mnt_monitor_get_events(mn, fd, &ev.events); /* EPOLLIN ... */
>
> efd = epoll_create1(EPOLL_CLOEXEC);
> epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ev);
>
> ....
> n = epoll_wait(efd, events, 1, -1);
> id (n == 1 && mnt_monitor_is_changed(mn, fd) == 1)
> printf("%s: change detected\n", mnt_monitor_get_filename(mn, fd));
> ....
>
> mnt_unref_monitor(mn);
> close(efd);
>
>
> 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.)
>
> usable example:
>
> https://github.com/karelzak/util-linux/blob/master/libmount/src/monitor.c#L345
Any idea when you intend to realease this new API in a release or even
in a stable one?
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list