for-upstream.improve-init-scripts.patch 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. Subject: Improve init scripts
  2. Author: Christoph Biedl <debian.axhn@manchmal.in-ulm.de>
  3. Date: 2018-09-23
  4. Forwarded: not-yet
  5. --- a/contrib/persistence/vblade.init.in
  6. +++ b/contrib/persistence/vblade.init.in
  7. @@ -8,7 +8,7 @@
  8. # Default-Start: 2 3 4 5
  9. # Default-Stop: 0 1 6
  10. # Short-Description: vblade exports
  11. -# Description: Manage all vlbade exports defined in
  12. +# Description: Manage all vblade exports defined in
  13. # /etc/vblade.conf.d/
  14. ### END INIT INFO
  15. @@ -98,6 +98,10 @@
  16. --exec $ionice "$VBLADE" -- \
  17. $shelf $slot $netif $filename $options \
  18. || return 2
  19. + sleep 1
  20. + start-stop-daemon --start --quiet \
  21. + --pidfile "$PIDFILE" --exec "$VBLADE" --test > /dev/null \
  22. + && return 2
  23. [% ELSIF control == 'daemon' -%]
  24. "$DAEMON" \
  25. --running \
  26. @@ -112,6 +116,12 @@
  27. --stdout daemon.notice \
  28. --stderr daemon.err -- \
  29. $VBLADE $options $shelf $slot $netif $filename || return 2
  30. + sleep 1
  31. + "$DAEMON" \
  32. + --running \
  33. + --name "$INSTANCE" \
  34. + --pidfiles "$PIDDIR" \
  35. + || return 2
  36. [% END -%]
  37. }
  38. @@ -168,7 +178,10 @@
  39. do_start "$INSTANCE" "$CONFIG"
  40. case "$?" in
  41. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  42. - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  43. + 2)
  44. + [ "$VERBOSE" != no ] && log_end_msg 1
  45. + EXIT=1
  46. + ;;
  47. esac
  48. ;;
  49. stop)
  50. @@ -176,7 +189,10 @@
  51. do_stop "$INSTANCE"
  52. case "$?" in
  53. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  54. - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  55. + 2)
  56. + [ "$VERBOSE" != no ] && log_end_msg 1
  57. + EXIT=1
  58. + ;;
  59. esac
  60. ;;
  61. status)
  62. --- a/contrib/persistence/vblade.init.lsb-daemon
  63. +++ b/contrib/persistence/vblade.init.lsb-daemon
  64. @@ -25,10 +25,18 @@
  65. mkdir -p "$PIDDIR"
  66. # Load the VERBOSE setting and other rcS variables
  67. -. /lib/init/vars.sh
  68. +. /usr/lib/init/vars.sh
  69. # Define LSB functions
  70. -. /lib/lsb/init-functions
  71. +. /usr/lib/lsb/init-functions
  72. +
  73. +missing () {
  74. + local MESSAGE
  75. +
  76. + MESSAGE="Did not define $1"
  77. + [ "$VERBOSE" != no ] && log_daemon_msg "$INSTANCE.conf" "$MESSAGE"
  78. + return 1
  79. +}
  80. # Start a vblade instance
  81. #
  82. @@ -37,8 +45,10 @@
  83. # 1 if daemon was already running
  84. # 2 if daemon could not be started
  85. do_start () {
  86. - local INSTANCE="$1"
  87. - local CONFIG="$2"
  88. + local INSTANCE
  89. + local CONFIG
  90. + INSTANCE="$1"
  91. + CONFIG="$2"
  92. sh -n "$CONFIG" 2>/dev/null || return 2
  93. @@ -51,10 +61,10 @@
  94. . "$CONFIG"
  95. - [ "$netif" ] || return 2
  96. - [ "$shelf" ] || return 2
  97. - [ "$slot" ] || return 2
  98. - [ "$filename" ] || return 2
  99. + [ "$netif" ] || missing netif || return 2
  100. + [ "$shelf" ] || missing shelf || return 2
  101. + [ "$slot" ] || missing slot || return 2
  102. + [ "$filename" ] || missing filename || return 2
  103. if [ "$ionice" ] ; then
  104. if [ -x "$IONICE" ] ; then
  105. @@ -77,6 +87,12 @@
  106. --stdout daemon.notice \
  107. --stderr daemon.err -- \
  108. $VBLADE $options $shelf $slot $netif $filename || return 2
  109. + sleep 1
  110. + "$DAEMON" \
  111. + --running \
  112. + --name "$INSTANCE" \
  113. + --pidfiles "$PIDDIR" \
  114. + || return 2
  115. }
  116. # Stop a vblade instance
  117. @@ -99,12 +115,14 @@
  118. --pidfiles "$PIDDIR" \
  119. --stop || return 2
  120. # Wait until the process is gone
  121. - for i in $(seq 1 10) ; do
  122. + for i in $(seq 1 3) ; do
  123. "$DAEMON" \
  124. --running \
  125. --name "$INSTANCE" \
  126. --pidfiles "$PIDDIR" || return 0
  127. + sleep 1
  128. done
  129. + # If it still didn't stop..
  130. return 2
  131. }
  132. @@ -121,7 +139,10 @@
  133. do_start "$INSTANCE" "$CONFIG"
  134. case "$?" in
  135. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  136. - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  137. + 2)
  138. + [ "$VERBOSE" != no ] && log_end_msg 1
  139. + EXIT=1
  140. + ;;
  141. esac
  142. ;;
  143. stop)
  144. @@ -129,7 +150,10 @@
  145. do_stop "$INSTANCE"
  146. case "$?" in
  147. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  148. - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  149. + 2)
  150. + [ "$VERBOSE" != no ] && log_end_msg 1
  151. + EXIT=1
  152. + ;;
  153. esac
  154. ;;
  155. status)