Re: [RFC] iscsid / systemd / dracut integration effort

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/10/2012 04:08 PM, Chris Leech wrote:
> Sorry about the cross-posting, but I think that in order to get this right I'm
> going to need as much feedback as I can get.
> 
> I think I've got this working pretty well now (at least for my iBFT configured
> iSCSI root test case), although the dracut module still needs work.  This is
> based on the iscsid socket activation patch from Tomasz Torcz and the unit
> files from Tomasz and Jóhann B. Guðmundsson.
> 
> Attempting to start iscsid using systemd unit files (socket activated or not)
> was impacting my iscsi-root test setup.  Rather than try to preserve the old
> logic that used the _netdev mount flag to determine when iscsid could be safely
> shutdown, I've been working on following the guidelines for root storage
> daemons http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons.
> 
> 1) I patched iscsid to set argv[0][0] = '@' if a new --initrd flag is passed on
>    the command line.  It's simple, it works, we don't kill iscsid before the
>    root filesystem is unmounted.
> 
> 2) When starting iscsid from the initrd, I then ran into issues of iscsid not
>    functioning properly after the switch_root.  It's not mentioned in the
>    RootStorageDaemons documentation, but if a process left running from the
>    initrd needs further filesystem access at runtime it will need to be able to
>    chroot itself before the switch_root.  I patched iscsid and iscsiadm with a
>    newroot command (using plymouth as an example), and used a dracut clenaup
>    hook to call "iscsiadm --newroot /sysroot".
> 
> 3) Related to #2, launching iscsid as a Type=simple service from the initrd
>    (I'm testing this with Fedora 18 beta, where dracut uses systemd in the
>    initrd) results in STDOUT/STDERR access after the switch_root failing with
>    EPIPE.  It seems that the connection to the journal process is dead once the
>    initrd instantiated systemd-journald is replaced with the runtime process.
> 
>    I can at least keep iscsid functioning if I run it as Type=forking, but I'm
>    not sure if I'm losing runtime logging or not.  I may be able to do
>    something with the StandardOutput and StandardError options in the service
>    file.
> 
> 4) None of this helps if the sessions are shutdown when we still need them.
>    Rather than the all-or-nothing _netdev mount option checks that have been
>    used in the past, I'm attempting to use the fact that iscsiadm will skip
>    over session that match a node with startup=onboot set when doing a
>    logoutall.  The iscsi_mark_root_nodes script is borrowed from the SUSE init
>    scripts in the open-iscsi repos written by Hannes Reinecke.  I've made minor
>    changes to export the list of sessions activated in the initramfs, and then
>    mark those as onboot when starting iscsi.service.
> 
> Things that still need looking into.
> 
> 1) Command line configured iSCSI parameters.  If iscsistart is to be fully
>    removed something needs to setup the node from the command line.  Or
>    iscsistart needs to be able to run alongside iscsid.
> 

The iscsi tools changes look ok to me. For 1), in this type of setup we
are always only doing

iscsiadm -m fw -l

(saw that in the iscsiroot.sh part of patch).

If so, then just modify to take params. I think you could just take
parse_param/apply_params from iscsistart and use them.


--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux