Commit Graph
9385 Commits
Author SHA1 Message Date
Gleb Chesnokov b8e386a6bc build: Add warnings-as-errors mode
Add a WERROR=y|n build setting that keeps the local default unchanged
and exports -Werror for user-space and kernel compilation. Honor the same
setting in direct regression kernel builds.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov fb47ab3ef1 .github/workflows: Publish master package snapshot
Publish a rolling prerelease after the complete master package
matrix succeeds. Validate and bundle every downloaded artifact before
replacing the previous master-rpm snapshot.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 88476ff915 .github/workflows: Build package matrix
Build the six RPM targets resolved from ABT_KERNELS and portable
Ubuntu DKMS and user-space packages. Upload commit-specific GitHub Actions
artifacts for every target.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 12c599b3c4 build: Add containerized RPM artifact target
Expose verified RPM artifact production through a repository Make
target. Use Docker only as the Rocky Linux and Oracle Linux toolchain,
keep the source worktree read-only and support the selected UEK package
layouts.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov be6734bf3d .github/workflows: Generate regression kernel matrix
Generate the existing 53-kernel GitHub regression subset from
ABT_KERNELS instead of duplicating exact versions in the workflow.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 84fdf96a0a scripts: Generate CI kernel matrices
Keep exact kernel versions only in ABT_KERNELS. Resolve the bounded GitHub
regression and RPM subsets from stable selectors, and reject missing or
ambiguous matches.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov a493057d09 docs: Refine patch development workflow
Distinguish temporary low-risk instrumentation from reviewable patches.

Keep the complete lint gate mandatory and tighten task contract semantics.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov aa5cc2dd70 docs: Fix obvious typos
Correct duplicated and misspelled words in user and developer
documentation. No code or output strings are changed.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 220fcc95ed scst_dlm: Consolidate log format strings
Merge adjacent literals that only wrapped log messages across source
lines and remove a duplicate blank line. Keep the segmented lockspace
dump command unchanged because its fragments document the pipeline.

The string values and control flow remain unchanged.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov fd76859375 scst_lib: Consolidate split string literals
Merge adjacent literals used to wrap diagnostic format strings. Adjust
the affected call formatting and add braces around the exposed else arm
so the changed lines follow kernel style.

The string values and control flow remain unchanged.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 7a700c1447 scst_lib: Remove redundant terminal returns
Remove no-op return statements at the end of void functions. Keep the
labeled terminal return in tm_dbg_task_mgmt(), where it is required as
the target statement of goto out.

This patch does not change any functionality.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 91591e4749 scripts: Ignore complex macro diagnostics
SCST uses macro fragments for sense tuples, initializer lists and other
contexts where enclosing the expansion in parentheses would change its
meaning. Treat COMPLEX_MACRO as a project-wide checkpatch exception.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 28b811135d scripts: Add ShellCheck lint target
Add a tracked runner that discovers Bash scripts under scripts/ and
checks them with external source resolution enabled. Expose it through
the top-level Makefile.

Run the same entry point from the patch lint workflow whenever a range
touches Bash lint inputs, and report its result explicitly.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov f788bfd0d6 scripts: Fix ShellCheck diagnostics
Quote scalar arguments and use arrays for command option lists so paths
and options retain their boundaries. Preserve intentional version-field
splitting with narrow documented suppressions.

Also handle GNU getopt output without losing quoted arguments and
remove warnings about masked statuses, unused values and ambiguous test
expressions.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 055865e734 docs: Remove obsolete Subversion references
The tracked SVN tag ledger and checkout instructions predate the move to
Git and no longer describe a supported workflow.

Remove the obsolete material, point Debian metadata at GitHub and keep
the retired Gentoo guide generic about its old source location.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 1a1a75d9ed scripts: Remove non-Git VCS support
Mercurial branches remain in source-listing and cleanup helpers after
Subversion support was retired. SCST development now uses Git.

