[systemd-devel] Help: Local and Remote targets
Lennart Poettering
lennart at poettering.net
Tue Aug 27 11:09:31 UTC 2019
On Di, 20.08.19 15:26, Tony Rodriguez (unixpro1970 at gmail.com) wrote:
> I modified systemd-219 functionality to meet a custom requirement for
> detecting filesystems/devices that use iscsi without using the _netdev
> keyword in /etc/fstab. It is a strict requirement regarding not using
> _netdev that I have no control over. However, I am stuck.
I am sorry, but "_netdev" is the method we use for ordering mounts
against networking. It's what it does, it's the all that it is.
What you are asking for is like asking for "I'd like to hammer this
nail into a wall, but I really don't want to use a hammer." I mean,
sure you can use other stuff, but the hammer is what is what the tool
is called you hammer stuff into walls with, so that's what you use...
> From my understanding, src/fstab-generator.c is used to determine LOCAL-FS
> and REMOTE-FS. I have modified fstab-generator.c to search for iscsi udev
> devices which works, provided the system is already fully booted
> (typical
Generators are run during early boot already, they may not have
dependencies on system state and just convert configuration from
arbitrary external formats to units files as understood by systemd.
If you do IPC or generate different units based on dnymaically
changing system state you will run into trouble, you are misusing
generators, and this is explicitly documented.
> multi-user state type of thing). I can also find /dev/disk/ block devices
> including iscsi devices using my logic within fstab-generator.c. The
> problem is when the system reboots, it appears systemd using the same
> fstab-generator logic that I implemented is unable to detect any iscsi
> devices. After doing some research, it appears normal systemd behavior is
> to mount / and /usr then invoke fstab-generator.c to determine if a given
> filesystem in /etc/fstab should be a local or remote target.
Well, ISCSI is usually set up later during boot and generators run
very early, hence if you look for already active iscsi devices in
generators you are not going to find any.
Did you read the docs about generators? Please have a look at these
notes:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html#Notes%20about%20writing%20generators
> The problem is I have no way to tell if a given iscsi filesystem/device
> specified in /etc/fstab (without the _netdev keyord ) is local/remote during
> the booting state. Mainly because devices are not yet populated in
There's an easy way to denote that, it's called _netdev, it's what it does.
> /dev/disk or udev. Is there a way I can determine if a filesystem/mount
> point/device specified in /etc/fstab is local or remote without the _netdev
> or fstype (which handles nfs, etc) keywords within fstab-generator.c? If
> checking udev and /dev/disk are not possible within fstab-generator.c,
> because such devices are not yet populated, then what should I modify within
> the systemd source so I can determine such local/remote targets myself and
> pass it to fstab-generator.c (especially when the system is in that / and
> /usr mounting state and udev devices are not yet populated?
Use _netdev, that's what it is for.
You may use "x-systemd.after=remote-fs-pre.target" as mount option to
emulate some of the effect of _netdev, but that does more.
Anyway, sorry for the disappointing answer, but your quest makes
little sense to me. What you are looking for is _netdev. If you don't
want to use that you created yourself a problem you have to solve
yourself.
Sorr,
Lennart
--
Lennart Poettering, Berlin
More information about the systemd-devel
mailing list