[packages/lin_tape] - up to 3.0.71
baggins
baggins at pld-linux.org
Sun Dec 14 14:25:13 CET 2025
commit 694747b1549886ef1674c5cf2417e1bf4f2d9b38
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Dec 14 16:24:59 2025 +0100
- up to 3.0.71
clean-ifdefs.patch | 353 ------------------------------------------------
kernel-6.15.patch | 193 ++++++++++++++++++++++++++
kernel-6.16.patch | 14 ++
lin_tape.fixlist | 390 +++--------------------------------------------------
lin_tape.spec | 14 +-
5 files changed, 231 insertions(+), 733 deletions(-)
---
diff --git a/lin_tape.spec b/lin_tape.spec
index b3fe061..09b5957 100644
--- a/lin_tape.spec
+++ b/lin_tape.spec
@@ -5,19 +5,21 @@
# nothing to be placed to debuginfo package
%define _enable_debug_packages 0
-%define rel 2
+%define rel 1
%define pname lin_tape
Summary: IBM Tape SCSI Device Driver for Linux
Name: %{pname}%{_alt_kernel}
-Version: 3.0.66
+Version: 3.0.71
Release: %{rel}%{?_pld_builder:@%{_kernel_ver_str}}
License: GPL v2/LGPL
Group: Base/Kernel
Source0: %{pname}-%{version}.tgz
-# Source0-md5: 736c967d1d2a62023809b54f2328a9cc
+# Source0-md5: 86e337bd1cc2da752997d74685fc4ab5
Source1: %{pname}.fixlist
Patch0: use-module-dir.patch
Patch1: clean-ifdefs.patch
+Patch2: kernel-6.15.patch
+Patch3: kernel-6.16.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
@@ -65,8 +67,10 @@ compatible platforms.\
%prep
%setup -q -n %{pname}-%{version}
%undos Makefile
-%patch -P 0 -p1
-%patch -P 1 -p1
+%patch -P0 -p1
+#patch -P 1 -p1
+%patch -P2 -p1
+%patch -P3 -p1
install -p %{SOURCE1} .
diff --git a/clean-ifdefs.patch b/clean-ifdefs.patch
deleted file mode 100644
index 66e0a97..0000000
--- a/clean-ifdefs.patch
+++ /dev/null
@@ -1,353 +0,0 @@
-Only in lin_tape-3.0.66-ifdefs: lin_tape.fixlist
-diff -ur lin_tape-3.0.66/lin_tape_scsi_tape.c lin_tape-3.0.66-ifdefs/lin_tape_scsi_tape.c
---- lin_tape-3.0.66/lin_tape_scsi_tape.c 2023-08-08 23:45:15.000000000 +0200
-+++ lin_tape-3.0.66-ifdefs/lin_tape_scsi_tape.c 2023-12-25 23:05:43.253011166 +0100
-@@ -2028,8 +2028,8 @@
- &drv->tape_log_len, TRC_SCSI_IOC);
- #ifdef KERNELVERSION_5_14_0_70
- rc = scsi_ioctl(drv->dev_obj, command, (void*)arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- rc = scsi_ioctl(drv->dev_obj, filp->f_flags, command, (void*)arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ rc = scsi_ioctl(drv->dev_obj, NULL, filp->f_flags, command, (void*)arg);
- #else
- rc = scsi_ioctl(drv->dev_obj, command, (void*)arg);
- #endif
-@@ -5597,8 +5597,8 @@
- log_changer((*chgp), TRC_SMCIOC_CMD, True);
- #ifdef KERNELVERSION_5_14_0_70
- rc = scsi_ioctl((*chgp)->dev_obj, command, (void*)arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5,14,1) || defined(SLESSP5))
-- rc = scsi_ioctl((*chgp)->dev_obj, filp->f_flags, command, (void*)arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ rc = scsi_ioctl((*chgp)->dev_obj, NULL, filp->f_flags, command, (void*)arg);
- #else
- rc = scsi_ioctl((*chgp)->dev_obj, command, (void*)arg);
- #endif
-@@ -11556,7 +11556,7 @@
-
- memset(pages, '\0', drv->supported_sg_tablesize * sizeof(struct page*));
-
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
- down_read(¤t->mm->mmap_lock);
- #else
- down_read(¤t->mm->mmap_sem);
-@@ -11577,7 +11577,7 @@
- mapped_pages = get_user_pages(current, current->mm,
- (ulong)user_location, number_pages, rw, 0, pages, NULL);
- #endif
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
- up_read(¤t->mm->mmap_lock);
- #else
- up_read(¤t->mm->mmap_sem);
-diff -ur lin_tape-3.0.66/Makefile lin_tape-3.0.66-ifdefs/Makefile
---- lin_tape-3.0.66/Makefile 2023-08-08 23:45:15.000000000 +0200
-+++ lin_tape-3.0.66-ifdefs/Makefile 2023-12-25 23:02:51.396800274 +0100
-@@ -20,55 +20,10 @@
- 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
-
--RHELRELEASE := $(shell [ -f "/etc/redhat-release" ] && echo 1 || echo 0)
--ifeq ($(RHELRELEASE), 1)
--KERNELDIR ?= /lib/modules/$(shell uname -r)/build
--KERNELVER = $(shell uname -r 2>/dev/null|sed "s/[\.-]/_/g"|sed "s/\([0-9]*_[0-9]*_[0-9]*_[0-9]*\).*/\1/")
--EXTRA_CFLAGS += -DKERNELVERSION_${KERNELVER}
--else
--UBUNTURELEASE := $(shell [ -f "/etc/os-release" ] && grep -qi Ubuntu /etc/os-release && echo 1 || echo 0)
--ifeq ($(UBUNTURELEASE), 1)
--EXTRA_CFLAGS += -DUBUNTUVERSION
--else
--EXTRA_CFLAGS += -DSLESVERSION
--KERNELDIR ?= /lib/modules/$(shell uname -r)/build
--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)
--SLESSP5 := $(shell grep -qi SP5 /etc/*release && echo 1 || echo 0)
--ifeq ($(SLESSP2), 1)
--EXTRA_CFLAGS += -DSLESSP2
--endif
--ifeq ($(SLESSP5), 1)
--EXTRA_CFLAGS += -DSLESSP5
--endif
--endif
--endif
--
- ifeq ($(SFMP), 1)
- EXTRA_CFLAGS += -DSFMPENABLED
- endif
-
--PROC := $(shell uname -m)
--ifeq ($(UBUNTURELEASE), 0)
--ifeq ($(PROC), ppc64)
--EXTRA_CFLAGS += -m64
--endif
--
--ifeq ($(PROC), powerpc64)
--EXTRA_CFLAGS += -m64
--endif
--
--ifeq ($(PROC), powerpc)
--EXTRA_CFLAGS += -m64 -msoft-float
--LDFLAGS += -melf64ppc
--endif
--
--ifeq ($(PROC), x86_64)
--EXTRA_CFLAGS += -mcmodel=kernel
--endif
--endif
--
- VERSION := $(word 1,$(VERSIONRELEASE))
- RELEASE := $(word 2,$(VERSIONRELEASE))
- ifeq ($(RELEASE),)
-diff -ur lin_tape-3.0.66/pfo.h lin_tape-3.0.66-ifdefs/pfo.h
---- lin_tape-3.0.66/pfo.h 2023-08-08 23:45:15.000000000 +0200
-+++ lin_tape-3.0.66-ifdefs/pfo.h 2023-12-25 23:02:51.400133506 +0100
-@@ -23,149 +23,6 @@
-
- #include "apfo.h"
- #include <scsi/scsi_ioctl.h>
--/* The intent of the following defines is that the code
-- * will build for various releases of Linux. This is how
-- * we track different versions using ifdef in the source.
-- */
--#ifdef KERNELVERSION_2_6_32_220
--#define BEFORE_RH_63 1
--#define BEFORE_RH_64 1
--#define BEFORE_RH_65 1
--#define BEFORE_RH_66 1
--#define BEFORE_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_279
--#define AFTER_RH_62 1
--#define BEFORE_RH_64 1
--#define BEFORE_RH_65 1
--#define BEFORE_RH_66 1
--#define BEFORE_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_358
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define BEFORE_RH_65 1
--#define BEFORE_RH_66 1
--#define BEFORE_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_431
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define BEFORE_RH_66 1
--#define BEFORE_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_504
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define BEFORE_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_573
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_642
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_2_6_32_696
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_68 1
--#define BEFORE_RH_70 1
--#define BEFORE_RH_71 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_3_10_0_123
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_6x 1
--#define BEFORE_RH_71 1
--#endif
--#ifdef KERNELVERSION_3_10_0_229
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_6x 1
--#define AFTER_RH_70 1
--#define BEFORE_RH_72 1
--#endif
--#ifdef KERNELVERSION_3_10_0_327
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_6x 1
--#define AFTER_RH_70 1
--#define AFTER_RH_71 1
--#endif
--#ifdef KERNELVERSION_3_10_0_514
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_6x 1
--#define AFTER_RH_70 1
--#define AFTER_RH_71 1
--#define AFTER_RH_72 1
--#endif
--#ifdef KERNELVERSION_3_10_0_693
--#define AFTER_RH_62 1
--#define AFTER_RH_63 1
--#define AFTER_RH_64 1
--#define AFTER_RH_65 1
--#define AFTER_RH_66 1
--#define AFTER_RH_67 1
--#define AFTER_RH_6x 1
--#define AFTER_RH_70 1
--#define AFTER_RH_71 1
--#define AFTER_RH_72 1
--#define AFTER_RH_73 1
--#endif
-
- /* Misc defines needed so source is same for all versions of Linux */
- #ifndef SDEV_TRANSPORT_OFFLINE
-diff -ur lin_tape-3.0.66/upper.c lin_tape-3.0.66-ifdefs/upper.c
---- lin_tape-3.0.66/upper.c 2023-08-08 23:45:15.000000000 +0200
-+++ lin_tape-3.0.66-ifdefs/upper.c 2023-12-25 23:05:43.253011166 +0100
-@@ -255,8 +255,8 @@
- DBG_INFO("Sent to kernel cmd=0x%04X\n", ioctl_cmd);
- #ifdef KERNELVERSION_5_14_0_70
- return scsi_ioctl(sdev, ioctl_cmd, arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- return scsi_ioctl(sdev, filp->f_flags, ioctl_cmd, arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ return scsi_ioctl(sdev, NULL, filp->f_flags, ioctl_cmd, arg);
- #else
- return scsi_ioctl(sdev, ioctl_cmd, arg);
- #endif
-@@ -279,8 +279,8 @@
- } else {
- #ifdef KERNELVERSION_5_14_0_70
- return scsi_ioctl(sdev, ioctl_cmd, arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- return scsi_ioctl(sdev, filp->f_flags, ioctl_cmd, arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
-+ return scsi_ioctl(sdev, NULL, filp->f_flags, ioctl_cmd, arg);
- #else
- return scsi_ioctl(sdev, ioctl_cmd, arg);
- #endif
-@@ -305,9 +305,9 @@
-
- #ifdef KERNELVERSION_5_14_0_70
- if (blk_verify_command(pfo_cmd->scsi_cmd, mode & FMODE_WRITE))
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
- if (!scsi_cmd_allowed(pfo_cmd->scsi_cmd, mode & FMODE_WRITE))
--#elif LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) && (defined(SLESVERSION) || defined(UBUNTUVERSION))
-+#elif 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 */
-@@ -564,14 +564,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;
-@@ -663,9 +661,9 @@
-
- #ifdef KERNELVERSION_5_14_0_70
- err = blk_verify_command(scsi_cmd, mode & FMODE_WRITE);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
- err = !scsi_cmd_allowed(scsi_cmd, mode & FMODE_WRITE);
--#elif LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0) && (defined(SLESVERSION) || defined(UBUNTUVERSION))
-+#elif LINUX_VERSION_CODE > KERNEL_VERSION(3,12,0)
- err = blk_verify_command(scsi_cmd, mode & FMODE_WRITE);
- #else
- /* RHEL 6.4 and beyond */
-@@ -785,8 +783,8 @@
- DBG_INFO("Sent to kernel cmd=0x%04X\n", ioctl_cmd);
- #ifdef KERNELVERSION_5_14_0_70
- return scsi_cmd_ioctl(q, disk, mode, ioctl_cmd, arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- return scsi_ioctl(sdev, mode, ioctl_cmd, arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ return scsi_ioctl(sdev, disk, mode, ioctl_cmd, arg);
- #else
- return scsi_cmd_ioctl(q, disk, mode, ioctl_cmd, arg);
- #endif
-@@ -809,8 +807,8 @@
- } else {
- #ifdef KERNELVERSION_5_14_0_70
- return scsi_cmd_ioctl(q, disk, mode, ioctl_cmd, arg);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- return scsi_ioctl(sdev, mode, ioctl_cmd, arg);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ return scsi_ioctl(sdev, disk, mode, ioctl_cmd, arg);
- #else
- return scsi_cmd_ioctl(q, disk, mode, ioctl_cmd, arg);
- #endif
-@@ -963,8 +961,8 @@
- } else {
- #ifdef KERNELVERSION_5_14_0_70
- return sg_scsi_ioctl(q, disk, mode, sic);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 1) || defined(SLESSP5))
-- return scsi_ioctl(sdev, mode, cmd_in, sic);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
-+ return scsi_ioctl(sdev, disk, mode, cmd_in, sic);
- #else
- return sg_scsi_ioctl(q, disk, mode, sic);
- #endif
diff --git a/kernel-6.15.patch b/kernel-6.15.patch
new file mode 100644
index 0000000..2f15b62
--- /dev/null
+++ b/kernel-6.15.patch
@@ -0,0 +1,193 @@
+--- lin_tape-3.0.71/lin_tape_ioctl_changer.c~ 2025-06-30 16:30:30.000000000 +0200
++++ lin_tape-3.0.71/lin_tape_ioctl_changer.c 2025-12-14 16:15:12.749984881 +0100
+@@ -24,6 +24,11 @@
+ #include "lin_tape_scsi_tape.h"
+ #include <linux/delay.h>
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,15,0)
++#define RESERVE_6 RESERVE
++#define RELEASE_6 RELEASE
++#endif
++
+ /*******************************************************************************
+ * *
+ * NAME: changer_inquiry_page *
+@@ -361,11 +366,11 @@
+ } /* if */
+
+ memset((*chgp)->cdb, '\0', MAX_CDB_SIZE);
+- (*chgp)->cdb->cdb_release.op_code = RELEASE;
++ (*chgp)->cdb->cdb_release.op_code = RELEASE_6;
+ (*chgp)->buffer = NULL;
+ (*chgp)->buf_len = 0;
+ (*chgp)->cdb_len = CDB_GENERIC_6;
+- (*chgp)->last_op = RELEASE;
++ (*chgp)->last_op = RELEASE_6;
+
+ rc = changer_send_scsi_cmd(chgp, compute_changer_timeout((*chgp)->chg_id,
+ ReleaseTimeOut), DMA_NONE, False, 0);
+@@ -409,11 +414,11 @@
+ } /* if */
+
+ memset((*chgp)->cdb, '\0', MAX_CDB_SIZE);
+- (*chgp)->cdb->cdb_reserve.op_code = RESERVE;
++ (*chgp)->cdb->cdb_reserve.op_code = RESERVE_6;
+ (*chgp)->buffer = NULL;
+ (*chgp)->buf_len = 0;
+ (*chgp)->cdb_len = CDB_GENERIC_6;
+- (*chgp)->last_op = RESERVE;
++ (*chgp)->last_op = RESERVE_6;
+
+ rc = changer_send_scsi_cmd(chgp, compute_changer_timeout((*chgp)->chg_id,
+ ReserveTimeOut), DMA_NONE, False, 0);
+@@ -2570,7 +2575,7 @@
+
+ if((*chgp)->curr_reserve_type != LinTapeNoReserve) {
+ DbgPrint(("lin_tape UNIT ATTN erp: re-reserve\n"));
+- temp_rc = changer_send_erp_cmd((*chgp), RESERVE, 0, 0);
++ temp_rc = changer_send_erp_cmd((*chgp), RESERVE_6, 0, 0);
+ if(temp_rc != STATUS_SUCCESS) goto EXIT_LABEL;
+ } /* if */
+
+@@ -2954,7 +2959,7 @@
+ * PARAMETERS: *
+ * *
+ * chg: the changer for which to issue the command *
+-* cmd: defined for INQUIRY, TEST_UNIT_READY, and RESERVE *
++* cmd: defined for INQUIRY, TEST_UNIT_READY, and RESERVE_6 *
+ * update: if data has changed, update the descriptor *
+ * count: nquiry page for which to issue the ERP *
+ * *
+@@ -2978,7 +2983,7 @@
+ rc = changer_erp_tur(chg);
+ break;
+
+- case RESERVE:
++ case RESERVE_6:
+ rc = changer_erp_reserve(chg);
+ break;
+
+@@ -3188,7 +3193,7 @@
+ } /* if */
+ memset((void*)tmp_cdb, '\0', MAX_CDB_SIZE);
+
+- tmp_cdb->cdb_reserve.op_code = RESERVE;
++ tmp_cdb->cdb_reserve.op_code = RESERVE_6;
+
+ tcdb = (unchar*)tmp_cdb;
+
+--- lin_tape-3.0.71/lin_tape_ioctl_tape.c~ 2025-06-30 16:30:30.000000000 +0200
++++ lin_tape-3.0.71/lin_tape_ioctl_tape.c 2025-12-14 16:17:07.923318210 +0100
+@@ -25,6 +25,11 @@
+ #include "lin_tape_scsi_tape.h"
+ #include <linux/delay.h>
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,15,0)
++#define RESERVE_6 RESERVE
++#define RELEASE_6 RELEASE
++#endif
++
+ /*****************************************************************************
+ * *
+ * Tape Drive Ioctls *
+@@ -1643,9 +1648,9 @@
+ } /* if */
+
+ memset(drv->cdb, '\0', MAX_CDB_SIZE);
+- drv->cdb->cdb_release.op_code = RELEASE;
++ drv->cdb->cdb_release.op_code = RELEASE_6;
+ drv->cdb_len = CDB_GENERIC_6;
+- drv->last_op = RELEASE;
++ drv->last_op = RELEASE_6;
+
+ drv->buffer = NULL;
+ drv->buf_len = 0;
+@@ -2292,7 +2297,7 @@
+ * *
+ * NAME: tape_reserve *
+ * *
+-* PURPOSE: Issue SCSI-2 RESERVE, opcode 0x16 *
++* PURPOSE: Issue SCSI-2 RESERVE_6, opcode 0x16 *
+ * *
+ * PARAMETERS: *
+ * *
+@@ -2314,9 +2319,9 @@
+ goto EXIT_LABEL;
+ } /* if */
+ memset(drv->cdb, '\0', MAX_CDB_SIZE);
+- drv->cdb->cdb_reserve.op_code = RESERVE;
++ drv->cdb->cdb_reserve.op_code = RESERVE_6;
+ drv->cdb_len = CDB_GENERIC_6;
+- drv->last_op = RESERVE;
++ drv->last_op = RESERVE_6;
+ drv->buffer = NULL;
+ drv->buf_len = 0;
+
+@@ -4723,11 +4728,11 @@
+ if(drv) drv->wakeup_info = 0;
+
+ /* Change regular reserve to persistent reserve if necessary */
+- if(cdb[0] == RESERVE && TP_RSV_PERSISTENT(drv)) {
++ if(cdb[0] == RESERVE_6 && TP_RSV_PERSISTENT(drv)) {
+ rc = tape_pass_thru_persistent_reserve(&drv, sense,
+ orig_sense_length, sense_avail, sense_length, fpfo);
+ goto EXIT_LABEL;
+- } else if(cdb[0] == RELEASE && TP_RSV_PERSISTENT(drv)) {
++ } else if(cdb[0] == RELEASE_6 && TP_RSV_PERSISTENT(drv)) {
+ rc = tape_pass_thru_persistent_release(&drv, sense,
+ orig_sense_length, sense_avail, sense_length, fpfo);
+ goto EXIT_LABEL;
+@@ -5938,7 +5943,7 @@
+ } /* if */
+
+ if(!drv->cmd_in_open && !drv->cmd_wo_ua_erp &&
+- (drv->last_op != RELEASE) &&
++ (drv->last_op != RELEASE_6) &&
+ (drv->sense_valid && drv->sense_data
+ && drv->sense_data->sense_key == 6))
+ tape_unit_attent_erp(drv);
+@@ -7883,7 +7888,7 @@
+ rc = erp_inquiry(drv, last_timeout, count, sense_data);
+ break;
+
+- case TEST_UNIT_READY: case RESERVE:
++ case TEST_UNIT_READY: case RESERVE_6:
+ rc = erp_tur_or_reserve(drv, command, sense_data);
+ break;
+
+@@ -8036,12 +8041,12 @@
+ * *
+ * NAME: erp_tur_or_reserve *
+ * *
+-* PURPOSE: Issue TUR or RESERVE as part of ERP processing *
++* PURPOSE: Issue TUR or RESERVE_6 as part of ERP processing *
+ * *
+ * PARAMETERS: *
+ * *
+ * drv: tape descriptor for the drive *
+-* command: TUR or RESERVE *
++* command: TUR or RESERVE_6 *
+ * sense_data: caller-allocated buffer to receive sense data *
+ * *
+ * RETURNS: STATUS_SUCCESS or error code *
+@@ -8064,7 +8069,7 @@
+ memset(tmp_cdb, '\0', MAX_CDB_SIZE);
+ if(command == TEST_UNIT_READY)
+ tmp_cdb->cdb_tur.op_code = TEST_UNIT_READY;
+- else tmp_cdb->cdb_reserve.op_code = RESERVE;
++ else tmp_cdb->cdb_reserve.op_code = RESERVE_6;
+
+ tcdb = (unchar*)tmp_cdb;
+
+@@ -10214,9 +10219,9 @@
+ if(rc != STATUS_SUCCESS) goto EXIT_LABEL;
+
+ if(drv->curr_reserve_type == LinTapeReserve6) {
+- rc = tape_send_erp_cmd(drv, RESERVE, 0, 0);
++ rc = tape_send_erp_cmd(drv, RESERVE_6, 0, 0);
+ while(rc == UNIT_ATTENTION)
+- rc = tape_send_erp_cmd(drv, RESERVE, 0, 0);
++ rc = tape_send_erp_cmd(drv, RESERVE_6, 0, 0);
+ if(rc != STATUS_SUCCESS) goto EXIT_LABEL;
+ } else if(drv->curr_reserve_type == LinTapePersistentReserve
+ && (asc == 0x29 && ascq == 0)) {
diff --git a/kernel-6.16.patch b/kernel-6.16.patch
new file mode 100644
index 0000000..35a6f67
--- /dev/null
+++ b/kernel-6.16.patch
@@ -0,0 +1,14 @@
+--- lin_tape-3.0.71/lower.c~ 2025-06-30 16:30:30.000000000 +0200
++++ lin_tape-3.0.71/lower.c 2025-12-14 16:22:27.593318201 +0100
+@@ -534,7 +534,10 @@
+ }
+ } else if (pfo_cmd->source == PFO_SOURCE_CMD_1 ||
+ pfo_cmd->source == PFO_SOURCE_EXEC) {
+- err = blk_rq_map_kern(sdev->request_queue,
++ err = blk_rq_map_kern(
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,16,0)
++ sdev->request_queue,
++#endif
+ rq,
+ pfo_cmd->buffer,
+ pfo_cmd->bufflen,
diff --git a/lin_tape.fixlist b/lin_tape.fixlist
index ae3680f..facc243 100644
--- a/lin_tape.fixlist
+++ b/lin_tape.fixlist
@@ -1,11 +1,22 @@
Fixlist for Linux IBM Tape Device Driver (lin_tape)
-(C) Copyright IBM Corporation 2007-2023
+(C) Copyright IBM Corporation 2007-2025
Level Date Description
---------------------------------------------------------------
-3.0.66 09/29/2023 - Initial support for SLES 15 SP5 (min. kernel 5.14.21-150500)
-3.0.65 08/22/2023 - Initial support for RHEL 9.2 (no join driver)
+3.0.71 08/15/2025 - Initial support for RHEL 9.6 (min. kernel 5.14.0-570.32.1)
+ - Initial support for RHEL 10 (min. kernel 6.12.0-55.25.1)
+ 09/12/2025 - Initial support for SLES 15 SP7 (min. kernel 6.4.0-150700.53.6)
+3.0.69 02/21/2025 - Initial support for RHEL 9.5 (min. kernel 5.14.0-503.22.1)
+ - New parameter to disable PEW
+3.0.68 09/13/2024 - Initial support for SLES15 SP6 (min. kernel 6.4.0-150600.23.17.1)
+ - Fix to support RHEL 9.4 without conflict on prior kernels
+ - Enhancement for Storage Protect attachment
+3.0.67 07/09/2024 - Initial support for RHE 9.4 and RHEL 8.10 (For RHEL 9.x prior to RHEL 9.4 use 3.0.66)
+3.0.66 09/29/2023 - Initial support for SLES 15 SP5 (min. kernel 5.14.21.150500.55.19)
+ 02/29/2024 - Initial support for RHEL 8.9 (min. kernel 4.18.0-513)
+ - Initial support for RHEL 9.3 (no join driver, min. kernel 5.14.0-362.13.1)
+3.0.65 08/22/2023 - Initial support for RHEL 9.2 (no join driver, min. kernel 5.14.0-284)
- Initial support for RHEL 8.8
- Changed print auto timeouts retrieval fails to only print when debug enabled
- Support for TS1170
@@ -27,7 +38,7 @@ Fixlist for Linux IBM Tape Device Driver (lin_tape)
- Fix for crash on join driver st interface buffer >= 2MB
- Removed timouts initialization table from attachment to avoid delays on device becoming ready
- CPF change to attempt a max of 2 retries when hardware error
-3.0.57 08/30/2021 - Initial support for SLES 15 SP3 (min. kernel 5.3.18-57 Power, Intel, System Z)
+3.0.57 08/30/2021 - Initial support for SLES 15 SP3 (min. kernel 5.3.18-57.3 Power, Intel, System Z)
07/26/2021 - Initial support for RHEL 8.4 (min. kernel 4.18.0-305 x86_64, ppc64le, s390x)
- Changer to retry abort and becoming ready state
- CPF improvements
@@ -38,374 +49,3 @@ Fixlist for Linux IBM Tape Device Driver (lin_tape)
- Enhancement to allow multiple changer open handles during critical IO
- Removed recommended tmo parameters warnings
- Fix for auto timeout retrieval on re-discovery failing command for timout retrieval when successful on initial discovery
-3.0.55 07/31/2020 - Initial support for SLES 15 SP2 (min. kernel version 5.3.18-24.15.1)
- - Autotime retrieval
- - Fix on passthru failover on changer from invalid request
- - RAO for LTO
-3.0.53 06/02/2020 - Initial support for RHEL 7.8 (min. kernel version 3.10.0-1127.8.2 on x86_64 and Power and 4.14.0-115.el7a on Power9)
- - Initial support for RHEL 8.2 (min. kernel version 4.18.0-193 x86_64 and Power)
- - Initial support for Ubuntu 18.04.4 (min kernel version 5.3.0-46 only on ppc64le and x86_64)
- - Removed line space at proc output
-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
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/lin_tape.git/commitdiff/694747b1549886ef1674c5cf2417e1bf4f2d9b38
More information about the pld-cvs-commit
mailing list