We found some issues with compilation of SCST-3.10 on PreRelease OS RHEL9.8 and RHEL10.2. Also an issue seen in OEL10.1 with UEK Kernel
RHEL9.8 failure:
[2026-03-18 14:36:54] CC [M] //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.o
[2026-03-18 14:36:55] In file included from //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/../../include/scst.h:71,
[2026-03-18 14:36:55] from //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.c:66:
[2026-03-18 14:36:55] //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/../../include/backport.h:1800: warning: "timer_container_of" redefined
[2026-03-18 14:36:55] 1800 | #define timer_container_of from_timer
[2026-03-18 14:36:55] |
[2026-03-18 14:36:55] In file included from ./include/linux/workqueue.h:9,
[2026-03-18 14:36:55] from ./include/linux/srcu.h:21,
[2026-03-18 14:36:55] from ./include/linux/notifier.h:16,
[2026-03-18 14:36:55] from ./arch/x86/include/asm/uprobes.h:13,
[2026-03-18 14:36:55] from ./include/linux/uprobes.h:49,
[2026-03-18 14:36:55] from ./include/linux/mm_types.h:16,
[2026-03-18 14:36:55] from ./include/linux/mmzone.h:22,
[2026-03-18 14:36:55] from ./include/linux/gfp.h:7,
[2026-03-18 14:36:55] from ./include/linux/xarray.h:15,
[2026-03-18 14:36:55] from ./include/linux/list_lru.h:14,
[2026-03-18 14:36:55] from ./include/linux/fs.h:13,
[2026-03-18 14:36:55] from ./include/uapi/linux/aio_abi.h:31,
[2026-03-18 14:36:55] from ./include/linux/aio.h:5,
[2026-03-18 14:36:55] from //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.c:29:
[2026-03-18 14:36:55] ./include/linux/timer.h:139: note: this is the location of the previous definition
[2026-03-18 14:36:55] 139 | #define timer_container_of(var, callback_timer, timer_fieldname) \
[2026-03-18 14:36:55] |
[2026-03-18 14:36:55] //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.c: In function ‘vdisk_create_bioset’:
[2026-03-18 14:36:55] //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.c:6551:23: error: implicit declaration of function ‘bioset_integrity_create’; did you mean ‘bio_integrity_clone’? [-Werror=implicit-function-declaration]
[2026-03-18 14:36:55] 6551 | res = bioset_integrity_create(virt_dev->vdisk_bioset, 2);
[2026-03-18 14:36:55] | ^~~~~~~~~~~~~~~~~~~~~~~
[2026-03-18 14:36:55] | bio_integrity_clone
[2026-03-18 14:36:57] cc1: some warnings being treated as errors
[2026-03-18 14:36:57] make[4]: *** [scripts/Makefile.build:250: //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers/scst_vdisk.o] Error 1
[2026-03-18 14:36:57] make[3]: *** [Makefile:1968: //root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src/dev_handlers] Error 2
[2026-03-18 14:36:57] make[3]: Leaving directory '/usr/src/kernels/5.14.0-687.el9.x86_64'
[2026-03-18 14:36:57] make[2]: *** [Makefile:84: all] Error 2
[2026-03-18 14:36:57] make[2]: Leaving directory '/root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst/src'
[2026-03-18 14:36:57] make[1]: *** [Makefile:39: install] Error 2
[2026-03-18 14:36:57] make[1]: Leaving directory '/root/project.tfXOPt/project1.12.0/project1.12.0/dist/scst/scst/scst'
[2026-03-18 14:36:57] make: *** [Makefile:218: scst_install] Error 2
RHEL10.2 failure:
root@localhost:~# tail -45 install_20260318143426.log
[2026-03-18 14:34:36]
[2026-03-18 14:34:36] make[3]: Entering directory '/usr/src/kernels/6.12.0-211.1.1.el10_2.x86_64'
[2026-03-18 14:34:37] CC [M] //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/scst_copy_mgr.o
[2026-03-18 14:34:41] In file included from //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/../include/scst.h:71,
[2026-03-18 14:34:41] from //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/scst_copy_mgr.c:16:
[2026-03-18 14:34:41] //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/../include/backport.h:253:28: error: static declaration of ‘blk_mq_num_possible_queues’ follows non-static declaration
[2026-03-18 14:34:41] 253 | static inline unsigned int blk_mq_num_possible_queues(unsigned int max_queues)
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] In file included from ./include/linux/t10-pi.h:6,
[2026-03-18 14:34:41] from ./include/scsi/scsi_cmnd.h:7,
[2026-03-18 14:34:41] from //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/../include/scst.h:61:
[2026-03-18 14:34:41] ./include/linux/blk-mq.h:954:14: note: previous declaration of ‘blk_mq_num_possible_queues’ with type ‘unsigned int(unsigned int)’
[2026-03-18 14:34:41] 954 | unsigned int blk_mq_num_possible_queues(unsigned int max_queues);
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/../include/backport.h:258:28: error: static declaration of ‘blk_mq_num_online_queues’ follows non-static declaration
[2026-03-18 14:34:41] 258 | static inline unsigned int blk_mq_num_online_queues(unsigned int max_queues)
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] ./include/linux/blk-mq.h:955:14: note: previous declaration of ‘blk_mq_num_online_queues’ with type ‘unsigned int(unsigned int)’
[2026-03-18 14:34:41] 955 | unsigned int blk_mq_num_online_queues(unsigned int max_queues);
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/../include/backport.h:1800:9: warning: "timer_container_of" redefined
[2026-03-18 14:34:41] 1800 | #define timer_container_of from_timer
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] In file included from ./include/linux/workqueue.h:10,
[2026-03-18 14:34:41] from ./include/linux/srcu.h:21,
[2026-03-18 14:34:41] from ./include/linux/notifier.h:16,
[2026-03-18 14:34:41] from ./arch/x86/include/asm/uprobes.h:13,
[2026-03-18 14:34:41] from ./include/linux/uprobes.h:61,
[2026-03-18 14:34:41] from ./include/linux/mm_types.h:16,
[2026-03-18 14:34:41] from ./include/linux/mmzone.h:22,
[2026-03-18 14:34:41] from ./include/linux/gfp.h:7,
[2026-03-18 14:34:41] from ./include/linux/slab.h:16,
[2026-03-18 14:34:41] from //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/scst_copy_mgr.c:10:
[2026-03-18 14:34:41] ./include/linux/timer.h:132:9: note: this is the location of the previous definition
[2026-03-18 14:34:41] 132 | #define timer_container_of(var, callback_timer, timer_fieldname) \
[2026-03-18 14:34:41] | ^~~~~~~~~~~~~~~~~~
[2026-03-18 14:34:41] make[5]: *** [scripts/Makefile.build:229: //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src/scst_copy_mgr.o] Error 1
[2026-03-18 14:34:41] make[4]: *** [/usr/src/kernels/6.12.0-211.1.1.el10_2.x86_64/Makefile:1994: //root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src] Error 2
[2026-03-18 14:34:41] make[3]: *** [Makefile:242: __sub-make] Error 2
[2026-03-18 14:34:41] make[3]: Leaving directory '/usr/src/kernels/6.12.0-211.1.1.el10_2.x86_64'
[2026-03-18 14:34:41] make[2]: *** [Makefile:83: all] Error 2
[2026-03-18 14:34:41] make[2]: Leaving directory '/root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst/src'
[2026-03-18 14:34:41] make[1]: *** [Makefile:39: install] Error 2
[2026-03-18 14:34:41] make[1]: Leaving directory '/root/project.mD99Rk/project1.12.0/project1.12.0/dist/scst/scst/scst'
[2026-03-18 14:34:41] make: *** [Makefile:218: scst_install] Error 2
root@localhost:~#
OEL10.1 failure:
make[3]: Entering directory '/usr/src/kernels/6.12.0-200.74.27.el10uek.x86_64'
CC [M] /root/patch_work/scst_patched_2/scst/src/scst_copy_mgr.o
In file included from /root/patch_work/scst_patched_2/scst/src/../include/scst.h:71,
from /root/patch_work/scst_patched_2/scst/src/scst_copy_mgr.c:16:
/root/patch_work/scst_patched_2/scst/src/../include/backport.h:780:9: error: "secs_to_jiffies" redefined [-Werror]
780 | #define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
| ^~~~~~~~~~~~~~~
In file included from ./include/linux/ktime.h:25,
from ./include/linux/timer.h:6,
from ./include/linux/workqueue.h:9,
from ./include/linux/srcu.h:21,
from ./include/linux/notifier.h:16,
from ./arch/x86/include/asm/uprobes.h:13,
from ./include/linux/uprobes.h:52,
from ./include/linux/mm_types.h:16,
from ./include/linux/mmzone.h:23,
from ./include/linux/gfp.h:7,
from ./include/linux/slab.h:16,
from /root/patch_work/scst_patched_2/scst/src/scst_copy_mgr.c:10:
./include/linux/jiffies.h:540:9: note: this is the location of the previous definition
540 | #define secs_to_jiffies(_secs) ((_secs) * HZ)
| ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[5]: *** [scripts/Makefile.build:229: /root/patch_work/scst_patched_2/scst/src/scst_copy_mgr.o] Error 1
make[4]: *** [/usr/src/kernels/6.12.0-200.74.27.el10uek.x86_64/Makefile:1961: /root/patch_work/scst_patched_2/scst/src] Error 2
make[3]: *** [Makefile:226: __sub-make] Error 2
make[3]: Leaving directory '/usr/src/kernels/6.12.0-200.74.27.el10uek.x86_64'
make[2]: *** [Makefile:83: all] Error 2
make[2]: Leaving directory '/root/patch_work/scst_patched_2/scst/src'
make[1]: *** [Makefile:39: install] Error 2
make[1]: Leaving directory '/root/patch_work/scst_patched_2/scst'
make: *** [Makefile:218: scst_install] Error 2
The temporary fixes for these problems are:
RHEL9.8 patch:
diff -ruN scst/scst/include/backport.h scst_patched/scst/include/backport.h
--- scst/scst/include/backport.h 2025-12-30 03:35:55.000000000 -0500
+++ scst_patched/scst/include/backport.h 2026-03-19 15:49:27.703635379 -0400
@@ -130,6 +130,11 @@
#define BIO_MAX_VECS BIO_MAX_PAGES
#endif
+#if !defined(BIOSET_NEED_INTEGRITY) && \
+ (defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE -0 >= RHEL_RELEASE_VERSION(9, 8))
+#define BIOSET_NEED_INTEGRITY (1 << 4)
+#endif
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) && \
(!defined(RHEL_RELEASE_CODE) || \
RHEL_RELEASE_CODE -0 < RHEL_RELEASE_VERSION(9, 1))
@@ -1796,9 +1801,12 @@
* See also commit 41cb08555c41 ("treewide, timers: Rename from_timer() to
* timer_container_of()") # v6.16.
*/
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0) && \
+ (!defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9, 8))
+#ifndef timer_container_of
#define timer_container_of from_timer
#endif
+#endif
/*
* See also commit 1d27e3e2252b ("timer: Remove expires and data arguments
diff -ruN scst/scst/src/dev_handlers/scst_vdisk.c scst_patched/scst/src/dev_handlers/scst_vdisk.c
--- scst/scst/src/dev_handlers/scst_vdisk.c 2025-12-30 03:35:55.000000000 -0500
+++ scst_patched/scst/src/dev_handlers/scst_vdisk.c 2026-03-18 18:49:36.812621386 -0400
@@ -6523,15 +6523,21 @@
static int vdisk_create_bioset(struct scst_vdisk_dev *virt_dev)
{
int res = 0;
-
+#if defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE -0 >= RHEL_RELEASE_VERSION(9, 8)
+ int flags = BIOSET_NEED_BVECS;
+ if (virt_dev->dif_mode & SCST_DIF_MODE_DEV)
+ flags |= BIOSET_NEED_INTEGRITY;
+#else
+ int flags = BIOSET_NEED_BVECS;
+#endif
EXTRACHECKS_BUG_ON(virt_dev->vdisk_bioset || !virt_dev->blockio);
/* Pool size doesn't really matter */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
virt_dev->vdisk_bioset = &virt_dev->vdisk_bioset_struct;
- res = bioset_init(&virt_dev->vdisk_bioset_struct, 2, 0, BIOSET_NEED_BVECS);
+ res = bioset_init(&virt_dev->vdisk_bioset_struct, 2, 0, flags);
#else
- virt_dev->vdisk_bioset = bioset_create(2, 0, BIOSET_NEED_BVECS);
+ virt_dev->vdisk_bioset = bioset_create(2, 0, flags);
if (!virt_dev->vdisk_bioset)
res = -ENOMEM;
#endif
@@ -6542,7 +6548,8 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 15, 0) && \
(!defined(RHEL_RELEASE_CODE) || \
- RHEL_RELEASE_CODE -0 < RHEL_RELEASE_VERSION(10, 1))
+ (RHEL_RELEASE_CODE -0 < RHEL_RELEASE_VERSION(10, 1) && \
+ RHEL_RELEASE_CODE -0 < RHEL_RELEASE_VERSION(9, 8)))
/*
* See also commit 105ca2a2c2ff ("block: split struct bio_integrity_payload") #v6.15.
*/
RHEL10.2 patch:
diff -ruN scst/scst/include/backport.h scst_patched/scst/include/backport.h
--- scst/scst/include/backport.h 2025-12-30 03:35:55.000000000 -0500
+++ scst_patched/scst/include/backport.h 2026-03-19 15:53:14.845710415 -0400
@@ -240,7 +240,8 @@
#define blk_execute_rq_nowait blk_execute_rq_nowait_backport
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 17, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 17, 0) && \
+ (!defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(10, 2))
static inline unsigned int blk_mq_num_queues(const struct cpumask *mask,
unsigned int max_queues)
{
@@ -1796,9 +1797,12 @@
* See also commit 41cb08555c41 ("treewide, timers: Rename from_timer() to
* timer_container_of()") # v6.16.
*/
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 16, 0) && \
+ (!defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(10, 2))
+#ifndef timer_container_of
#define timer_container_of from_timer
#endif
+#endif
/*
* See also commit 1d27e3e2252b ("timer: Remove expires and data arguments
Kernel 6.12 (OEL10.1) patch:
diff -ruN scst/scst/include/backport.h scst_patched/scst/include/backport.h
--- scst/scst/include/backport.h 2025-12-30 03:35:55.000000000 -0500
+++ scst_patched/scst/include/backport.h 2026-03-25 11:44:52.526700895 -0400
@@ -770,8 +770,10 @@
* See also commit 3740dcdf8a77 ("jiffies: add time comparison functions for 64 bit jiffies")
* # v4.9.
*/
+#ifndef
#define time_is_before_jiffies64(a) time_after64(get_jiffies_64(), a)
#endif
+#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
/*
We found some issues with compilation of SCST-3.10 on PreRelease OS RHEL9.8 and RHEL10.2. Also an issue seen in OEL10.1 with UEK Kernel
RHEL9.8 failure:
RHEL10.2 failure:
OEL10.1 failure:
The temporary fixes for these problems are:
RHEL9.8 patch:
RHEL10.2 patch:
Kernel 6.12 (OEL10.1) patch: