If a human talks to a person that isn't there you call him/her crazy.
If software talks to a process that isn't there, you call it a bug (I guess) ;-)
To me the proper fix is to ensure iscsid is running before trying to talk to it 
(stop it)

Ulrich

>>> The Lee-Man <[email protected]> schrieb am 19.11.2016 um 20:46 in
Nachricht <[email protected]>:
> In this wonderful new world of systemd, I have an issue with stopping the 
> iscsid service when the daemon has died or been killed.
> 
> My setup:
> * I have an iscsid.socket unit file, which is enabled and started
> * I have an iscsid.service unit file, which controls the iscsid daemon. 
> This is disabled and not started
> 
> Normally, if I run a command like "iscsiadm -m discovery -t st -p 
> SOME-TARGET", systemd notices that iscsiadm is trying to talk to iscsid 
> through the socket, and it starts up iscsid. This is the cool part (IMHO) 
> of systemd socket activation.
> 
> When I want to stop iscsid, I can just tell systemctl to do it via 
> "systemctl stop iscsid", and it runs the "ExecStop=" command in the service 
> unit file, which is "iscsiadm -k 0 2" before terminating the daemon 
> process(es).
> 
> [NOTE: the "2" here in this command actually does nothing and is ignored, 
> but I copied this from someplace else long ago, and the "2" was present 
> there.]
> 
> It is of importance, in this case, that the ExecStop command actually sends 
> an IPC message to the daemon (iscsid) requesting it to cleanly shut itself 
> down. Herein lies the rub.
> 
> All of this works great until the daemon happens not to be running. You can 
> simulate this with "kill -TERM $(pidof iscsid)" when the daemon is running. 
> Now you are in a situation where systemd started the service and knows it 
> is now not running, so it seems to send the ExecStop command to cleanly 
> shut it down. This command hangs! It seems to be stuck in an infinite loop 
> trying to send the shutdown command to the daemon, waiting for it to 
> timeout, then trying again. The daemon starts up, sees an IPC error, and 
> exits.
> 
> While this clearly seems like a systemd issue, I have found a workaround 
> that looks clean. Well, as clean as the shutdown command is, anyway. This 
> involves:
> 
> * modifying the "iscsiadm -k" command to require passing in the PID of the 
> daemon to be killed
> * modifying the iscsiadm to only call kill_iscsid() if positive PID is 
> passed in, and that PID exists. It verifies this by sending a blank signal 
> to the process.
> * modifying the iscsid.service systemd unit file so that the ExecStop 
> command becomes "iscsiadm -k 0 $MAINPID"
> 
> I know other distributions are having been dealing with iscsid service 
> shutdown issues with systemd for a while now. Perhaps somebody else has a 
> better solution?
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "open-iscsi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/open-iscsi.
> For more options, visit https://groups.google.com/d/optout.




-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to