Re: [PATCH] systemd notification support
Andy Grover <[email protected]> Wed, 21 May 2014 14:00:58 -0700
| Newsgroups | org.kernel.vger.stgt |
|---|---|
| Message-ID | <[email protected]> |
On 05/20/2014 07:43 PM, FUJITA Tomonori wrote: > From: Apollon Oikonomopoulos <[email protected]> > > tgtd may take some time to initialize before accepting management > commands. Since management commands are used to bring the targets up > during service startup, we have to make sure that tgtd is responsive > before proceeding. To this end, we add a call to sd_notify(3) right > before entering the event loop to signal systemd (if applicable) that > the main process is ready. > > Systemd support with the relevant includes and linker flags is optional, > controlled by the SD_NOTIFY make flag. > > Signed-off-by: Apollon Oikonomopoulos <[email protected]> Hi Apollon, Fedora tgtd pkg maintainer here. Better systemd integration seems like a good way to go. BTW I feel deep shame about the systemd service file that Fedora is currently using (attached), especially the sleep. Does this or another change perhaps result in a better way to integrate tgt with systemd? Do we need two service files or something? It would be great if tgt could use the same service file(s) on all systemd-enabled distros, and these could be included with tgtd. Regards -- Andy
tgtd.service
(text/plain, 1.2 KB)
[Unit] Description=tgtd iSCSI target daemon After=network.target [Service] EnvironmentFile=/etc/sysconfig/tgtd ExecStart=/usr/sbin/tgtd -f $TGTD_OPTS # see bz 848942. workaround for a race for now. ExecStartPost=/bin/sleep 5 # Put tgtd into "offline" state until all the targets are configured. # We don't want initiators to (re)connect and fail the connection # if it's not ready. ExecStartPost=/usr/sbin/tgtadm --op update --mode sys --name State -v offline # Configure the targets. ExecStartPost=/usr/sbin/tgt-admin -e -c $TGTD_CONFIG # Put tgtd into "ready" state. ExecStartPost=/usr/sbin/tgtadm --op update --mode sys --name State -v ready # Update configuration for targets. Only targets which # are not in use will be updated. ExecReload=/usr/sbin/tgt-admin --update ALL -c $TGTD_CONFIG # NOTE: Shutdown of the iscsi target may cause data corruption # for initiators that are connected. ExecStop=/usr/sbin/tgtadm --op update --mode sys --name State -v offline # Remove all targets. It only removes targets which are not in use. ExecStop=/usr/sbin/tgt-admin --update ALL -c /dev/null # tgtd will exit if all targets were removed ExecStop=/usr/sbin/tgtadm --op delete --mode system [Install] WantedBy=multi-user.target