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.
