Contributing¶
This page covers contributions to the RMR and BRMR kernel modules. Corrections or additions to this documentation itself follow a separate, lighter flow in the documentation repository.
Scope and repositories¶
Code (RMR and BRMR kernel modules): https://github.com/ionos-cloud/RMR.
Documentation (this site): a separate repository. Please do not mix code and documentation changes in the same patch.
Reporting bugs¶
File bugs on the source-code repository’s issue tracker. A useful report includes:
Kernel version (
uname -r) and distribution.RMR commit being tested (
git log -1 --oneline).Output of
modinfofor the loaded RMR/BRMR modules.Relevant
dmesgaround the failure.Steps to reproduce.
Whether the bug is reproducible on every run or intermittent.
For security-sensitive issues, please do not file a public issue — contact the maintainers privately.
Building from source¶
RMR and BRMR are out-of-tree Linux kernel modules.
Install kernel headers matching the target kernel (
linux-headers-$(uname -r)on Debian/Ubuntu).makein the source-code repository root.Load modules in dependency order:
rtrs-*, thenrmr-*, thenbrmr-*. Unload in reverse order.
See the User/admin guide to RMR cluster management for a full two-node bring-up.
Testing¶
TBD
Coding style¶
RMR and BRMR follow the Linux kernel coding style. Read it once:
Before submitting, run the checks bundled in scripts/:
scripts/checkpatch.pl --strict <patch>on every patch in the series. Errors must be fixed; warnings must be fixed or justified in the commit message.scripts/check-style.shfor whitespace and formatting.
Patches that have not been run through checkpatch.pl will typically be bounced back.
Commit message format¶
Commit messages follow kernel conventions. Your git log should blend in with the existing history.
Subject line
<subsystem>: <lowercase imperative summary>
Subsystem prefixes used in this tree include:
rmr,rmr-clt,rmr-srv,brmr,brmr-clt,brmr-srv. Match existing use; introduce a new prefix only when genuinely distinct.Imperative mood (“add”, “fix”, “remove” — not “added” / “fixes”).
Body
Blank line after the subject.
Describe user-visible behaviour changes, any locking or ABI implications, and how you tested.
Reference related commits by their short hash and subject when relevant.
Trailers
Trailers sit at the bottom of the body, separated by a blank line. This project follows the Linux kernel’s trailer conventions (Fixes:, Reported-by:, Reviewed-by:, Tested-by:, Co-developed-by: / Signed-off-by: pairs, etc.). For the authoritative rules on which trailers to use and the order they appear in, see the kernel’s submitting-patches document:
Every commit must end with your own Signed-off-by: (see Licensing and sign-off below).
Licensing and sign-off¶
License¶
RMR and BRMR are licensed under GPL-2.0-or-later. Every new source file must carry an SPDX header on its first line:
// SPDX-License-Identifier: GPL-2.0-or-later
Use /* ... */ for headers where C99 line comments are not appropriate, and the shell/Makefile comment syntax (# SPDX-License-Identifier: ...) for build files. Also add an SPDX-FileCopyrightText line where the copyright holder is not already obvious from repository-wide conventions.
Developer Certificate of Origin¶
Contributions are accepted under the Developer Certificate of Origin (DCO), version 1.1. By adding a Signed-off-by: line to a commit, you certify the following:
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Signing off¶
Every commit must end with a Signed-off-by: trailer. Use a known identity — no anonymous contributions — and make sure the email matches git config user.email:
Signed-off-by: Random J Developer <random@developer.example.org>
The easiest way to add it is with git commit -s. Patches without sign-off will not be merged.
Submitting patches¶
Submit changes as a GitHub pull request against the source-code repository.
Fork the repository and create a topic branch off the latest
main.Make your changes as one or more logical commits. Each commit must:
Contain one self-contained change — do not mix unrelated fixes or refactors.
Pass
scripts/checkpatch.pl.End with your
Signed-off-by:trailer.
Push to your fork and open a PR to
developbranch. The PR description should summarise the series and, where applicable, point to the issue being fixed.