Remove Mercurial detection and commands together with stale Subversion
wording. Preserve the existing no-VCS source-list fallback and all Git
behavior.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 0aa6689c3a scripts: Validate monitor intervals
Reject zero and nonnumeric sampling intervals before entering the
monitor loops, avoiding division errors and repeated failed sleep
calls.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 7057358960 scripts/test-persistent-reservation: Stop after failures
Abort the dependent reservation sequence when an sg_persist command
fails instead of continuing to change device state. Quote the device
argument so it is passed to every command unchanged.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 5cc6d87b7b scripts: Fix helper edge cases
Propagate patch and module-list failures, normalize the script
directory, and expand the actual Mercurial subrepository name when
matching paths. Keep the existing no-optional-patches behavior
unchanged.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov c93836ed2d scripts/generate-release-archive: Preserve file arguments
Keep explicitly listed files as separate array elements instead of
joining them into one invalid path. Use pipefail so an input-listing
error cannot be hidden by tar.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 91517609cd scripts/generate-kernel-patch: Preserve split patches
Write the specialized patch unchanged when diffstat is unavailable,
instead of creating an empty file. Propagate specialization,
output-directory, and generated-header failures to the caller.

Treat status 1 from diff as successful when generating QLogic in-tree
patches, while continuing to propagate actual diff failures.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 114d44cd51 scripts/run-regression-tests: Fix failure handling
Propagate patch, source-copy, and patch-generation failures instead
of continuing with incomplete regression inputs. Stop immediately
when the output directory cannot be created.

Also correct the documented options and keep Debian package output
in its intended log file.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 3056c73db8 scripts: Validate kernel downloads
Download kernel archives through a temporary file, validate XZ data,
and only publish complete files. Reject corrupt cached downloads and
propagate XZ pipeline failures during extraction and patching.

Wire the regression runner cache option to the kernel_downloads
variable used by the shared download helpers.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 82b5d44a0e docs: Make HTML checks reliable
Fail the QLogic documentation check when tidy is unavailable or any
HTML file does not validate. Mark both HTML check targets as phony so
a file named check cannot silently suppress validation.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 5a56e2339b dpkg: Fix package metadata defaults
Keep user-provided maintainer identity values and only install the
defaults when these variables are empty. Generate debian/compat only
after dpkg-query succeeds so a failed query cannot leave an empty file.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 1a7c0c9b3c scst: Move build mode updates into recipes
Do not update the build_mode file while make is only expanding the
recipe, since that also happens for dry runs. Run the update as the
recipe itself so write failures are reported to the caller.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov f30bf2b208 Makefiles: Propagate recursive command failures
Return the failing submake status from the top-level and Debian build
loops instead of turning an early failure into success. Collect and
check the statuses of the parallel iSCSI and SRP cleanup jobs as well.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov f0b22d068b www: Fix broken website resources
Remove the obsolete Piwik integration that loads a project page as
JavaScript and breaks every top-level page.

Replace unavailable company logos with stable text links, remove the
unused tooltip code, and update the stale zero-copy reference. Make the
website check fail when tidy is unavailable or reports an error.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 1faec3809a docs: Remove obsolete pre-3.10 kernel guidance
Drop Linux 2.6 build examples, an obsolete SRP initiator warning and
iSCSI daemon advice for a poll() bug fixed before the supported kernel
range.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 7a92e60868 scst: Remove pre-3.10 compatibility code
Move the minimum kernel check into the shared backport header so all
kernel components reject Linux versions older than 3.10 and RHEL 6.

Simplify now-unreachable compatibility conditions and remove the unused
QLogic patch for Linux 2.6.26 and 2.6.27.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 2b1dc822e8 scripts: Remove pre-3.10 kernel support
Reject unsupported kernel versions before download or patch generation.
Remove 2.x paths, RHEL 5/6 and Scientific Linux repositories, and
compatibility branches that cannot run with the Linux 3.10 minimum.

Keep the maintained ABT_KERNELS matrix unchanged.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov f6ae51b613 scripts/specialize-patch: Fix GNU Awk compatibility
GNU Awk 5.4 rejects unescaped repetition operators at the start of a
regular expression and C-style comments in the program text. Escape the
literal diff markers and use an Awk comment so patch specialization
works with current GNU Awk.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 962d6f1dc1 docs: Remove obsolete procfs instructions
The generated SRPT documentation still contained commands for the removed
/proc/scsi_tgt interface. The comparison page advertised procfs as an SCST
option and Debian metadata named deleted procfs sources. Remove these stale
references while retaining scstadmin migration support.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 3a6fb66c83 scst: Remove residual procfs code
Procfs support was removed in 2019, but dead configuration guards,
patch specialization logic and unused declarations remained. Remove these
remnants and simplify paths that can no longer receive procfs-only objects.
2026-08-21 19:58:59 +03:00
Gleb Chesnokov 8e19e103d1 www: Point users at maintained documentation
The website links to stale deployed manuals, generated pages and
a QLogic snapshot that is not in the repository. Several feature
summaries also describe code that has since changed or disappeared.

