diff --git a/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch b/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch new file mode 100644 index 000000000..174cccb02 --- /dev/null +++ b/iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch @@ -0,0 +1,89 @@ +From 9c8108a4d3a837c51a29f28229a06d97654eaeb6 Mon Sep 17 00:00:00 2001 +From: Chris Leech +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 +Reviewed-by: Mike Christie +Signed-off-by: James Bottomley + +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 + diff --git a/kdbus.patch b/kdbus.patch index 896e78169..10b80baf3 100644 --- a/kdbus.patch +++ b/kdbus.patch @@ -51834,3 +51834,66 @@ index 9217465f3ff1..e400dc86a2f5 100644 -- 2.4.3 +From: Lubomir Rintel +Date: 2015-08-14 13:21:43 +Subject: kdbus: create /sys/fs/kdbus with sysfs_create_mount_point() + +Since 0cbee99269 user-namespace pull, if a kdbusfs is mounted on a +location that's not created with sysfs_create_mount_point the user +namespaces are not allowed to mount their sysfs instances. + +Signed-off-by: Lubomir Rintel +--- +Applies on top of char-misc/kdbus a36324913. + + ipc/kdbus/main.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +diff --git a/ipc/kdbus/main.c b/ipc/kdbus/main.c +index 1ad4dc8..c2117ea 100644 +--- a/ipc/kdbus/main.c ++++ b/ipc/kdbus/main.c +@@ -75,16 +75,13 @@ + * 'ยป struct kdbus_ep *ep (owned) + */ + +-/* kdbus mount-point /sys/fs/kdbus */ +-static struct kobject *kdbus_dir; +- + static int __init kdbus_init(void) + { + int ret; + +- kdbus_dir = kobject_create_and_add(KBUILD_MODNAME, fs_kobj); +- if (!kdbus_dir) +- return -ENOMEM; ++ ret = sysfs_create_mount_point(fs_kobj, KBUILD_MODNAME); ++ if (ret) ++ return ret; + + ret = kdbus_fs_init(); + if (ret < 0) { +@@ -96,14 +93,14 @@ static int __init kdbus_init(void) + return 0; + + exit_dir: +- kobject_put(kdbus_dir); ++ sysfs_remove_mount_point(fs_kobj, KBUILD_MODNAME); + return ret; + } + + static void __exit kdbus_exit(void) + { + kdbus_fs_exit(); +- kobject_put(kdbus_dir); ++ sysfs_remove_mount_point(fs_kobj, KBUILD_MODNAME); + ida_destroy(&kdbus_node_ida); + } + +-- +2.4.3 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/kernel.spec b/kernel.spec index ecde67574..c03e328ec 100644 --- a/kernel.spec +++ b/kernel.spec @@ -67,7 +67,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 7 # The git snapshot level -%define gitrev 0 +%define gitrev 2 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -590,6 +590,9 @@ Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch #rhbz 1239050 Patch509: ideapad-laptop-Add-Lenovo-Yoga-3-14-to-no_hw_rfkill-.patch +#rhbz 1253789 +Patch510: iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch + Patch904: kdbus.patch # END OF PATCH DEFINITIONS @@ -2027,6 +2030,15 @@ fi # # %changelog +* Wed Aug 19 2015 Josh Boyer - 4.2.0-0.rc7.git2.1 +- Linux v4.2-rc7-24-g1b647a166f07 + +* Tue Aug 18 2015 Josh Boyer - 4.2.0-0.rc7.git1.1 +- Linux v4.2-rc7-15-gbf6740281ed5 + +* Mon Aug 17 2015 Josh Boyer +- Fix iscsi issue (rhbz 1253789) + * Mon Aug 17 2015 Josh Boyer - 4.2.0-0.rc7.git0.1 - Linux v4.2-rc7 diff --git a/sources b/sources index ae37b7006..386a93d87 100644 --- a/sources +++ b/sources @@ -1,3 +1,4 @@ fe9dc0f6729f36400ea81aa41d614c37 linux-4.1.tar.xz 84e34c2f58901edcc5c840fe9893c02e perf-man-4.1.tar.gz 487c2146c2ed114354dded0fba9ed310 patch-4.2-rc7.xz +d32e106f413518d316460ba637d6b52b patch-4.2-rc7-git2.xz