diff --git a/scripts/generate-kernel-patch b/scripts/generate-kernel-patch index f763365b7..866cdef00 100755 --- a/scripts/generate-kernel-patch +++ b/scripts/generate-kernel-patch @@ -101,14 +101,20 @@ function process_patch { ( echo "Signed-off-by: ${SIGNED_OFF_BY}" echo "" - "$(dirname $0)/specialize-patch" -v kernel_version="${kernel_version}" + "$(dirname $0)/specialize-patch" \ + -v kernel_version="${kernel_version}" \ + -v SCSI_EXEC_REQ_FIFO_DEFINED="${scsi_exec_req_fifo_defined}" \ + -v SCST_IO_CONTEXT="${scst_io_context}" ) >"${patchdir}/$1" else # echo "Discarded $(wc -l) lines." true fi else - "$(dirname $0)/specialize-patch" -v kernel_version="${kernel_version}" + "$(dirname $0)/specialize-patch" \ + -v kernel_version="${kernel_version}" \ + -v SCSI_EXEC_REQ_FIFO_DEFINED="${scsi_exec_req_fifo_defined}" \ + -v SCST_IO_CONTEXT="${scst_io_context}" fi } @@ -182,9 +188,17 @@ fi # General kernel patches. +scsi_exec_req_fifo_defined=0 +scst_io_context=0 for p in scst/kernel/*-${kernel_version}.patch \ iscsi-scst/kernel/patches/*-${kernel_version}.patch do + if grep -q '^\+#define SCSI_EXEC_REQ_FIFO_DEFINED$' "${p}"; then + scsi_exec_req_fifo_defined=1 + fi + if grep -q '^\+#define SCST_IO_CONTEXT$' "${p}"; then + scst_io_context=1 + fi diffname="${p#scst/kernel/}" diffname="${p%-${kernel_version}.patch}.diff" process_patch < "$p" "${diffname}" diff --git a/scripts/specialize-patch b/scripts/specialize-patch index de5556de7..1c7d9f049 100755 --- a/scripts/specialize-patch +++ b/scripts/specialize-patch @@ -91,11 +91,19 @@ function evaluate(stmnt) { gsub("RHEL_RELEASE_CODE", RHEL_MAJOR * 256 + RHEL_MINOR, stmnt) } - gsub("defined *SCSI_EXEC_REQ_FIFO_DEFINED", "1", stmnt) - gsub("defined *\\( *SCSI_EXEC_REQ_FIFO_DEFINED *\\)", "1", stmnt) + if (SCSI_EXEC_REQ_FIFO_DEFINED != "") + { + gsub("defined *SCSI_EXEC_REQ_FIFO_DEFINED", + SCSI_EXEC_REQ_FIFO_DEFINED, stmnt) + gsub("defined *\\( *SCSI_EXEC_REQ_FIFO_DEFINED *\\)", + SCSI_EXEC_REQ_FIFO_DEFINED, stmnt) + } - gsub("defined *SCST_IO_CONTEXT", "1", stmnt) - gsub("defined *\\( *SCST_IO_CONTEXT *\\)", "1", stmnt) + if (SCST_IO_CONTEXT != "") + { + gsub("defined *SCST_IO_CONTEXT", SCST_IO_CONTEXT, stmnt) + gsub("defined *\\( *SCST_IO_CONTEXT *\\)", SCST_IO_CONTEXT, stmnt) + } do {