[stgt] [PATCH] systemd notification support
agrover at redhat.com
Wed May 21 23:00:58 CEST 2014
On 05/20/2014 07:43 PM, FUJITA Tomonori wrote:
> From: Apollon Oikonomopoulos <apoikos at debian.org>
> 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 <apoikos at debian.org>
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
-------------- next part --------------
Description=tgtd iSCSI target daemon
ExecStart=/usr/sbin/tgtd -f $TGTD_OPTS
# see bz 848942. workaround for a race for now.
# 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
More information about the stgt