From dc1a7dc8be58e0c1f9e3e6eca5dce1e7dbab1668 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Sat, 4 Apr 2020 22:30:24 +0200 Subject: [PATCH] - up to 3.0.52 --- clean-ifdefs.patch | 124 +++++++- kernel-4.14.patch | 271 ------------------ kernel-4.15.patch | 34 --- kernel-4.17.patch | 14 - kernel-4.19.patch | 29 -- kernel-5.0.patch | 13 +- kernel-5.6.patch | 150 ++++++++++ lin_tape.fixlist | 682 ++++++++++++++++++++++++-------------------- lin_tape.spec | 28 +- linux-4.11.patch | 180 ------------ linux-4.12.patch | 52 ---- linux-4.13.patch | 28 -- linux-4.4.169.patch | 12 - linux-4.9.patch | 37 --- 14 files changed, 646 insertions(+), 1008 deletions(-) delete mode 100644 kernel-4.14.patch delete mode 100644 kernel-4.15.patch delete mode 100644 kernel-4.17.patch delete mode 100644 kernel-4.19.patch create mode 100644 kernel-5.6.patch delete mode 100644 linux-4.11.patch delete mode 100644 linux-4.12.patch delete mode 100644 linux-4.13.patch delete mode 100644 linux-4.4.169.patch delete mode 100644 linux-4.9.patch diff --git a/clean-ifdefs.patch b/clean-ifdefs.patch index 26763df..7f6cb58 100644 --- a/clean-ifdefs.patch +++ b/clean-ifdefs.patch @@ -1,7 +1,7 @@ diff -ur lin_tape-3.0.18/Makefile lin_tape-3.0.18-ifdefs/Makefile --- lin_tape-3.0.18/Makefile 2017-05-09 21:11:32.977092391 +0200 +++ lin_tape-3.0.18-ifdefs/Makefile 2017-05-09 21:05:59.610307494 +0200 -@@ -20,27 +20,6 @@ +@@ -20,26 +20,6 @@ lin_tape-objs := join.o lin_tape_scsi_config.o lin_tape_scsi_tape.o lin_tape_scsi_trace.o \ lin_tape_ioctl_tape.o lin_tape_ioctl_changer.o lin_tape_extra_ioctl.o @@ -20,15 +20,14 @@ diff -ur lin_tape-3.0.18/Makefile lin_tape-3.0.18-ifdefs/Makefile -KERNELVER = $(shell uname -r 2>/dev/null|sed "s/[\.-]/_/g"|sed "s/\([0-9]*_[0-9]*_[0-9]*_[0-9]*\).*/\1/") -EXTRA_CFLAGS += -DSLESKERNEL_${KERNELVER} -SLESSP2 := $(shell grep -qi SP2 /etc/*release && echo 1 || echo 0) --ifeq ($(SLESSP2), 1) +-ifeq ($(SLESSP2), 1) -EXTRA_CFLAGS += -DSLESSP2 -endif -endif -endif -- + ifeq ($(SFMP), 1) EXTRA_CFLAGS += -DSFMPENABLED - endif diff -ur lin_tape-3.0.18/pfo.h lin_tape-3.0.18-ifdefs/pfo.h --- lin_tape-3.0.18/pfo.h 2017-02-23 19:14:41.000000000 +0100 +++ lin_tape-3.0.18-ifdefs/pfo.h 2017-05-09 21:06:34.117699008 +0200 @@ -174,3 +173,120 @@ diff -ur lin_tape-3.0.18/pfo.h lin_tape-3.0.18-ifdefs/pfo.h /* Misc defines needed so source is same for all versions of Linux */ #ifndef SDEV_TRANSPORT_OFFLINE +--- lin_tape-3.0.52/lin_tape_scsi_config.h~ 2020-04-04 21:53:09.000000000 +0200 ++++ lin_tape-3.0.52/lin_tape_scsi_config.h 2020-04-04 21:56:46.600032193 +0200 +@@ -64,9 +64,6 @@ + ("IBM Tape Drives and Libraries"); + MODULE_LICENSE("GPL"); + MODULE_VERSION("3.0.52"); +-#if defined(SLESVERSION) +-MODULE_INFO(supported, "external"); +-#endif // defined + /* driver parameters */ + int support_dio = 1; + module_param(support_dio, int, 0); +--- lin_tape-3.0.52/sgmp.c~ 2020-03-05 19:43:09.000000000 +0100 ++++ lin_tape-3.0.52/sgmp.c 2020-04-04 21:57:56.793366544 +0200 +@@ -34,7 +34,7 @@ + */ + + #include +-#if !defined(SLESVERSION) && LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) + /* + * History: + * Started: Aug 9 by Lawrence Foard (entropy@world.std.com), +@@ -3012,7 +3012,7 @@ + return 0; + } + #endif /* CONFIG_SCSI_PROC_FS */ +-#elif !defined(SLESVERSION) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) + static int sg_version_num = 30536; /* 2 digits for each component */ + #define SG_VERSION_STR "3.5.36" + +@@ -6026,7 +6026,7 @@ + } + + #endif /* CONFIG_SCSI_PROC_FS */ +-#elif !defined(SLESVERSION) && LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) ++#elif LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) + static int sg_version_num = 30534; /* 2 digits for each component */ + #define SG_VERSION_STR "3.5.34" + +--- lin_tape-3.0.52/stmp.c~ 2020-03-05 19:43:09.000000000 +0100 ++++ lin_tape-3.0.52/stmp.c 2020-04-04 21:58:35.473367112 +0200 +@@ -42,7 +42,7 @@ + + */ + #include +-#if !defined(SLESVERSION) && LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) + /* + SCSI Tape Driver for Linux version 1.1 and newer. See the accompanying + file Documentation/scsi/st.txt for more information. +@@ -5108,7 +5108,7 @@ + + return 0; + } +-#elif !defined(SLESVERSION) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) + #include + #include + #include +@@ -10137,7 +10137,7 @@ + + return 0; + } +-#elif !defined(SLESVERSION) && LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) ++#elif LINUX_VERSION_CODE == KERNEL_VERSION(2,6,32) + #include + #include + #include +--- lin_tape-3.0.52/upper.c~ 2020-04-04 21:55:46.000000000 +0200 ++++ lin_tape-3.0.52/upper.c 2020-04-04 21:59:12.536700966 +0200 +@@ -273,7 +273,7 @@ + if (copy_from_user(pfo_cmd->scsi_cmd, hdr->cmdp, hdr->cmd_len)) + return -EFAULT; + +-#if LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) && (defined(SLESVERSION) || defined(UBUNTUVERSION)) ++#if LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) + if (blk_verify_command(pfo_cmd->scsi_cmd, mode & FMODE_WRITE)) + #else + /* RHEL 6.4 and beyond */ +@@ -525,14 +525,12 @@ + /* SG_IO howto says that the shorter of the two wins */ + iov_data_len = iov_length((struct iovec *)iov, + hdr->iovec_count); +-#if !defined (UBUNTUVERSION) + if (hdr->dxfer_len < iov_data_len) { + hdr->iovec_count = iov_shorten((struct iovec *)iov, + hdr->iovec_count, + hdr->dxfer_len); + iov_data_len = hdr->dxfer_len; + } +-#endif + pfo_cmd.buffer = iov; + pfo_cmd.bufflen = iov_data_len; + pfo_cmd.iov_count = hdr->iovec_count; +@@ -622,7 +620,7 @@ + if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len)) + goto error; + +-#if LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) && (defined(SLESVERSION) || defined(UBUNTUVERSION)) ++#if LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) + err = blk_verify_command(scsi_cmd, mode & FMODE_WRITE); + #else + /* RHEL 6.4 and beyond */ +--- lin_tape-3.0.52/intercept.c~ 2020-03-05 19:43:09.000000000 +0100 ++++ lin_tape-3.0.52/intercept.c 2020-04-04 21:59:43.190034776 +0200 +@@ -2492,9 +2492,6 @@ + MODULE_LICENSE("GPL"); + MODULE_VERSION(PFO_VERSION_STR); + MODULE_INFO(date, PFO_DATE_STR); +-#if defined(SLESVERSION) +-MODULE_INFO(supported, "external"); +-#endif + #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,32) + module_param(netbackup, int, 0444); + MODULE_PARM_DESC(netbackup, "!=0 to use with NetBackup application"); diff --git a/kernel-4.14.patch b/kernel-4.14.patch deleted file mode 100644 index 00ee885..0000000 --- a/kernel-4.14.patch +++ /dev/null @@ -1,271 +0,0 @@ ---- lin_tape-3.0.20/fo_util.c~ 2017-05-27 21:22:52.000000000 +0200 -+++ lin_tape-3.0.20/fo_util.c 2017-11-17 09:04:43.375810976 +0100 -@@ -169,7 +169,7 @@ - - /** Enable the change of the debug control flag. - * /sys/bus/scsi/drivers/pfo/debug_flag */ --static ssize_t pfoattr_debug_flag_set(struct device_driver *dev, -+static ssize_t debug_flag_store(struct device_driver *dev, - const char *buf, size_t count) - { - sscanf(buf, "0x%x", &pfo_debug_flag); -@@ -179,19 +179,18 @@ - - /** Enable the cat of the debug control flag. - * /sys/bus/scsi/drivers/pfo/debug_flag */ --static ssize_t pfoattr_debug_flag_get(struct device_driver *ddp, char *buf) -+static ssize_t debug_flag_show(struct device_driver *ddp, char *buf) - { - DBG_DEBUG(""); - return scnprintf(buf, PAGE_SIZE, - "debug flag=%04x\necho 0x > debug_flag to change\n", - pfo_debug_flag); - } --static DRIVER_ATTR(debug_flag, S_IRUGO|S_IWUSR|S_IWGRP, -- pfoattr_debug_flag_get, pfoattr_debug_flag_set); -+static DRIVER_ATTR_RW(debug_flag); - - /** Enable the cat of the debug buffer. - * /sys/bus/scsi/drivers/pfo/debug_buffer */ --static ssize_t pfoattr_debug_buffer_get(struct device_driver *ddp, char *buf) -+static ssize_t debug_buffer_show(struct device_driver *ddp, char *buf) - { - DBG_DEBUG(""); - if (debug_buffer[0] == '\001') { -@@ -202,11 +201,11 @@ - return strlen(buf); - } - } --static DRIVER_ATTR(debug_buffer, S_IRUGO, pfoattr_debug_buffer_get, NULL); -+static DRIVER_ATTR_RO(debug_buffer); - - /** Enable the cat of the trace buffer. - * /sys/bus/scsi/drivers/pfo/trace */ --static ssize_t pfoattr_debug_trace_get(struct device_driver *ddp, char *buf) -+static ssize_t trace_show(struct device_driver *ddp, char *buf) - { - char *the_buffer; - int strlenbuf = 0; -@@ -232,7 +231,7 @@ - } - return strlenbuf; - } --static DRIVER_ATTR(trace, S_IRUGO, pfoattr_debug_trace_get, NULL); -+static DRIVER_ATTR_RO(trace); - - int init_debug(struct device_driver *pfo_gendrv) - { ---- lin_tape-3.0.20/intercept.c~ 2017-11-18 09:30:20.000000000 +0100 -+++ lin_tape-3.0.20/intercept.c 2017-11-18 09:32:26.165820320 +0100 -@@ -299,7 +299,7 @@ - /** Perform the operations the customer has requested when they wrote to - * /sys/bus/scsi/drivers/pfo/ctrl - */ --static ssize_t pfoattr_ctrl_set(struct device_driver *dev, const char *buf, -+static ssize_t ctrl_store(struct device_driver *dev, const char *buf, - size_t count) - { - intercept_ctrl(NULL, buf, count); -@@ -310,23 +310,22 @@ - * /sys/bus/scsi/drivers/pfo/ctrl - * @return string length - */ --static ssize_t pfoattr_ctrl_get(struct device_driver *ddp, char *buf) -+static ssize_t ctrl_show(struct device_driver *ddp, char *buf) - { - return resolve_ctrl_get(buf, PAGE_SIZE); - } --static DRIVER_ATTR(ctrl, S_IRUGO|S_IWUSR|S_IWGRP, pfoattr_ctrl_get, -- pfoattr_ctrl_set); -+static DRIVER_ATTR_RW(ctrl); - - - /** Create the text the customer will see when they read - * /sys/bus/scsi/drivers/pfo/version - * @return string length - */ --static ssize_t pfo_version_show(struct device_driver *ddd, char *buf) -+static ssize_t version_show(struct device_driver *ddd, char *buf) - { - return snprintf(buf, PAGE_SIZE, "[%s]\n", PFO_DATE_STR); - } --static DRIVER_ATTR(version, S_IRUGO, pfo_version_show, NULL); -+static DRIVER_ATTR_RO(version); - - static ssize_t devattr_vendor(struct device *dev, - struct device_attribute *attr, char *buf) ---- lin_tape-3.0.20/lin_tape_scsi_config.c~ 2017-05-27 21:22:51.000000000 +0200 -+++ lin_tape-3.0.20/lin_tape_scsi_config.c 2017-11-18 09:36:47.106483198 +0100 -@@ -47,7 +47,7 @@ - * * - *******************************************************************************/ - --static ssize_t tape_version_show(struct device_driver* driver, char* buf) -+static ssize_t version_show(struct device_driver* driver, char* buf) - { - int rc; - -@@ -57,7 +57,7 @@ - return rc; - } /* tape_version_show() */ - --DRIVER_ATTR(version, 0444, tape_version_show, NULL); -+DRIVER_ATTR_RO(version); - - /******************************************************************************* - * * -@@ -112,7 +112,7 @@ - - } /* lin_tape_debug_store() */ - --DRIVER_ATTR(lin_tape_debug, 0660, lin_tape_debug_show, lin_tape_debug_store); -+DRIVER_ATTR_RW(lin_tape_debug); - - /******************************************************************************* - * * -@@ -167,7 +167,7 @@ - - } /* auto_logging_store() */ - --DRIVER_ATTR(auto_logging, 0660, auto_logging_show, auto_logging_store); -+DRIVER_ATTR_RW(auto_logging); - - /******************************************************************************* - * * -@@ -221,7 +221,7 @@ - - } /* petro_store() */ - --DRIVER_ATTR(petro, 0660, petro_show, petro_store); -+DRIVER_ATTR_RW(petro); - - /******************************************************************************* - * * -@@ -276,7 +276,7 @@ - - } /* support_dio_store() */ - --DRIVER_ATTR(support_dio, 0660, support_dio_show, support_dio_store); -+DRIVER_ATTR_RW(support_dio); - - /******************************************************************************* - * * -@@ -303,7 +303,7 @@ - return rc; - } /* wait_on_config_show() */ - --DRIVER_ATTR(wait_on_config, 0444, wait_on_config_show, NULL); -+DRIVER_ATTR_RO(wait_on_config); - - /******************************************************************************* - * * -@@ -357,8 +357,7 @@ - return count; - } /* changer_open_reserve_show() */ - --DRIVER_ATTR(changer_open_reserve, 0660, changer_open_reserve_show, -- changer_open_reserve_store); -+DRIVER_ATTR_RW(changer_open_reserve); - - /******************************************************************************* - * * -@@ -412,9 +411,7 @@ - return count; - } /* default_sys_encryption_proxy_store() */ - --DRIVER_ATTR(default_sys_encryption_proxy, 0644, -- default_sys_encryption_proxy_show, -- default_sys_encryption_proxy_store); -+DRIVER_ATTR_RW(default_sys_encryption_proxy); - - /******************************************************************************* - * * -@@ -470,9 +467,7 @@ - return count; - } /* default_sys_encryption_write_show() */ - --DRIVER_ATTR(default_sys_encryption_write, 0644, -- default_sys_encryption_write_show, -- default_sys_encryption_write_store); -+DRIVER_ATTR_RW(default_sys_encryption_write); - - /******************************************************************************* - * * -@@ -528,8 +523,7 @@ - - } /* disable_density_on_open_store() */ - --DRIVER_ATTR(disable_density_on_open, 0660, disable_density_on_open_show, -- disable_density_on_open_store); -+DRIVER_ATTR_RW(disable_density_on_open); - - /******************************************************************************* - * * -@@ -584,8 +578,7 @@ - - } /* dynamic_attributes_store() */ - --DRIVER_ATTR(dynamic_attributes, 0660, dynamic_attributes_show, -- dynamic_attributes_store); -+DRIVER_ATTR_RW(dynamic_attributes); - - /******************************************************************************* - * * -@@ -640,7 +633,7 @@ - - } /* disable_auto_drive_dump_store() */ - --DRIVER_ATTR(disable_auto_drive_dump, 0660, disable_auto_drive_dump_show, disable_auto_drive_dump_store); -+DRIVER_ATTR_RW(disable_auto_drive_dump); - - /******************************************************************************* - * * -@@ -695,7 +688,7 @@ - - } /* busy_retry_store() */ - --DRIVER_ATTR(busy_retry, 0660, busy_retry_show, busy_retry_store); -+DRIVER_ATTR_RW(busy_retry); - - /******************************************************************************* - * * ---- lin_tape-3.0.20/stmp.c~ 2017-11-18 09:30:20.000000000 +0100 -+++ lin_tape-3.0.20/stmp.c 2017-11-18 09:39:11.483862824 +0100 -@@ -5473,29 +5473,29 @@ - #else // < 4.4.21 - - /* The sysfs driver interface. Read-only at the moment */ --static ssize_t st_try_direct_io_show(struct device_driver *ddp, char *buf) -+static ssize_t try_direct_io_show(struct device_driver *ddp, char *buf) - { - return snprintf(buf, PAGE_SIZE, "%d\n", try_direct_io); - } --static DRIVER_ATTR(try_direct_io, S_IRUGO, st_try_direct_io_show, NULL); -+static DRIVER_ATTRRO(try_direct_io); - --static ssize_t st_fixed_buffer_size_show(struct device_driver *ddp, char *buf) -+static ssize_t fixed_buffer_size_show(struct device_driver *ddp, char *buf) - { - return snprintf(buf, PAGE_SIZE, "%d\n", st_fixed_buffer_size); - } --static DRIVER_ATTR(fixed_buffer_size, S_IRUGO, st_fixed_buffer_size_show, NULL); -+static DRIVER_ATTR_RW(fixed_buffer_size); - --static ssize_t st_max_sg_segs_show(struct device_driver *ddp, char *buf) -+static ssize_t max_sg_segs_show(struct device_driver *ddp, char *buf) - { - return snprintf(buf, PAGE_SIZE, "%d\n", st_max_sg_segs); - } --static DRIVER_ATTR(max_sg_segs, S_IRUGO, st_max_sg_segs_show, NULL); -+static DRIVER_ATTR_RO(max_sg_segs); - --static ssize_t st_version_show(struct device_driver *ddd, char *buf) -+static ssize_t version_show(struct device_driver *ddd, char *buf) - { - return snprintf(buf, PAGE_SIZE, "[%s]\n", verstr); - } --static DRIVER_ATTR(version, S_IRUGO, st_version_show, NULL); -+static DRIVER_ATTR_RO(version); - - static int do_create_sysfs_files(void) - { diff --git a/kernel-4.15.patch b/kernel-4.15.patch deleted file mode 100644 index 15efac9..0000000 --- a/kernel-4.15.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff -ur lin_tape-3.0.23/upper.c lin_tape-3.0.23.iov/upper.c ---- lin_tape-3.0.23/upper.c 2018-04-07 22:18:09.417415364 +0200 -+++ lin_tape-3.0.23.iov/upper.c 2018-04-07 22:19:26.582769230 +0200 -@@ -388,6 +388,22 @@ - if (hdr->iovec_count) { - const int size = sizeof(struct sg_iovec) * hdr->iovec_count; - size_t iov_data_len; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) -+ struct iov_iter i; -+ -+ sg_iov = kmalloc(size, GFP_KERNEL); -+ if (!sg_iov) { -+ ret = -ENOMEM; -+ goto out; -+ } -+ -+ ret = import_iovec(hdr->dxfer_direction == SG_DXFER_TO_DEV ? WRITE : READ, hdr->dxferp, hdr->iovec_count, 0, (struct iovec **)&sg_iov, &i); -+ if (ret < 0) -+ goto out; -+ -+ iov_iter_truncate(&i, hdr->dxfer_len); -+ iov_data_len = hdr->dxfer_len; -+#else - struct iovec *iov; - int i; - -@@ -426,6 +442,7 @@ - hdr->dxfer_len); - iov_data_len = hdr->dxfer_len; - } -+#endif - - pfo_cmd.buffer = sg_iov; - pfo_cmd.bufflen = iov_data_len; diff --git a/kernel-4.17.patch b/kernel-4.17.patch deleted file mode 100644 index 3902b9d..0000000 --- a/kernel-4.17.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- lin_tape-3.0.23/intercept.c~ 2018-06-18 19:40:39.000000000 +0200 -+++ lin_tape-3.0.23/intercept.c 2018-06-18 19:43:27.059968542 +0200 -@@ -1365,7 +1365,11 @@ - /* Only for fo devices */ - /* This 'if' must match the one above in create unique */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0) -+ sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE, NULL); -+ #else - sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE); -+ #endif - __scsi_init_queue(sdev->host, sdev->request_queue); - #else - sdev->request_queue = __scsi_alloc_queue(sdev->host, NULL); diff --git a/kernel-4.19.patch b/kernel-4.19.patch deleted file mode 100644 index 4a06007..0000000 --- a/kernel-4.19.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- lin_tape-3.0.33/lower.c.orig 2018-10-27 12:12:06.000000000 +0200 -+++ lin_tape-3.0.33/lower.c 2018-10-27 14:11:03.207396481 +0200 -@@ -276,8 +276,13 @@ - pfo_cmd->bufflen, local_raw_sense, pfo_cmd->timeout, - pfo_cmd->retries, pfo_cmd->flags, &pfo_cmd->resid_len); - #else -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0) - pfo_cmd->bufflen, local_raw_sense, &local_sense_data, pfo_cmd->timeout, - pfo_cmd->retries, pfo_cmd->flags, 0, &pfo_cmd->resid_len); -+#else -+ pfo_cmd->bufflen, NULL, &local_sense_data, pfo_cmd->timeout, -+ pfo_cmd->retries, pfo_cmd->flags, 0, &pfo_cmd->resid_len); -+#endif - #endif - } else { - /* SCSI Command from user space */ -@@ -291,8 +296,12 @@ - scsi_device_put(sdev); - unlock_apfo_path(path_num); - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0) - valid_sense = scsi_normalize_sense(local_raw_sense, - SCSI_SENSE_BUFFERSIZE, &local_sense_data); -+#else -+ valid_sense = scsi_sense_valid(&local_sense_data); -+#endif - /* Put the SCSI command results in the structure */ - pfo_cmd->errors = result; - pfo_cmd->scsi_status_code = result & 0xff; diff --git a/kernel-5.0.patch b/kernel-5.0.patch index 73ae7e3..5bad8f6 100644 --- a/kernel-5.0.patch +++ b/kernel-5.0.patch @@ -1,9 +1,9 @@ --- lin_tape-3.0.33/lin_tape_ioctl_tape.c~ 2019-03-10 18:06:13.000000000 +0100 +++ lin_tape-3.0.33/lin_tape_ioctl_tape.c 2019-03-10 18:11:48.544963300 +0100 @@ -23,6 +23,7 @@ - #include "lin_tape_timeout_tape.h" #include "ibmekm/inc/dd_event.h" #include "lin_tape_scsi_tape.h" + #include +#include /***************************************************************************** @@ -42,14 +42,3 @@ /* tv.sec in structure timeval is a "long" integer * it has 4 bytes in 32-bit kernel, but 8 bytes in 64-bit kernel ---- lin_tape-3.0.33/intercept.c~ 2019-03-10 18:13:48.000000000 +0100 -+++ lin_tape-3.0.33/intercept.c 2019-03-10 18:16:23.483059816 +0100 -@@ -1362,7 +1362,7 @@ - /* Only for fo devices */ - /* This 'if' must match the one above in create unique */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -- #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0) -+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0) && LINUX_VERSION_CODE < KERNEL_VERSION(5,0,0) - sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE, NULL); - #else - sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE); diff --git a/kernel-5.6.patch b/kernel-5.6.patch new file mode 100644 index 0000000..651d11e --- /dev/null +++ b/kernel-5.6.patch @@ -0,0 +1,150 @@ +--- lin_tape-3.0.52/lin_tape_scsi_config.h~ 2020-03-05 19:43:09.000000000 +0100 ++++ lin_tape-3.0.52/lin_tape_scsi_config.h 2020-04-04 21:53:09.046695460 +0200 +@@ -223,6 +223,7 @@ + { + return single_open(file, tape_read_proc, NULL); + } ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) + static struct file_operations tape_proc_ops = { + .owner = THIS_MODULE, + .open = tape_open_proc, +@@ -230,6 +231,14 @@ + .llseek = seq_lseek, + .release = single_release, + }; ++#else ++static struct proc_ops tape_proc_ops = { ++ .proc_open = tape_open_proc, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release, ++}; ++#endif + #endif + + int rd_pc_initial +@@ -255,6 +264,7 @@ + { + return single_open(file, changer_read_proc, NULL); + } ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) + static struct file_operations changer_proc_ops = { + .owner = THIS_MODULE, + .open = changer_open_proc, +@@ -262,6 +272,14 @@ + .llseek = seq_lseek, + .release = single_release, + }; ++#else ++static struct proc_ops changer_proc_ops = { ++ .proc_open = changer_open_proc, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release, ++}; ++#endif + #endif + + static int status_read_proc +@@ -273,6 +291,7 @@ + { + return single_open(file, status_read_proc, NULL); + } ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) + static struct file_operations status_proc_ops = { + .owner = THIS_MODULE, + .open = status_open_proc, +@@ -280,6 +299,14 @@ + .llseek = seq_lseek, + .release = single_release, + }; ++#else ++static struct proc_ops status_proc_ops = { ++ .proc_open = status_open_proc, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release, ++}; ++#endif + #endif + + int rdstatus_pc_initial +--- lin_tape-3.0.52/lin_tape_ioctl_tape.c~ 2020-03-05 19:43:09.000000000 +0100 ++++ lin_tape-3.0.52/lin_tape_ioctl_tape.c 2020-04-04 22:13:44.016713929 +0200 +@@ -25,6 +25,16 @@ + #include "lin_tape_scsi_tape.h" + #include + ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) ++struct lin_tape_timeval { ++ __kernel_long_t tv_sec; ++ __kernel_suseconds_t tv_usec; ++}; ++#else ++#define lin_tape_timeval timeval ++#endif ++ + /***************************************************************************** + * * + * Tape Drive Ioctls * +@@ -2794,7 +2804,7 @@ + + ssize_t tape_set_tod(struct tape_descriptor** drvp) + { +- struct timeval* tv = NULL; ++ struct lin_tape_timeval* tv = NULL; + struct tod_control* buffer = NULL; + struct tape_descriptor *drv = *drvp; + int now = 0, rc = STATUS_SUCCESS; +@@ -2810,20 +2820,20 @@ + goto EXIT_LABEL; + } /* if */ + +- tv = kmalloc(sizeof(struct timeval), GFP_KERNEL); ++ tv = kmalloc(sizeof(struct lin_tape_timeval), GFP_KERNEL); + if(!tv) { + rc = -ENOMEM; + goto EXIT_LABEL; + } /* if */ + + memset(buffer, '\0', sizeof(struct tod_control)); +- memset(tv, '\0', sizeof(struct timeval)); ++ memset(tv, '\0', sizeof(struct lin_tape_timeval)); + + rc = tape_modesense_page(&drv, TODControlPageNumber, (unchar*)buffer, + sizeof(struct tod_control), True, True); + if(rc != STATUS_SUCCESS) goto EXIT_LABEL; + +- memset(tv, '\0', sizeof(struct timeval)); ++ memset(tv, '\0', sizeof(struct lin_tape_timeval)); + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) + do_gettimeofday(tv); + #else +@@ -8930,7 +8940,7 @@ + + int erp_tod(struct tape_descriptor* drv, union cdb* tmp_cdb, char* sense_data) + { +- struct timeval* tv = NULL; ++ struct lin_tape_timeval* tv = NULL; + struct tod_control* tod_buf = NULL; + int now = 0, rc = -EIO; + +@@ -8940,7 +8950,7 @@ + goto EXIT_LABEL; + } /* if */ + +- tv = kmalloc(sizeof(struct timeval), GFP_KERNEL); ++ tv = kmalloc(sizeof(struct lin_tape_timeval), GFP_KERNEL); + if(!tv) { + rc = -ENOMEM; + goto EXIT_LABEL; +@@ -8951,7 +8961,7 @@ + if(rc != STATUS_SUCCESS) goto EXIT_LABEL; + + /* get time info to set TOD */ +- memset(tv, '\0', sizeof(struct timeval)); ++ memset(tv, '\0', sizeof(struct lin_tape_timeval)); + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) + do_gettimeofday(tv); + #else diff --git a/lin_tape.fixlist b/lin_tape.fixlist index 526d7ad..1ec4148 100644 --- a/lin_tape.fixlist +++ b/lin_tape.fixlist @@ -1,313 +1,369 @@ -Fixlist for Linux IBM Tape Device Driver (lin_tape) - -(C) Copyright IBM Corporation 2007-2017 - - Level Date Description ---------------------------------------------------------------- -3.0.23 11/03/2017 - Initial support for RHEL 6.9 (min. kernel version 2.6.32-696) - - Support for LTO8 - - Fix for reservation conflict when reserve_6 used - - Fix for failover after device rediscovery (introduced at 3.0.20) - - Fix for device name after removal (introduced at 3.0.20) - - Fix for read with resid through join interface -3.0.21 09/14/2017 - Fix to process sense data from srb combination flags - - Enhancement to not attempt failover when only one path left - - Fix for crash on concurrency (multiple process attempting to use the same device in stress scenario) - - Fix for returning ENXIO instead attempting failover (introduced at 3.0.20) - - Join driver to retry attachment on LUN not serlf configured -3.0.20 06/09/2017 - Reincorporated join driver (lin_tape_as_sfmp) with new build flag: -with sfmp - - Work around for wrong SN reported by Inq. page 80h after failback - - Fix for crash when HBA driver removed before lin_tape - - Fix for mismatching device SN on failback - - Fix for busy waits - - Fix for file systems removals - - Fix for file systems attributes names - - Fix for column width at /proc/IBM for SN - - Initial support for SLES 12 SP2 (min. kernel version 4.4.21-69) - - Initial support for RHEL 7.3 (min. kernel version 3.10.0-514) - - Initial support for RHEL 7.3 Power LE (min. kernel version 3.10.0-514) - - Support for TS4300 -3.0.18 03/08/2017 - Prevent crash from double delete objects on removal during wait scenarios (introduced at 2.2.0) - - lin_tape_as_sfmp not supported in this version - - Installation for blacklist.conf enhancements - - Support for TS1155 -3.0.16 01/06/2017 - Prevent crash introduced at 1.75.0 cleaning buffern and length on WRA during open - - Prevent lock/crash introduced at 1.75.0 when device removal during open - - Added dualaccesor_cpf for TSLM usage - - Enhancement to installer to prevent blacklisting st and sg linux modules -3.0.13 11/11/2016 - Fix for passthru error recovery after EOD detected - - Fixes for device removal during wait causing lock or crash - - Fix to prevent lock over lock at scatter/gather when running with low memory - - Updates on daemon configuration parameters naming to match lin_taped.conf with IUG instructions - - Added daemon parameter TapeDevPermissions to lin_taped.conf -3.0.12 08/19/2016 - Fix for lin_tape_as_sfmp attachment on kenrnels 3.10.0 and beyond - - Enhancement on lin_tape_as_sfmp installation -3.0.11 08/08/2016 - Added join driver back - - Fixed multiple kernel dependencies for join - - Enhancement on join install - - Fix on join driver for scsi rescan -3.0.10 06/03/2016 - Removed join driver - - New OEM library support - - Initial support for RHEL 6.8 (min. kernel version 2.6.32-642) - - Initial support for RHEL 7.2 (min. kernel version 3.10.0-327) -3.0.8 03/16/2016 - Prevent segfault at daemon - - Fix for pfo device discovery at 390x arch. -3.0.7 02/23/2016 - Prevent crash from st/sg failover - - Added reserve type to STIOCQRYP - - Enabled SIOC_LOG_SENSE10 for changer - - Added special open for preemption - - Enabled TSM QUERY PR KEY for normal open - - Fix for join build -3.0.6 02/26/2016 - Introduction of join driver (lin_tape_as_sfmp) -3.0.5 01/06/2016 - Fix to track LBP state - - Prevent null pointer from scsi device - - Fix for HBA call to restore LBP after failover -3.0.3 11/06/2015 - Removed warnings for big-endian introduced at 3.0.1 - - Fix for hardcoded serial number length in daemon - - Build/Install enhacements -3.0.2 09/11/2015 - Retry Abort 4b/06 - - Fix for changer lock - - Enhancement to disable autodump for all at once - - Initial support for SLESS11 SP4 (min. kernel version 3.0.101-63) -3.0.1 08/25/2015 - Fix for RAO IOCTL's - - Increased retry time for 2/3E/0 - - Support for LTO7 -3.0.0 06/26/2015 - Fix for pages leak at s/g ops - - Initial support for RHEL 7.1 (min. kernel version 3.10.0-229) - - Initial support for RHEL 6.7 (min. kernel version 2.6.32-573) -2.9.9 06/16/2015 - Fix for lock during autodump loop - - Enhancement for bs>1M at kernels>2.6.29 - - Fix for pages leak at s/g - - Return ENOMEM instead of EIO from lin_tape_blk_req -2.9.8 05/08/2015 - Prevent cdev call with null pointer -2.9.7 04/28/2015 - 3592 WDRA timout increased to 5 min - - Removed enhancement to handle lot of - removals due to lock and crash, - wait_on_config should be used instead -2.9.6 03/24/2015 - Removed printk at qry_blk_prot - - Fix for SN/CPF alignment on SN>16 - - Fix for page order adjustment that caused - data corruption at 2.9.5 (only blocksize > - 1M and kernel >= 2.6.29) - - Daemond enhancement to handle lot of - removals - - Write lock hang during autodump and s/g - - Fix for 3592/E08 generation id - - Initial support for RHEL 6.6 (min. kernel version 2.6.32-504.8.1) -2.9.5 01/15/2015 - Adjustment to page order for r/w -2.9.4 12/05/2014 - Support for 3592/E08 - - Fixes to multiple partition sizing - - Fix to return rc on failed set active partition - - Fix on failover enablement for SN > 16 - - Added enablement for select OEM libraries - - Initial support for RHEL 7 (min. kernel version 3.10.0-123) -2.9.3 10/27/2014 - Enhancement for SN/CPF gather - - Fix for dump ready when s/g -2.9.2 08/26/2014 - Fix for partitioning PSUM and POFM bits - - Fix for TSM enh inventory media type - - RHEL 7 (min. kernel version 3.10.0-123) -2.9.1 07/28/2014 - Fix for chgr cmd call during device removal - - Fix for tracing during device removal - - Fixes for PR IOCTL's -2.9.0 06/29/2014 - RAO SA update and LBP CRC32C added -2.8.0 05/28/2014 - Enhancements to busy_retry -2.7.0 05/15/2014 - fixes for s/g on authomatic dump - - fix for STIOCSETP on LWP set - - Initial support for RHEL 6.5 (min. kernel version 2.6.32-431) -2.6.0 02/17/2014 - Added Recommend Access Order (RAO) - - noreserve changer default for failover -2.5.0 01/14/2014 - Added SIOC_ENH_LOG_SENSE - - Initial support for SLES11 SP3 (min kernel version 3.0.79-0.11) -2.4.0 12/18/2013 - Added Scatter/Gather for operations use. -2.3.0 10/01/2013 - Initial support for RHEL 6.4 (kernel version 2.6.32-358.18.1.el6) - - Changed some indirection to double - indirection for CPF - - Rerouted some changer commands to go - through the changer queue - - Added debug tracing for the changer queue -2.2.0 08/06/2013 - Added optional persistent_n_device - parameter to enable the ability to - persistent name non rewind open. -2.1.0 06/11/2013 - Added busy_retry for TSM - - Added ability to take log sense size - desired for ITDT - - Added definition to IBM_tape.h MTWEOFI - - Changed default for Jag cartridge to 6 -2.0.0 05/22/2013 - Removed flushing buffer on setposition -1.76.0 10/22/2012 - Failover fix for bug introduced in 1.75.0 - - Initial support for RHEL 5.9 (min kernel version 2.6.18-348) -1.75.0 10/17/2012 - Implemented Dynamic Runtime Attributes - - Fixed host reboot on microcode load of TS3310 - - Fixed crash on drive cable pull -1.74.0 08/21/2012 - Support for 64-bit position counters - - Fix bug in /proc/scsi/IBMchanger with many changers - - Fix to changer open count when close fails -1.73.0 05/29/2012 - Allow option for setting TSM 3592 barcode to length 8 - - Fix for SLES 11 SP2 hang on failback - - Initial support for SLES11 SP2 (min kernel version 3.0.13-0.27) -1.72.0 05/22/2012 - Increase inquiry timeout to 180 for rediscovered device - - Fix lin_taped crash on SAS rediscovered dvc, RH 5 & 6 -1.71.0 05/07/2012 - Eliminate multiple "REMOVED" devices on failback - - Implement MTWEOFI (write filemarks with immed=1) - - Fix bug on reading prog. early warning parameter - - Fix potential failover bugs on read and write -1.70.0 04/20/2012 - Fix crash on SLES 11 SP2 when offline device returns - - Eliminate excessive trailing spaces in read proc - - Increased inquiry timeout to three min. for failover -1.69.0 04/13/2012 - Fix infinite loop on read proc with small buffer size - - Eliminate excessive print on unsuccessful key registration -1.68.0 03/13/2012 - Support for LTO 6 media types - - Fix for crash in tape_read_proc and changer_read_proc - - Data direction in failover set position from OUT to NONE -1.67.0 02/06/2012 - Implemented Programmable Early Warning - - Implemented general Mode Sense function - - Implemented Verify Data - - Initial support for SLES 11 SP2 - - Added LTO 6 inquiry strings -1.66.0 12/08/2011 - Prevent BUSY return status in multiple open changer -1.65.0 11/15/2011 - Change final PREEMPT to PREEMPT_AND_ABORT for DPF -1.64.0 11/04/2011 - Serialize IO for two instances of open changer (crash fix) -1.63.0 11/02/2011 - Catch failover case at beginning of IO requests -1.62.0 10/14/2011 - Call malloc before lock acquisition in load_unload - - Unit attention and DPF handling for PREVENT_MEDIUM_REMOVAL - - STIOCP: supply missing sili bit case - - reallocate changer data if missing at start of IOCTL - - Change remaining ENOMEM to EOVERFLOW in overlength read - - Allow removal of lin_taped if not running -1.61.0 09/26/2011 - Allow for short erase in STERASE - - Fix for crash when HBA driver uninstalled w/ alt_pathing -1.60.0 09/12/2011 - Fix sense copy error by accounting for DID_TARGET_FAILURE - - Fix CPF/DPF error introduced in 1.58.0 in ERP function -1.59.0 08/25/2011 - Fix for read loop error with SILI bit on -1.58.0 08/12/2011 - Implementation of log sense page with subpage support - - Added eot warning IOCTLs - - Made READ SILI bit a changeable parameter - - Change overlength read rc from ENOMEM to EOVERFLOW - - Reset logical block protection on failover -1.57.0 07/15/2011 - Fix for timeout error introduced in 1.56.0 - - Allow option for a SLES 11 and higher "supported" build -1.56.0 07/11/2011 - Fix handling of deferred EOM flag - - Update changer timeouts to 900 -1.55.0 06/17/2011 - Fix for structure size in logical block protection IOCTLs - - Fix for invalid data returned with max modesense length - - Introduce count to track number of open changer instances -1.54.0 05/05/2011 - Updated erase timeout for Jag4 -1.53.0 04/13/2011 - Fix for crash when drive is power cycled while open -1.52.0 04/01/2011 - Clear flags on lin_tape_flush for future opens - - Remove check of open/busy flags during changer open -1.51.0 02/18/2011 - Send TUR on CPF to clear RS-422 failure unit attention - - Correlate device number with SCSI address in /proc/scsi - - Fix seg fault with pseudo dvc when HBA driver uninstalled - - Provide a method to disable setting density on open -1.50.0 01/25/2011 - Reduce size of kernel mem allocs to avoid alloc failure - - Support for get/set block-level data protection (3592-E07) -1.49.0 12/15/2010 - Support for RHEL 6 - - Implementation of partitioning for 3592-E07 - - Fix for CPF error due to incorrect sense data returned -1.48.0 11/11/2010 - Return correct mt device number from MTDEVICE IOCTL -1.47.0 11/10/2010 - Fix for host hang in ERP -1.46.0 11/03/2010 - Fix for drives becoming unavailable after software reset -1.45.0 10/26/2010 - Fix CPF failure with cable pull before IO -1.44.0 10/18/2010 - Fix for crash when drive is reset during tape ops (zLinux) -1.43.0 10/01/2010 - Fix for crash when drive is reset during tape ops (pLinux) -1.42.0 07/20/2010 - Reduce size of stchgp_s struct to match user space struct -1.41.1 06/24/2010 - Fix for memory leak/crash in SLES 11 sp1 -1.40.0 06/02/2010 - Increased page order on read-write in SLES 11 sp1 - - Fixed infinite read loop on read failure -1.39.0 05/06/2010 - Support for SLES 11 SP 1 -1.38.0 04/13/2010 - LTO 5 extended postitioning IOCTLs - - Release descriptor lock before IO on init to avoid hang -1.37.0 03/15/2010 - Set Dynamic Runtime Attributes - - Removed persistent naming script in favor of new method - - Fix for duplicate changers in /proc/scsi/IBMchanger -1.36.0 03/02/2010 - Failover changes to support WORM and Data Safe Mode - - Fix for EFAULT (Bad address) error on read -1.35.0 02/19/2010 - Fix for corruption on std write followed by passthru read -1.34.0 02/15/2010 - Fix for I/O errors on zLinux, LTO 5 -1.33.0 02/02/2010 - LTO 5 updates -1.32.0 12/30/2009 - Failover fixes -1.31.1 12/04/2009 - LTO 5 partitioning IOCTLs - - Fixes for SLES 11 failover -1.30.0 11/20/2009 - lin_taped multiple pid fix -1.29.0 10/26/2009 - SLES 11 failover implementation -1.28.0 09/02/2009 - SLES 11 device removal/reinitialization fix -1.27.0 08/25/2009 - Fix for failover failure error on SLES 10 & RHEL 4 -1.26.2 08/04/2009 - Fix for crashes on RHEL 4.7 and SLES 11 -1.25.0 06/23/2009 - Fix for scatter-gather page offset bug on PPC64 SLES11 - - Added IOCTLs for persistent reserve -1.24.0 02/23/2009 - Support for SLES 11, kernel 2.6.27 - - Fix for CPF configuration bug introduced in 1.23.0 -1.23.0 01/19/2009 - CPF crash fix: cable pull/uninstall/reinstall sequence - - Boundary check for max failover paths -1.22.0 11/25/2008 - Fix for crash in RHEL 4.7 - - Updates for kernels >= 2.6.24 - - DPF crash fix: cable pull/uninstall/reinstall sequence -1.21.0 10/23/2008 - Reserve logging - - Add "primary_path" parameter for udev -1.20.0 10/15/2008 - read_cartridge_location to block transfers into at most - 600 elements -1.19.0 09/15/2008 - IBMtapeutil fix for read_cartridge_location -1.18.0 08/22/2008 - Fix for struct device attribute in kernels >= 2.6.13 -1.17.0 08/06/2008 - Add udev "dev" file for medium changers in - kernels < 2.6.5 or > 2.6.15 -1.16.0 06/27/2008 - Change GFP_ATOMIC allocations to GFP_KERNEL - - Support for the 3592-E06 - - Fix lin_taped restart crash after failback -1.15.0 05/21/2008 - Release source RPM - - Update 3572 inquiry string to 3572-TL -1.14.0 04/30/2008 - Make module parameters read/writable - - Fix for CPF key check on CVT -1.13.0 03/27/2008 - Support for 3572 -1.12.1 03/07/2008 - Fixed hang introduced in 1.12.0 -1.12.0 02/26/2008 - Created "dev" file in sysfs class directory for - udev & udevinfo support - - Changed 3592 (E05) references to support models beyond E05 -1.11.0 12/11/2007 - Fixed seg fault when a logical dvc is accidentally removed - - Fixed return code for SIOC_PASS_THROUGH - - Implemented read cartridge location IOCTL - - Removed WWNN filter check for DPF entitlement -1.10.0 10/01/2007 - Increaded timeout for best path selection - - Fixed delete_parms_on_device() for failover - - Fixed return code for SIOC_PASS_THROUGH - - Fixed maximum scsi transfer size for - - running on RHEL5/SLES10 SP1 on IA64 - - Increased max log sense length -1.9.0 08/20/2007 - Added persistent naming support for RHEL5 and SLES10 - - Increased maximum supported tape drives from 256 to 1024 -1.8.0 07/26/2007 - Support LTO4 HH -1.7.1 08/06/2007 - Fixed max scsi transfer size for RHEL5 on System Z -1.7.0 07/03/2007 - Fix max scsi transfer size and sg for RHEL5 and SLES10 SP1 - - Added MODULE_VERSION and MODULE_PARM_DESC for driver parms - - Added warning message to syslog if release fails on close - - Added wait_on_config driver parameter - - Removed unnecessary messages from lin_tape.errorlog - - Fixed 3592 density recovery on failover -1.6.0 05/22/2007 - Remove registered key if persistent reservation - preemption fails during failover - - Fixed read memory allocation on fixed block size -1.5.0 04/30/2007 - Fixed the residual count for RHEL5 - - Support SLES10 SP1 -1.4.0 04/30/2007 - Removed unwanted debug messages for direct I/O -1.3.0 04/12/2007 - Fix system-managed encryption for LTO4 - - Support for SIOC_PASS_THROUGH ioctl - - Support direct I/O - - Add driver attributes default_sys_encryption_proxy/write -1.2.0 04/02/2007 - Support RHEL5 - - Fix for ENOMEM on medium changer inventory with large - number of slots -1.1.0 03/13/2007 - Application-managed encryption now enabled correctly - - Fix for crash during CPF (when command never succeeds) - - Fix for DPF license key validation for TS3200 library - - Fix for daemon crash during data-path failover validation -1.0.9 02/19/2007 - Fix for hang when loading lin_tape - - Fix for hang when removing module on SLES9 -1.0.8 02/09/2007 - Fixes for system-managed encryption - - Support for LTO4 encryption - - Fix for data-path-failover on TS3200 - - Fix for hang when running stress tests to multiple devices - - Support for Asianux 2.0 -1.0.7 01/18/2007 - Fix for hang on RHEL4 and SLES9 when loading the driver -1.0.6 01/05/2007 - Support for 3577, LTO4, and system-managed encryption - - Support for RHEL4 and SLES9 - - Fix for crash on read or write to changer -1.0.5 09/29/2006 - Initial release +Fixlist for Linux IBM Tape Device Driver (lin_tape) + +(C) Copyright IBM Corporation 2007-2019 + + Level Date Description +--------------------------------------------------------------- +3.0.52 03/17/2020 - Initial support for RHEL 8.1 (min. kernel version 4.18.9.147) + - Initial support for SLES 12 SP5 (min. kernel version 4.12.14-122) + - Workaround for scsi request not detecting/reporting path down on RHEL 8.x +3.0.51 02/21/2020 - Fix for keeping track of reservation after failover + - Fix for sg lock on RHEL7 + - Fix for possible lock on device unconfig + - Fix for drive dumps file names + - Adjustment for LTO erase time out + - Enhancement for install script +3.0.48 11/01/2019 - Initial support for RHEL 7.7 (min. kernel version 4.14.0-115 on Power and 3.10.0-1062 on Intel) +3.0.48 09/18/2019 - Initial support for RHEL 8 (min. kernel version 4.18.0-80) + - Initial support for SLES 15 SP1 (min. kernel version 4.12.14-197.1) + - Fix for crash when all paths removed during load balancing + - Fix for null pointer on join with devices with alternate path disabled +3.0.46 07/31/2019 - General change for lock handling and devices table + - Fix on daemon null pointer + - Retry on unit attention and not ready sense on attachment + - Daemon signal blocking fix + - Introduced systemd (on RHEL 7, SLES 12 and SLES 15) + - Fix for daemon not processing commands when removal in progress + - Support flag for SLES + - Initial support for SLES 12 SP4 (min. kernel version 4.12.14-94.41 x86_64, ppc64le and s390x) +3.0.39 02/18/2019 - Initial support for RHEL 7.6 (min. kernel version 3.10.0-957.1.3 only) +3.0.39 02/18/2019 - Initial support for SLES 12 SP4 (min. kernel version 4.12.14-94.41 ppc64le and s390x only) +3.0.39 12/06/2018 - Initial support for TS1160 + - Initial support for RHEL 6.10 (min. kernel version 2.6.32-754 ppc64le and x86_64 only) + - Initial support for Ubuntu 18.04 (min. kernel 4.15.0.34 only on ppc64le and x86_64) + - Initial support for SLES 15 (min. kernel 4.12.14-23.1 only on ppc64le and s390x) + - Fix for soft lock on rescan + - Fix for udev attributes + - New Archive Mode Unthread ioctls +3.0.33 07/27/2018 - Initial support for RHEL 7.5 (min. kernel version 3.10.0-862 only on ppc64le and x86_64) + - Initial support for Ubuntu 16.04.3 (min. kernel 4.4.0-87 Only on x86_64) + - Fixed bug on CPF failing over a different device + - Reduced removal waiting when device busy + - Added runtime attribute PID + - Fix for double lock on rescan +3.0.32 06/07/2018 - Support for SLES 12 SP3 on kernels beyond 4.4.114 + - Fix for lock condition introduced at 3.0.30 when attempt to open a device busy + - Fox for join driver to return sense data after CPF event +3.0.31 04/26/2018 - Initial support for SLES 12 SP3 (min. kernel version 4.4.114-94) +3.0.30 04/11/20185 - Fixes on join some with crash potential during failover + - Fix for join driver returning ENXIO on open + - Fix for memory leak on join interfaces + - Fix for Verify and extended read position application interface for missmatching endianness + - Fix for logging when daemon stopped + - Fix for race condition + - Fix and enhancements for device removal + - Fix for hang introduced at 3.0.20 on device removal during IO + - Enhancements for daemon excess loop during failvoer + - Fix for interlock of daemon with crash potential + - Stop waiting when device gone detected + - Work around ERP TOD from drive sense data parameter rounded + - Fix to not use the device object once driver released + - Removed small unporected window on read proc +3.0.23 11/03/2017 - Initial support for RHEL 7.4 (min. kernel version 3.10.0-693 only on ppc64, ppc64le and x86_64) + - Initial support for RHEL 6.9 (min. kernel version 2.6.32-696) + - Support for LTO8 + - Fix for reservation conflict when reserve_6 used + - Fix for failover after device rediscovery (introduced at 3.0.20) + - Fix for device name after removal (introduced at 3.0.20) + - Fix for read with resid through join interface +3.0.21 09/14/2017 - Fix to process sense data from srb combination flags + - Enhancement to not attempt failover when only one path left + - Fix for crash on concurrency (multiple process attempting to use the same device in stress scenario) + - Fix for returning ENXIO instead attempting failover (introduced at 3.0.20) + - Join driver to retry attachment on LUN not serlf configured +3.0.20 06/09/2017 - Reincorporated join driver (lin_tape_as_sfmp) with new build flag: -with sfmp + - Work around for wrong SN reported by Inq. page 80h after failback + - Fix for crash when HBA driver removed before lin_tape + - Fix for mismatching device SN on failback + - Fix for busy waits + - Fix for file systems removals + - Fix for file systems attributes names + - Fix for column width at /proc/IBM for SN + - Initial support for SLES 12 SP2 (min. kernel version 4.4.21-69) + - Initial support for RHEL 7.3 (min. kernel version 3.10.0-514) + - Initial support for RHEL 7.3 Power LE (min. kernel version 3.10.0-514) + - Support for TS4300 +3.0.18 03/08/2017 - Prevent crash from double delete objects on removal during wait scenarios (introduced at 2.2.0) + - lin_tape_as_sfmp not supported in this version + - Installation for blacklist.conf enhancements + - Support for TS1155 +3.0.16 01/06/2017 - Prevent crash introduced at 1.75.0 cleaning buffern and length on WRA during open + - Prevent lock/crash introduced at 1.75.0 when device removal during open + - Added dualaccesor_cpf for TSLM usage + - Enhancement to installer to prevent blacklisting st and sg linux modules +3.0.13 11/11/2016 - Fix for passthru error recovery after EOD detected + - Fixes for device removal during wait causing lock or crash + - Fix to prevent lock over lock at scatter/gather when running with low memory + - Updates on daemon configuration parameters naming to match lin_taped.conf with IUG instructions + - Added daemon parameter TapeDevPermissions to lin_taped.conf +3.0.12 08/19/2016 - Fix for lin_tape_as_sfmp attachment on kenrnels 3.10.0 and beyond + - Enhancement on lin_tape_as_sfmp installation +3.0.11 08/08/2016 - Added join driver back + - Fixed multiple kernel dependencies for join + - Enhancement on join install + - Fix on join driver for scsi rescan +3.0.10 06/03/2016 - Removed join driver + - New OEM library support + - Initial support for RHEL 6.8 (min. kernel version 2.6.32-642) + - Initial support for RHEL 7.2 (min. kernel version 3.10.0-327) +3.0.8 03/16/2016 - Prevent segfault at daemon + - Fix for pfo device discovery at 390x arch. +3.0.7 02/23/2016 - Prevent crash from st/sg failover + - Added reserve type to STIOCQRYP + - Enabled SIOC_LOG_SENSE10 for changer + - Added special open for preemption + - Enabled TSM QUERY PR KEY for normal open + - Fix for join build +3.0.6 02/26/2016 - Introduction of join driver (lin_tape_as_sfmp) +3.0.5 01/06/2016 - Fix to track LBP state + - Prevent null pointer from scsi device + - Fix for HBA call to restore LBP after failover +3.0.3 11/06/2015 - Removed warnings for big-endian introduced at 3.0.1 + - Fix for hardcoded serial number length in daemon + - Build/Install enhacements +3.0.2 09/11/2015 - Retry Abort 4b/06 + - Fix for changer lock + - Enhancement to disable autodump for all at once + - Initial support for SLESS11 SP4 (min. kernel version 3.0.101-63) +3.0.1 08/25/2015 - Fix for RAO IOCTL's + - Increased retry time for 2/3E/0 + - Support for LTO7 +3.0.0 06/26/2015 - Fix for pages leak at s/g ops + - Initial support for RHEL 7.1 (min. kernel version 3.10.0-229) + - Initial support for RHEL 6.7 (min. kernel version 2.6.32-573) +2.9.9 06/16/2015 - Fix for lock during autodump loop + - Enhancement for bs>1M at kernels>2.6.29 + - Fix for pages leak at s/g + - Return ENOMEM instead of EIO from lin_tape_blk_req +2.9.8 05/08/2015 - Prevent cdev call with null pointer +2.9.7 04/28/2015 - 3592 WDRA timout increased to 5 min + - Removed enhancement to handle lot of + removals due to lock and crash, + wait_on_config should be used instead +2.9.6 03/24/2015 - Removed printk at qry_blk_prot + - Fix for SN/CPF alignment on SN>16 + - Fix for page order adjustment that caused + data corruption at 2.9.5 (only blocksize > + 1M and kernel >= 2.6.29) + - Daemond enhancement to handle lot of + removals + - Write lock hang during autodump and s/g + - Fix for 3592/E08 generation id + - Initial support for RHEL 6.6 (min. kernel version 2.6.32-504.8.1) +2.9.5 01/15/2015 - Adjustment to page order for r/w +2.9.4 12/05/2014 - Support for 3592/E08 + - Fixes to multiple partition sizing + - Fix to return rc on failed set active partition + - Fix on failover enablement for SN > 16 + - Added enablement for select OEM libraries + - Initial support for RHEL 7 (min. kernel version 3.10.0-123) +2.9.3 10/27/2014 - Enhancement for SN/CPF gather + - Fix for dump ready when s/g +2.9.2 08/26/2014 - Fix for partitioning PSUM and POFM bits + - Fix for TSM enh inventory media type + - RHEL 7 (min. kernel version 3.10.0-123) +2.9.1 07/28/2014 - Fix for chgr cmd call during device removal + - Fix for tracing during device removal + - Fixes for PR IOCTL's +2.9.0 06/29/2014 - RAO SA update and LBP CRC32C added +2.8.0 05/28/2014 - Enhancements to busy_retry +2.7.0 05/15/2014 - fixes for s/g on authomatic dump + - fix for STIOCSETP on LWP set + - Initial support for RHEL 6.5 (min. kernel version 2.6.32-431) +2.6.0 02/17/2014 - Added Recommend Access Order (RAO) + - noreserve changer default for failover +2.5.0 01/14/2014 - Added SIOC_ENH_LOG_SENSE + - Initial support for SLES11 SP3 (min kernel version 3.0.79-0.11) +2.4.0 12/18/2013 - Added Scatter/Gather for operations use. +2.3.0 10/01/2013 - Initial support for RHEL 6.4 (kernel version 2.6.32-358.18.1.el6) + - Changed some indirection to double + indirection for CPF + - Rerouted some changer commands to go + through the changer queue + - Added debug tracing for the changer queue +2.2.0 08/06/2013 - Added optional persistent_n_device + parameter to enable the ability to + persistent name non rewind open. +2.1.0 06/11/2013 - Added busy_retry for TSM + - Added ability to take log sense size + desired for ITDT + - Added definition to IBM_tape.h MTWEOFI + - Changed default for Jag cartridge to 6 +2.0.0 05/22/2013 - Removed flushing buffer on setposition +1.76.0 10/22/2012 - Failover fix for bug introduced in 1.75.0 + - Initial support for RHEL 5.9 (min kernel version 2.6.18-348) +1.75.0 10/17/2012 - Implemented Dynamic Runtime Attributes + - Fixed host reboot on microcode load of TS3310 + - Fixed crash on drive cable pull +1.74.0 08/21/2012 - Support for 64-bit position counters + - Fix bug in /proc/scsi/IBMchanger with many changers + - Fix to changer open count when close fails +1.73.0 05/29/2012 - Allow option for setting TSM 3592 barcode to length 8 + - Fix for SLES 11 SP2 hang on failback + - Initial support for SLES11 SP2 (min kernel version 3.0.13-0.27) +1.72.0 05/22/2012 - Increase inquiry timeout to 180 for rediscovered device + - Fix lin_taped crash on SAS rediscovered dvc, RH 5 & 6 +1.71.0 05/07/2012 - Eliminate multiple "REMOVED" devices on failback + - Implement MTWEOFI (write filemarks with immed=1) + - Fix bug on reading prog. early warning parameter + - Fix potential failover bugs on read and write +1.70.0 04/20/2012 - Fix crash on SLES 11 SP2 when offline device returns + - Eliminate excessive trailing spaces in read proc + - Increased inquiry timeout to three min. for failover +1.69.0 04/13/2012 - Fix infinite loop on read proc with small buffer size + - Eliminate excessive print on unsuccessful key registration +1.68.0 03/13/2012 - Support for LTO 6 media types + - Fix for crash in tape_read_proc and changer_read_proc + - Data direction in failover set position from OUT to NONE +1.67.0 02/06/2012 - Implemented Programmable Early Warning + - Implemented general Mode Sense function + - Implemented Verify Data + - Initial support for SLES 11 SP2 + - Added LTO 6 inquiry strings +1.66.0 12/08/2011 - Prevent BUSY return status in multiple open changer +1.65.0 11/15/2011 - Change final PREEMPT to PREEMPT_AND_ABORT for DPF +1.64.0 11/04/2011 - Serialize IO for two instances of open changer (crash fix) +1.63.0 11/02/2011 - Catch failover case at beginning of IO requests +1.62.0 10/14/2011 - Call malloc before lock acquisition in load_unload + - Unit attention and DPF handling for PREVENT_MEDIUM_REMOVAL + - STIOCP: supply missing sili bit case + - reallocate changer data if missing at start of IOCTL + - Change remaining ENOMEM to EOVERFLOW in overlength read + - Allow removal of lin_taped if not running +1.61.0 09/26/2011 - Allow for short erase in STERASE + - Fix for crash when HBA driver uninstalled w/ alt_pathing +1.60.0 09/12/2011 - Fix sense copy error by accounting for DID_TARGET_FAILURE + - Fix CPF/DPF error introduced in 1.58.0 in ERP function +1.59.0 08/25/2011 - Fix for read loop error with SILI bit on +1.58.0 08/12/2011 - Implementation of log sense page with subpage support + - Added eot warning IOCTLs + - Made READ SILI bit a changeable parameter + - Change overlength read rc from ENOMEM to EOVERFLOW + - Reset logical block protection on failover +1.57.0 07/15/2011 - Fix for timeout error introduced in 1.56.0 + - Allow option for a SLES 11 and higher "supported" build +1.56.0 07/11/2011 - Fix handling of deferred EOM flag + - Update changer timeouts to 900 +1.55.0 06/17/2011 - Fix for structure size in logical block protection IOCTLs + - Fix for invalid data returned with max modesense length + - Introduce count to track number of open changer instances +1.54.0 05/05/2011 - Updated erase timeout for Jag4 +1.53.0 04/13/2011 - Fix for crash when drive is power cycled while open +1.52.0 04/01/2011 - Clear flags on lin_tape_flush for future opens + - Remove check of open/busy flags during changer open +1.51.0 02/18/2011 - Send TUR on CPF to clear RS-422 failure unit attention + - Correlate device number with SCSI address in /proc/scsi + - Fix seg fault with pseudo dvc when HBA driver uninstalled + - Provide a method to disable setting density on open +1.50.0 01/25/2011 - Reduce size of kernel mem allocs to avoid alloc failure + - Support for get/set block-level data protection (3592-E07) +1.49.0 12/15/2010 - Support for RHEL 6 + - Implementation of partitioning for 3592-E07 + - Fix for CPF error due to incorrect sense data returned +1.48.0 11/11/2010 - Return correct mt device number from MTDEVICE IOCTL +1.47.0 11/10/2010 - Fix for host hang in ERP +1.46.0 11/03/2010 - Fix for drives becoming unavailable after software reset +1.45.0 10/26/2010 - Fix CPF failure with cable pull before IO +1.44.0 10/18/2010 - Fix for crash when drive is reset during tape ops (zLinux) +1.43.0 10/01/2010 - Fix for crash when drive is reset during tape ops (pLinux) +1.42.0 07/20/2010 - Reduce size of stchgp_s struct to match user space struct +1.41.1 06/24/2010 - Fix for memory leak/crash in SLES 11 sp1 +1.40.0 06/02/2010 - Increased page order on read-write in SLES 11 sp1 + - Fixed infinite read loop on read failure +1.39.0 05/06/2010 - Support for SLES 11 SP 1 +1.38.0 04/13/2010 - LTO 5 extended postitioning IOCTLs + - Release descriptor lock before IO on init to avoid hang +1.37.0 03/15/2010 - Set Dynamic Runtime Attributes + - Removed persistent naming script in favor of new method + - Fix for duplicate changers in /proc/scsi/IBMchanger +1.36.0 03/02/2010 - Failover changes to support WORM and Data Safe Mode + - Fix for EFAULT (Bad address) error on read +1.35.0 02/19/2010 - Fix for corruption on std write followed by passthru read +1.34.0 02/15/2010 - Fix for I/O errors on zLinux, LTO 5 +1.33.0 02/02/2010 - LTO 5 updates +1.32.0 12/30/2009 - Failover fixes +1.31.1 12/04/2009 - LTO 5 partitioning IOCTLs + - Fixes for SLES 11 failover +1.30.0 11/20/2009 - lin_taped multiple pid fix +1.29.0 10/26/2009 - SLES 11 failover implementation +1.28.0 09/02/2009 - SLES 11 device removal/reinitialization fix +1.27.0 08/25/2009 - Fix for failover failure error on SLES 10 & RHEL 4 +1.26.2 08/04/2009 - Fix for crashes on RHEL 4.7 and SLES 11 +1.25.0 06/23/2009 - Fix for scatter-gather page offset bug on PPC64 SLES11 + - Added IOCTLs for persistent reserve +1.24.0 02/23/2009 - Support for SLES 11, kernel 2.6.27 + - Fix for CPF configuration bug introduced in 1.23.0 +1.23.0 01/19/2009 - CPF crash fix: cable pull/uninstall/reinstall sequence + - Boundary check for max failover paths +1.22.0 11/25/2008 - Fix for crash in RHEL 4.7 + - Updates for kernels >= 2.6.24 + - DPF crash fix: cable pull/uninstall/reinstall sequence +1.21.0 10/23/2008 - Reserve logging + - Add "primary_path" parameter for udev +1.20.0 10/15/2008 - read_cartridge_location to block transfers into at most + 600 elements +1.19.0 09/15/2008 - IBMtapeutil fix for read_cartridge_location +1.18.0 08/22/2008 - Fix for struct device attribute in kernels >= 2.6.13 +1.17.0 08/06/2008 - Add udev "dev" file for medium changers in + kernels < 2.6.5 or > 2.6.15 +1.16.0 06/27/2008 - Change GFP_ATOMIC allocations to GFP_KERNEL + - Support for the 3592-E06 + - Fix lin_taped restart crash after failback +1.15.0 05/21/2008 - Release source RPM + - Update 3572 inquiry string to 3572-TL +1.14.0 04/30/2008 - Make module parameters read/writable + - Fix for CPF key check on CVT +1.13.0 03/27/2008 - Support for 3572 +1.12.1 03/07/2008 - Fixed hang introduced in 1.12.0 +1.12.0 02/26/2008 - Created "dev" file in sysfs class directory for + udev & udevinfo support + - Changed 3592 (E05) references to support models beyond E05 +1.11.0 12/11/2007 - Fixed seg fault when a logical dvc is accidentally removed + - Fixed return code for SIOC_PASS_THROUGH + - Implemented read cartridge location IOCTL + - Removed WWNN filter check for DPF entitlement +1.10.0 10/01/2007 - Increaded timeout for best path selection + - Fixed delete_parms_on_device() for failover + - Fixed return code for SIOC_PASS_THROUGH + - Fixed maximum scsi transfer size for + - running on RHEL5/SLES10 SP1 on IA64 + - Increased max log sense length +1.9.0 08/20/2007 - Added persistent naming support for RHEL5 and SLES10 + - Increased maximum supported tape drives from 256 to 1024 +1.8.0 07/26/2007 - Support LTO4 HH +1.7.1 08/06/2007 - Fixed max scsi transfer size for RHEL5 on System Z +1.7.0 07/03/2007 - Fix max scsi transfer size and sg for RHEL5 and SLES10 SP1 + - Added MODULE_VERSION and MODULE_PARM_DESC for driver parms + - Added warning message to syslog if release fails on close + - Added wait_on_config driver parameter + - Removed unnecessary messages from lin_tape.errorlog + - Fixed 3592 density recovery on failover +1.6.0 05/22/2007 - Remove registered key if persistent reservation + preemption fails during failover + - Fixed read memory allocation on fixed block size +1.5.0 04/30/2007 - Fixed the residual count for RHEL5 + - Support SLES10 SP1 +1.4.0 04/30/2007 - Removed unwanted debug messages for direct I/O +1.3.0 04/12/2007 - Fix system-managed encryption for LTO4 + - Support for SIOC_PASS_THROUGH ioctl + - Support direct I/O + - Add driver attributes default_sys_encryption_proxy/write +1.2.0 04/02/2007 - Support RHEL5 + - Fix for ENOMEM on medium changer inventory with large + number of slots +1.1.0 03/13/2007 - Application-managed encryption now enabled correctly + - Fix for crash during CPF (when command never succeeds) + - Fix for DPF license key validation for TS3200 library + - Fix for daemon crash during data-path failover validation +1.0.9 02/19/2007 - Fix for hang when loading lin_tape + - Fix for hang when removing module on SLES9 +1.0.8 02/09/2007 - Fixes for system-managed encryption + - Support for LTO4 encryption + - Fix for data-path-failover on TS3200 + - Fix for hang when running stress tests to multiple devices + - Support for Asianux 2.0 +1.0.7 01/18/2007 - Fix for hang on RHEL4 and SLES9 when loading the driver +1.0.6 01/05/2007 - Support for 3577, LTO4, and system-managed encryption + - Support for RHEL4 and SLES9 + - Fix for crash on read or write to changer +1.0.5 09/29/2006 - Initial release diff --git a/lin_tape.spec b/lin_tape.spec index 73688a3..cb8a5b8 100644 --- a/lin_tape.spec +++ b/lin_tape.spec @@ -5,29 +5,21 @@ # nothing to be placed to debuginfo package %define _enable_debug_packages 0 -%define rel 3 +%define rel 1 %define pname lin_tape Summary: IBM Tape SCSI Device Driver for Linux Name: %{pname}%{_alt_kernel} -Version: 3.0.33 +Version: 3.0.52 Release: %{rel}%{?_pld_builder:@%{_kernel_ver_str}} License: GPL v2/LGPL Group: Base/Kernel Source0: %{pname}-%{version}.tgz -# Source0-md5: c22358f485f12baa7254aa25abe20a43 +# Source0-md5: 75cba1cbb76359085dedb5366afa7683 Source1: %{pname}.fixlist Patch0: use-module-dir.patch Patch1: clean-ifdefs.patch -Patch2: linux-4.9.patch -Patch4: linux-4.11.patch -Patch5: linux-4.12.patch -Patch6: linux-4.13.patch -Patch7: kernel-4.14.patch -Patch8: kernel-4.15.patch -Patch9: kernel-4.17.patch -Patch10: kernel-4.19.patch -Patch11: linux-4.4.169.patch -Patch12: kernel-5.0.patch +Patch2: kernel-5.0.patch +Patch3: kernel-5.6.patch # System Storage, Tape systems, Tape drivers and software, Tape device drivers (Linux) URL: http://www.ibm.com/support/fixcentral/ BuildRequires: rpmbuild(macros) >= 1.701 @@ -78,15 +70,7 @@ compatible platforms.\ %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 +%patch3 -p1 install -p %{SOURCE1} . diff --git a/linux-4.11.patch b/linux-4.11.patch deleted file mode 100644 index 71fb6d0..0000000 --- a/linux-4.11.patch +++ /dev/null @@ -1,180 +0,0 @@ -diff -ur lin_tape-3.0.18/intercept.c lin_tape-3.0.18-4.11/intercept.c ---- lin_tape-3.0.18/intercept.c 2017-02-23 19:14:41.000000000 +0100 -+++ lin_tape-3.0.18-4.11/intercept.c 2017-05-10 00:35:27.637366919 +0200 -@@ -37,6 +37,9 @@ - #include - #include - #include -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+#include -+#endif - - #include "scsi.h" - #include "pfo.h" -@@ -1362,7 +1365,12 @@ - if (pdev->fdev_num != -1) { - /* Only for fo devices */ - /* This 'if' must match the one above in create unique */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE); -+ __scsi_init_queue(sdev->host, sdev->request_queue); -+#else - sdev->request_queue = __scsi_alloc_queue(sdev->host, NULL); -+#endif - } - - /* set device hierachy so the new dummy dev -diff -ur lin_tape-3.0.18/lin_tape_ioctl_tape.c lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c ---- lin_tape-3.0.18/lin_tape_ioctl_tape.c 2017-05-10 00:36:01.952285733 +0200 -+++ lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c 2017-05-09 21:45:14.236233622 +0200 -@@ -6464,7 +6464,11 @@ - } /* if */ - - tmp_rq = (void*)sdev->request_queue; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ scsi_req_init(req); -+#else - req->cmd_type = REQ_TYPE_BLOCK_PC; -+#endif - #ifdef REQ_QUIET - req->cmd_flags |= REQ_QUIET; - #else -@@ -6536,15 +6540,27 @@ - bio = req->bio; - } /* if */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ scsi_req(req)->cmd_len = COMMAND_SIZE(cdb[0]); -+ memset(scsi_req(req)->cmd, '\0', MAX_CDB_SIZE); -+ memcpy(scsi_req(req)->cmd, cdb, scsi_req(req)->cmd_len); -+ scsi_req(req)->sense = sense_data; -+ scsi_req(req)->sense_len = 0; -+#else - req->cmd_len = COMMAND_SIZE(cdb[0]); - memset(req->cmd, '\0', MAX_CDB_SIZE); - memcpy(req->cmd, cdb, req->cmd_len); - req->sense = sense_data; - req->sense_len = 0; -+#endif - req->timeout = timeout; - req->retries = 0; - blk_execute_rq(req->q, NULL, req, 1); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ *resid = scsi_req(req)->resid_len; -+#else - *resid = req->resid_len; -+#endif - status_code = req->errors; - - if(buf_len && !use_sg) { -diff -ur lin_tape-3.0.18/lin_tape_tape.h lin_tape-3.0.18-4.11/lin_tape_tape.h ---- lin_tape-3.0.18/lin_tape_tape.h 2017-02-23 19:14:41.000000000 +0100 -+++ lin_tape-3.0.18-4.11/lin_tape_tape.h 2017-05-09 21:45:14.236233622 +0200 -@@ -85,7 +85,11 @@ - #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) - #define KOBJ_CT(kobj) ((kobj) ? atomic_read(&(kobj)->refcount) : 0) - #else -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0) - #define KOBJ_CT(kobj) ((kobj) ? atomic_read(&(kobj)->kref.refcount) : 0) -+#else -+#define KOBJ_CT(kobj) ((kobj) ? kref_read(&(kobj)->kref) : 0) -+#endif - #endif - - /* global definitions */ -diff -ur lin_tape-3.0.18/lower.c lin_tape-3.0.18-4.11/lower.c ---- lin_tape-3.0.18/lower.c 2017-02-23 19:14:41.000000000 +0100 -+++ lin_tape-3.0.18-4.11/lower.c 2017-05-10 00:21:19.106042388 +0200 -@@ -69,7 +69,11 @@ - /* Local function prototypes */ - static int lower_scsi_execute(struct scsi_device *sdev, - struct apfo_scsi_command *pfo_cmd, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ unsigned char *local_raw_sense, struct scsi_sense_hdr *sshdr); -+#else - unsigned char *local_raw_sense); -+#endif - - /** Look at the errors from the SCSI command, - * translate them to OS independent values. -@@ -267,11 +271,20 @@ - /* SCSI Command from decide code */ - result = scsi_execute(sdev, pfo_cmd->scsi_cmd, - pfo_cmd->data_direction, pfo_cmd->buffer, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0) - pfo_cmd->bufflen, local_raw_sense, pfo_cmd->timeout, - pfo_cmd->retries, pfo_cmd->flags, &pfo_cmd->resid_len); -+#else -+ pfo_cmd->bufflen, local_raw_sense, &local_sense_data, pfo_cmd->timeout, -+ pfo_cmd->retries, pfo_cmd->flags, 0, &pfo_cmd->resid_len); -+#endif - } else { - /* SCSI Command from user space */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0) - result = lower_scsi_execute(sdev, pfo_cmd, local_raw_sense); -+#else -+ result = lower_scsi_execute(sdev, pfo_cmd, local_raw_sense, &local_sense_data); -+#endif - } - /* Release this path */ - scsi_device_put(sdev); -@@ -440,7 +453,11 @@ - */ - static int lower_scsi_execute(struct scsi_device *sdev, - struct apfo_scsi_command *pfo_cmd, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ unsigned char *local_raw_sense, struct scsi_sense_hdr *sshdr) { -+#else - unsigned char *local_raw_sense) { -+#endif - - int err = 0; - struct request *rq; -@@ -452,7 +469,11 @@ - return DRIVER_ERROR << 24; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ scsi_req_init(rq); -+#else - rq->cmd_type = REQ_TYPE_BLOCK_PC; -+#endif - rq->cmd_flags |= pfo_cmd->flags; - - if ((pfo_cmd->bufflen > 0) && (pfo_cmd->data_direction != DMA_NONE)) { -@@ -533,11 +554,19 @@ - } - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ scsi_req(rq)->cmd_len = pfo_cmd->cmd_len; -+ memset(scsi_req(rq)->cmd, 0, BLK_MAX_CDB); -+ memcpy(scsi_req(rq)->cmd, pfo_cmd->scsi_cmd, pfo_cmd->cmd_len); -+ scsi_req(rq)->sense = local_raw_sense; -+ scsi_req(rq)->sense_len = 0; -+#else - rq->cmd_len = pfo_cmd->cmd_len; - memset(rq->cmd, 0, BLK_MAX_CDB); - memcpy(rq->cmd, pfo_cmd->scsi_cmd, pfo_cmd->cmd_len); - rq->sense = local_raw_sense; - rq->sense_len = 0; -+#endif - rq->timeout = pfo_cmd->timeout; - rq->retries = pfo_cmd->retries; - rq->end_io_data = pfo_cmd; -@@ -551,8 +580,15 @@ - DBG_ERROR("unmap returns: %d\n", err); - } - } -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+ pfo_cmd->resid_len = scsi_req(rq)->resid_len; -+ pfo_cmd->sense_len = scsi_req(rq)->sense_len; -+ if (sshdr) -+ scsi_normalize_sense(scsi_req(rq)->sense, scsi_req(rq)->sense_len, sshdr); -+#else - pfo_cmd->resid_len = rq->resid_len; - pfo_cmd->sense_len = rq->sense_len; -+#endif - pfo_cmd->errors = rq->errors; - - blk_put_request(rq); diff --git a/linux-4.12.patch b/linux-4.12.patch deleted file mode 100644 index 14ae055..0000000 --- a/linux-4.12.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- lin_tape-3.0.20/lin_tape_ioctl_tape.c.orig 2017-08-01 15:02:29.400676838 +0200 -+++ lin_tape-3.0.20/lin_tape_ioctl_tape.c 2017-08-01 15:08:53.208605776 +0200 -@@ -6554,7 +6554,11 @@ - req->sense_len = 0; - #endif - req->timeout = timeout; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) -+ scsi_req(req)->retries = 0; -+#else - req->retries = 0; -+#endif - blk_execute_rq(req->q, NULL, req, 1); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) - *resid = scsi_req(req)->resid_len; -@@ -6563,7 +6567,11 @@ - #else - *resid = req->resid_len; - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) -+ status_code = scsi_req(req)->result; -+#else - status_code = req->errors; -+#endif - - if(buf_len && !use_sg) { - buf_ptr = (char*)buffer; ---- lin_tape-3.0.20/lower.c.orig 2017-08-01 15:09:52.565988839 +0200 -+++ lin_tape-3.0.20/lower.c 2017-08-01 15:11:23.877092947 +0200 -@@ -568,7 +568,11 @@ - rq->sense_len = 0; - #endif - rq->timeout = pfo_cmd->timeout; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) -+ scsi_req(rq)->retries = pfo_cmd->retries; -+#else - rq->retries = pfo_cmd->retries; -+#endif - rq->end_io_data = pfo_cmd; - - blk_execute_rq(rq->q, NULL, rq, 1); -@@ -589,7 +593,11 @@ - pfo_cmd->resid_len = rq->resid_len; - pfo_cmd->sense_len = rq->sense_len; - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) -+ pfo_cmd->errors = scsi_req(rq)->result; -+#else - pfo_cmd->errors = rq->errors; -+#endif - - blk_put_request(rq); - return pfo_cmd->errors; diff --git a/linux-4.13.patch b/linux-4.13.patch deleted file mode 100644 index ae03180..0000000 --- a/linux-4.13.patch +++ /dev/null @@ -1,28 +0,0 @@ ---- lin_tape-3.0.20/lin_tape_ioctl_tape.c~ 2017-09-16 10:27:48.000000000 +0200 -+++ lin_tape-3.0.20/lin_tape_ioctl_tape.c 2017-09-16 10:31:03.642711575 +0200 -@@ -6465,7 +6465,11 @@ - - tmp_rq = (void*)sdev->request_queue; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0) -+ scsi_req_init(scsi_req(req)); -+#else - scsi_req_init(req); -+#endif - #else - req->cmd_type = REQ_TYPE_BLOCK_PC; - #endif ---- lin_tape-3.0.20/lower.c~ 2017-09-16 10:27:48.000000000 +0200 -+++ lin_tape-3.0.20/lower.c 2017-09-16 10:32:08.377461388 +0200 -@@ -470,7 +470,11 @@ - } - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0) -+ scsi_req_init(scsi_req(rq)); -+#else - scsi_req_init(rq); -+#endif - #else - rq->cmd_type = REQ_TYPE_BLOCK_PC; - #endif diff --git a/linux-4.4.169.patch b/linux-4.4.169.patch deleted file mode 100644 index 48ecbd8..0000000 --- a/linux-4.4.169.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- lin_tape-3.0.33/lin_tape_scsi_tape.c~ 2018-12-28 14:09:16.000000000 +0100 -+++ lin_tape-3.0.33/lin_tape_scsi_tape.c 2018-12-28 14:12:49.237558696 +0100 -@@ -11843,6 +11843,9 @@ - #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0) - mapped_pages = get_user_pages((ulong)user_location, number_pages, - rw, 0, pages, NULL); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,169) -+ mapped_pages = get_user_pages(current, current->mm, -+ (ulong)user_location, number_pages, rw ? FOLL_WRITE : 0, pages, NULL); - #else - mapped_pages = get_user_pages(current, current->mm, - (ulong)user_location, number_pages, rw, 0, pages, NULL); diff --git a/linux-4.9.patch b/linux-4.9.patch deleted file mode 100644 index c713a0f..0000000 --- a/linux-4.9.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- lin_tape-3.0.18/lin_tape_scsi_tape.c~ 2017-02-23 19:14:41.000000000 +0100 -+++ lin_tape-3.0.18/lin_tape_scsi_tape.c 2017-05-09 21:28:19.916320963 +0200 -@@ -11838,13 +11838,9 @@ - - down_read(¤t->mm->mmap_sem); - #if !defined (UBUNTUVERSION) --#if LINUX_VERSION_CODE == KERNEL_VERSION(4,4,73) \ -- || (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,92) && LINUX_VERSION_CODE < KERNEL_VERSION(4,4,103)) \ -- || defined(SLESKERNEL_4_4_103_6) \ -- || (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,114) && LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) && !defined(SLESSP2)) -- mapped_pages = get_user_pages((unsigned long)user_location, number_pages, -- rw, pages, NULL); -- -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) -+ mapped_pages = get_user_pages((ulong)user_location, number_pages, -+ rw ? FOLL_WRITE : 0, pages, NULL); - #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0) - mapped_pages = get_user_pages((ulong)user_location, number_pages, - rw, 0, pages, NULL); ---- lin_tape-3.0.33/stmp.c~ 2018-06-01 20:01:49.000000000 +0200 -+++ lin_tape-3.0.33/stmp.c 2018-10-27 11:39:03.873330720 +0200 -@@ -5061,12 +5061,13 @@ - - /* Try to fault in all of the necessary pages */ - /* rw==READ means read from drive, write into memory area */ --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,114) && LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) && !defined(SLESSP2)) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) - res = get_user_pages_unlocked( - uaddr, - nr_pages, -+ rw == READ ? FOLL_WRITE : 0, - pages, -- rw == READ ? FOLL_WRITE : 0); /* don't force */ -+ NULL); - - #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,21) - res = get_user_pages_unlocked( -- 2.43.0