Commit Graph
9392 Commits
Author SHA1 Message Date
Gleb Chesnokov 3c7a6df0a8 .github/workflows: Trust Ubuntu package checkout
Mark the mounted GitHub workspace as a safe Git directory inside Ubuntu
package containers.

This keeps tracked source enumeration and version metadata available to
make dpkg.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov 726f91559c .github/workflows: Skip disabled regression analyzers
Do not install sparse or build smatch in jobs that disable both.

Check for each tool only when the corresponding analysis is enabled.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov 06857c81cb .github/workflows: Build Ubuntu 20.04 packages
Build Ubuntu 20.04 and 24.04 DEB artifacts in release-specific job
containers with explicit kernel headers.

Publish one bundle per Ubuntu LTS target and keep the README independent of
matrix versions.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov 934fd4e6d1 scripts: Add kernel versions to RPM bundle names
Use normalized RPM matrix kernel versions in rolling snapshot archive
names. Keep vendor suffixes in package metadata and leave Ubuntu DKMS
independent of the runner kernel.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov f5d133af6e .github/workflows: Drop redundant GCC build
Keep the standalone CI matrix focused on Clang. GCC is already
exercised by Ubuntu DEB and RPM package builds with WERROR enabled.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 5f9d79a099 .github/workflows: Avoid duplicate branch builds
Run CI and package builds for pull requests and for pushes to master.
Avoid running both event types for each same-repository PR update.

Keep manual package workflow runs available.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov d29a7fe26e .github/workflows: Configure warnings-as-errors policy
Enable WERROR=y for CI and package builds so warnings in SCST code
are fatal.

Keep WERROR=n for regression and Coverity because these workflows
must tolerate failures outside strict SCST package gates.
2026-08-25 12:10:06 +03:00
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