Commit 7aade0a109 ("Makefile: Make the qla2x00t-32gbit driver
the default QLogic FC driver") changed the default QLogic tree.
Commit 3a8d70b166 ("- Remove old scst_db stuff which no longer works
with even procfs.") removed database-backed scstadmin configuration.
Commit d84fc0783d ("vdisk_fileio: Add support for asynchronous I/O
processing") removed O_DIRECT as a fileio_tgt-only distinction.

Linux commit 066465251303 ("tgt: removal") removed scsi_tgt in 2014,
turning the website prediction into a completed historical event.
Commit 10ebf80e7a ("Docs update") merged the SGV cache text into
doc/scst_pg.sgml.

Link website entries to maintained repository sources, use the real
lowercase make rpm target, update the affected feature descriptions
and remove references to files that are not tracked.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov b389e8d773 scst_local: Document current local target behavior
The scst_local README omits exported attributes, claims dynamic sessions
cannot be saved and uses an invalid module path. Its walkthrough also
creates and exports a writable backing file on the same host without
a safety boundary.

Commit 84d335f131 ("scst_local: Make the SCSI host number available
in sysfs") added host_no. Commit 00caf4d5c9 ("scstadmin: Make
-write_config save the scst_local session name") added the missing
serialization.

Document host_no and version from scst_local.c and remove the obsolete
session warning. Use ./scst_local.ko, fix the malformed sysfs path and
explain that add_default_tgt=0 suppresses default objects. Require
an isolated host and disposable backing path while retaining the
recursion, mount and swap restrictions.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov be60953eb1 fcst: Fix FCoE target setup instructions
The FCST setup has stale step references and an invalid target enable
path. A reader following it reaches the wrong prerequisites and cannot
address enabled after entering the target directory.

Commit 87bde8ab0e ("fcst/README: Update this README file") shortened
the procedure without updating its cross-references. Commit 7a12737c9d
("Simplify README by eliminating example using of ini_groups.") changed
the LUN setup but left $LPORT duplicated in the following path.

Repair the references, terminology and relative enable command,
and clarify the LUN 0 compatibility note. The same procedure installs
packages, creates an FCoE interface, loads modules and exports storage,
so require authorization for the host, CNA, fabric, initiators and
backing devices before it is run.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov df124ce643 qla2x00t: Update QLogic target documentation
The legacy and newer QLogic guides disagree about the default driver,
supported adapters, NPIV, sysfs layout and module lifecycle. The
HOWTO also carries SVN, kernel replacement, firmware flashing and
discovery commands that can disrupt active storage.

Commit 7aade0a109 ("Makefile: Make the qla2x00t-32gbit driver
the default QLogic FC driver") selected the newer tree by default.
Commit a788a4efd7 ("Newer version of QLogic target driver with 16G
(26xx/83xx) support") added that tree and disabled legacy NPIV target
callbacks. Commit 08e532715d ("Remove procfs support") removed the
old management path.

Use each qla2xxx_pci_tbl[] and qla_os.c for hardware and firmware facts.
Document QLA_32GBIT=no, current per-port sysfs state, reset effects
and the matched qla2xxx_scst and qla2x00tgt modules. Replace unsafe
generic recipes with repository or vendor sources and mark every HBA,
fabric, target and backing-device operation as live.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov b836a17e35 srpt: Update RDMA target documentation
The SRPT guides mix current RDMA/CM code with Linux 2.6, procfs and
OFED 1.5 procedures. Their parameter defaults, session names and
tuning advice no longer describe the driver built by this tree.

Commit 020ec68ddc ("ib_srpt: Change default behavior from using SRQ
to not using SRQ") changed receive queues, and commit 434207ab53
("ib_srpt: Restore immediate data support") changed request sizing.
Commit fa58faf95b ("ib_srpt: Add RDMA/CM support") added the IP-based
session naming mode.

Commit 08e532715d ("Remove procfs support") invalidated the in-tree
setup, while commit d6fd03107f ("Split Makefiles: move kernel build
rules into Kbuild files") moved the fault-injection flag.

Commit c2bd2e8bf5 ("ib_srpt: Remove "thread" kernel module parameter and keep thread=1 behavior - the other two modes could cause soft lockup complaints")
made threaded completion unconditional.

Use ib_srpt.c, ib_srpt.h and conftests for current behavior. Scope
SCSI multiqueue advice after Linux commit f664a3cc17b7 ("scsi: kill
off the legacy IO path"), and mark OFED, HA, benchmark and test
recipes as historical or destructive.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 011e52c55a scstadmin: Document current configuration interfaces
The scstadmin manuals still describe the 2.0 parser, a database backend
and SysV-only service integration. They omit current ALUA operations
and call -check_config an offline check even though it reads live sysfs.

Commit 3a8d70b166 ("- Remove old scst_db stuff which no longer
works with even procfs.") removed the database implementation. The
current grammar and apply order live in scstadmin.sysfs/scstadmin,
while SCST/SCST.pm consumes the kernel-provided sysfs metadata.

Document the current commands, quoting, comments, DEVICE references
and systemd environment handling. Keep deprecated-format conversion,
but explain that it reconciles live state. Mark conversion, checking,
examples, installation and service operations with their root, sysfs
and exported-storage effects.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 9bdffe6fe6 iscsi-scst: Retire obsolete integration advice
The iSER and distribution guides prescribe OFED 1.5 installation,
deleting packaged RDMA modules, patching kernel builds and applying
host-wide tuning. The Gentoo procedure targets SVN, while the bundled
OCF agents are neither built nor exercised by repository CI.

Commit 025574018e ("isert: Support building against MOFED without
patching the kernel build system") established the supported
header-selection model. Current Makefile conftests and isert-scst
sources define the remaining compatibility and transport limits.

Replace fixed OFED and tuning recipes with those sources and matching
vendor guidance. Reduce the Gentoo and resource-agent documents to
historical integration notes, and spell out their module, sysfs,
daemon, session and storage side effects before any reuse.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 9a45498bc7 iscsi-scst: Document current administration interfaces
The iSCSI READMEs, HOWTO and man pages combine current code with procfs,
old daemon configuration and fixed runtime output. The result documents
invalid paths, the wrong object creation order and unsafe live commands.

Commit 08e532715d ("Remove procfs support") removed the main obsolete
interface. Commit 70eb596f60 ("Rework iSCSI aborts to make them more
correct and remove recent workarounds (one more post-IET cleanup)")
added the SCST abort callback requested by an old ToDo entry.

Use iscsi_scst.h, kernel/config.c and usr/config.c for the kernel and
daemon contract. Correct sysfs ownership, authentication limits, setup
ordering, logging and dynamic output, and remove the completed task.

Keep iscsi-scstd.conf and iscsi-scst-adm documented because current code
still consumes them, but direct new setups to scst.conf. Replace the
removed service command and warn before exposing storage, credentials,
portals or sessions.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov e7ad7e093e scst_user: Document the current userspace ABI
The scst_user specification copies ioctl structures and command payloads
that predate several ABI extensions. Building a handler from those
layouts can select the wrong union member, alignment or completion path.

Commit 3fc775c75a ("EXTENDED COPY support") added remapping payloads.
Commit daee4dcb7e ("WRITE SAME command improvements") added WRITE
SAME descriptors. Commit d1bd22afd9 ("scst_user: avoid global locks")
left the explicit unregister ioctl as an obsolete no-op.

Use scst/include/scst_user.h and scst_user.c as the producer-side
source of truth. Synchronize registration, command, reply and subcommand
layouts, version checks, reserved fields and ioctl rules.

Update the fileio_tgt, stpgd and event guides from current code. Make
live-storage and event-consumption risks explicit.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 59e915e822 doc/scst_pg.sgml: Update the programming guide
The programming guide presents copied structure layouts, callbacks
and management paths as current interfaces. API and build changes have
left those copies describing fields and operations that no longer exist.

Commit 08e532715d ("Remove procfs support") removed the documented
procfs callbacks and paths. Commit 2090b6811a ("qla2x00t: remove
detect() callback") moved QLogic setup out of the template detect hook.

Make scst/include/scst.h and scst/SysfsRules authoritative, and label
embedded declarations as historical outlines. Update callback names,
QLogic initialization, sysfs trace commands and build modes.

The supported kernels in nightly/conf/nightly.conf also span different
Kconfig and logging interfaces. Refer readers to the exact target
kernel instead of prescribing fixed debug symbols, buffer limits and
syslog paths.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 1bc3f178e7 scst: Replace obsolete cluster setup guidance
README.dlm embeds a 2015 Pacemaker recipe that disables quorum and
fencing. README.drbd also says persistent reservation state is never
shared between nodes. The first is unsafe for shared storage and the
second contradicts the current cluster_mode implementation.

Commit 6420070cb9 ("scst: Synchronize persistent reservation
state between cluster nodes") added DLM-backed reservation
synchronization. The current contract lives in scst_dlm.c and
scst_pres.c, while fencing and resource-manager policy remain
outside SCST.

Replace the fixed Pacemaker commands with DLM dependencies and startup
and shutdown ordering. Require fencing, describe cluster_mode, retain
the DRBD protocol C requirement and leave multipath policy to the
installed initiator stack.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov b1472d7c07 scst: Bring core documentation in sync with code
The core guides have drifted across VDISK, sysfs, build modes,
performance tuning and cache semantics. Some advice requires removed
kernel patches, prescribes CFQ unconditionally, or treats volatile
write-back data as durable.

Use scst_vdisk.c for backend options, current sysfs code for attributes,
scst/Makefile for build_mode.h and nightly/conf/nightly.conf for
the kernel support boundary. Correct the enabled and tgt tokens and
document the T10-PI protection SG count.

Commit 9a0c18aa1c ("scst: Disable I/O context sharing for kernel
v4.21 and later kernels") limits I/O grouping to old kernels. Linux
commit f664a3cc17b7 ("scsi: kill off the legacy IO path") also makes
CFQ advice invalid for current kernels.

Commit d84fc0783d ("vdisk_fileio: Add support for asynchronous
I/O processing") added direct I/O to VDISK, and commit 3fc775c75a
("EXTENDED COPY support") implemented another open ToDo item. Remove
both completed tasks and replace stale performance and durability
claims with behavior derived from the current stack.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 860ce48072 docs: Warn about destructive performance tests
README.performance runs fio against a block device, exports LUNs, logs
in iSCSI sessions and may enable multipath. Its placeholders look
copyable, but using the wrong path or host can overwrite storage and
change both target and initiator state.

Put an explicit safety boundary before the first command. Require
authorization for the exact hosts, transports and configuration, and
allow the workflow only with verified disposable backing devices.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov afa52076f3 docs: Update kernel issue reporting guidance
All four AskingQuestions copies direct users to the removed top-level
Linux REPORTING-BUGS file. They also present reports built around Linux
2.6, procfs and obsolete module names without an age marker.

Point each copy at
Documentation/admin-guide/reporting-issues.rst, the current kernel
reporting guide. Keep the old reports as examples of useful diagnostic
detail, but label them historical so their commands are not reused as
SCST setup instructions.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 9129391ac3 docs: Refresh build and installation guides
The top-level guides still describe retired source, QLogic, service and
kernel-support workflows. Following them can select the wrong driver,
cross-compile only part of the tree, or misstate module-signing policy.

Commit 7aade0a109 ("Makefile: Make the qla2x00t-32gbit driver
the default QLogic FC driver") made the newer tree the default.
Commit 0d3c9018af ("debian, scstadmin: Add systemd scst.service")
added the installed systemd unit.

Point source users at GitHub and kernel support at
nightly/conf/nightly.conf. Separate kernel and user-space cross builds,
follow the current service recipes, and make module acceptance depend
on the target kernel and platform policy.
2026-08-21 10:05:36 +03:00
Gleb Chesnokov 51141a8957 docs: Add patch development and review workflows
Add repository-local skills for developing, linting, and independently
reviewing committed SCST patch ranges.

Keep lint in the main agent, require it before a terminal read-only
reviewer, and bound review-driven revisions to three attempts.
2026-08-21 10:05:36 +03:00