summaryrefslogtreecommitdiffstats
path: root/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
diff options
context:
space:
mode:
Diffstat (limited to 'iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch')
-rw-r--r--iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch89
1 files changed, 0 insertions, 89 deletions
diff --git a/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch b/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
deleted file mode 100644
index 174cccb02..000000000
--- a/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 9c8108a4d3a837c51a29f28229a06d97654eaeb6 Mon Sep 17 00:00:00 2001
-From: Chris Leech <cleech@redhat.com>
-Date: Tue, 16 Jun 2015 16:07:13 -0700
-Subject: iSCSI: let session recovery_tmo sysfs writes persist across recovery
-
-The iSCSI session recovery_tmo setting is writeable in sysfs, but it's
-also set every time a connection is established when parameters are set
-from iscsid over netlink. That results in the timeout being reset to
-the default value after every recovery.
-
-The DM multipath tools want to use the sysfs interface to lower the
-default timeout when there are multiple paths to fail over. It has
-caused confusion that we have a writeable sysfs value that seem to keep
-resetting itself.
-
-This patch adds an in-kernel flag that gets set once a sysfs write
-occurs, and then ignores netlink parameter setting once it's been
-modified via the sysfs interface. My thinking here is that the sysfs
-interface is much simpler for external tools to influence the session
-timeout, but if we're going to allow it to be modified directly we
-should ensure that setting is maintained.
-
-Signed-off-by: Chris Leech <cleech@redhat.com>
-Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
-Signed-off-by: James Bottomley <JBottomley@Odin.com>
-
-diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
-index 55647aa..4c25539 100644
---- a/drivers/scsi/scsi_transport_iscsi.c
-+++ b/drivers/scsi/scsi_transport_iscsi.c
-@@ -2042,6 +2042,7 @@ iscsi_alloc_session(struct Scsi_Host *shost, struct iscsi_transport *transport,
- session->transport = transport;
- session->creator = -1;
- session->recovery_tmo = 120;
-+ session->recovery_tmo_sysfs_override = false;
- session->state = ISCSI_SESSION_FREE;
- INIT_DELAYED_WORK(&session->recovery_work, session_recovery_timedout);
- INIT_LIST_HEAD(&session->sess_list);
-@@ -2786,7 +2787,8 @@ iscsi_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
- switch (ev->u.set_param.param) {
- case ISCSI_PARAM_SESS_RECOVERY_TMO:
- sscanf(data, "%d", &value);
-- session->recovery_tmo = value;
-+ if (!session->recovery_tmo_sysfs_override)
-+ session->recovery_tmo = value;
- break;
- default:
- err = transport->set_param(conn, ev->u.set_param.param,
-@@ -4049,13 +4051,15 @@ store_priv_session_##field(struct device *dev, \
- if ((session->state == ISCSI_SESSION_FREE) || \
- (session->state == ISCSI_SESSION_FAILED)) \
- return -EBUSY; \
-- if (strncmp(buf, "off", 3) == 0) \
-+ if (strncmp(buf, "off", 3) == 0) { \
- session->field = -1; \
-- else { \
-+ session->field##_sysfs_override = true; \
-+ } else { \
- val = simple_strtoul(buf, &cp, 0); \
- if (*cp != '\0' && *cp != '\n') \
- return -EINVAL; \
- session->field = val; \
-+ session->field##_sysfs_override = true; \
- } \
- return count; \
- }
-@@ -4066,6 +4070,7 @@ store_priv_session_##field(struct device *dev, \
- static ISCSI_CLASS_ATTR(priv_sess, field, S_IRUGO | S_IWUSR, \
- show_priv_session_##field, \
- store_priv_session_##field)
-+
- iscsi_priv_session_rw_attr(recovery_tmo, "%d");
-
- static struct attribute *iscsi_session_attrs[] = {
-diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
-index 2555ee5..6183d20 100644
---- a/include/scsi/scsi_transport_iscsi.h
-+++ b/include/scsi/scsi_transport_iscsi.h
-@@ -241,6 +241,7 @@ struct iscsi_cls_session {
-
- /* recovery fields */
- int recovery_tmo;
-+ bool recovery_tmo_sysfs_override;
- struct delayed_work recovery_work;
-
- unsigned int target_id;
---
-cgit v0.10.2
-