<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 21, 2019, 01:15 Tony Rodriguez <<a href="mailto:unixpro1970@gmail.com">unixpro1970@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I modified systemd-219 functionality to meet a custom requirement for <br>
detecting filesystems/devices that use iscsi without using the _netdev <br>
keyword in /etc/fstab.  It is a strict requirement regarding not using <br>
_netdev that I have no control over.   However,  I am stuck.<br>
<br>
 From my understanding, src/fstab-generator.c is used to determine <br>
LOCAL-FS and REMOTE-FS.  I have modified fstab-generator.c to search for <br>
iscsi udev devices which works, provided the system is already fully <br>
booted (typical multi-user state type of thing).  I can also find <br>
/dev/disk/ block devices including iscsi devices using my logic within <br>
fstab-generator.c.  The problem is when the system reboots, it appears <br>
systemd using the same fstab-generator logic that I implemented is <br>
unable to detect any iscsi devices.  After doing some research, it <br>
appears normal systemd behavior is to mount  /  and /usr then invoke <br>
fstab-generator.c to determine if a given filesystem in /etc/fstab <br>
should be a local or remote target.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">/ and /usr are mounted by initramfs before systemd starts.</div><div dir="auto"><br></div><div dir="auto">(If your initramfs itself uses systemd, that's mostly independent from the main-root systemd – they're two separate worlds.)</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The problem is I have no way to tell if a given iscsi filesystem/device <br>
specified in /etc/fstab (without the _netdev keyord ) is local/remote <br>
during the booting state.  Mainly because devices are not yet populated <br>
in /dev/disk or udev.  Is there a way I can determine if a <br>
filesystem/mount point/device specified in /etc/fstab is local or remote <br>
without the _netdev or fstype (which handles nfs, etc) keywords within <br>
fstab-generator.c?</blockquote></div></div><div dir="auto"><br></div><div dir="auto">By design, generators run before any services have started, so no udev yet.</div><div dir="auto"><br></div><div dir="auto">(But if you had udev in the initramfs, it could store data in /run that you could then read from a generator.)</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> If checking udev and /dev/disk are not possible <br>
within fstab-generator.c, because such devices are not yet populated, <br>
then what should I modify within the systemd source so I can determine <br>
such local/remote targets myself and pass it to fstab-generator.c <br>
(especially when the system is in that / and /usr mounting state and <br>
udev devices are not yet populated?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">If you can't use _netdev, then use custom options. Fstab now supports arbitrary "x-" prefixed options, and systemd fstab generator already recognizes several such as "x-systemd.requires=iscsid-is-ready.target". (I think they're listed in the systemd.mount manpage?)</div><div dir="auto"><div class="gmail_quote"></div></div></div>