aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Horne <mhorne@FreeBSD.org>2023-11-23 15:26:12 +0000
committerMitchell Horne <mhorne@FreeBSD.org>2023-12-08 22:02:44 +0000
commita8ba64ca91d479346c9a7f99ef3eeceb1976ac13 (patch)
tree06a8b0a30fd15130fe5bf4b6eb39236713de0ea5
parentaaebd6d069f50d5524157fcac5253280ce3a8156 (diff)
downloadsrc-a8ba64ca91d479346c9a7f99ef3eeceb1976ac13.tar.gz
src-a8ba64ca91d479346c9a7f99ef3eeceb1976ac13.zip
iscsi: adjust shutdown_pre_sync handler
Don't attempt to service reconnections if RB_NOSYNC is set. More crucially, don't do it if the scheduler is stopped, as the maintenance thread will never run again. Reviewed by: jhb MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42342 (cherry picked from commit 2ce1c45b3411410a5d0a4d08198a3b0010d493b7)
-rw-r--r--sys/dev/iscsi/iscsi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/iscsi/iscsi.c b/sys/dev/iscsi/iscsi.c
index 311b339caf7a..38973898a9d1 100644
--- a/sys/dev/iscsi/iscsi.c
+++ b/sys/dev/iscsi/iscsi.c
@@ -44,6 +44,7 @@
#include <sys/mbuf.h>
#include <sys/mutex.h>
#include <sys/module.h>
+#include <sys/proc.h>
#include <sys/reboot.h>
#include <sys/socket.h>
#include <sys/sockopt.h>
@@ -2680,11 +2681,12 @@ iscsi_terminate_sessions(struct iscsi_softc *sc)
}
static void
-iscsi_shutdown_pre(struct iscsi_softc *sc)
+iscsi_shutdown_pre(struct iscsi_softc *sc, int howto)
{
struct iscsi_session *is;
- if (!fail_on_shutdown)
+ if (!fail_on_shutdown || (howto & RB_NOSYNC) != 0 ||
+ SCHEDULER_STOPPED())
return;
/*