From: Philipp Reisner <philipp.reisner@linbit.com>
To: drbd-announce@lists.linbit.com
Cc: drbd-user@lists.linbit.com
Subject: drbd-9.1.22 and drbd-9.2.11
Date: Mon, 12 Aug 2024 22:24:28 +0200 [thread overview]
Message-ID: <86plqdtrpf.fsf@linbit.com> (raw)
Hello DRBD-users,
A detail I never cared about is if a syscall gets restarted or returns
EINTR after the arrival of a signal. What made me learn this detail is a
customer whose system newly created processes get a signal. Often, a
process open()s the resources it needs to work with first, and on this
occasion, that was a drbd device.
When auto-promote is enabled (which it is by default), DRBD will promote
the drbd device to primary in the open() system call of a user space
process. It needs to exchange some network packets, which can easily
take milliseconds.
Now, when a (non-fatal) signal arrived at just that moment, DRBD
dutifully interrupted the promote operation and returned to user space,
with an errno indicating that the device was not primary.
And here is the problem for a random user-space process, it got an
unexpected errno from open() and terminated.
Then, I learned about EINTR and restartable syscalls. Starting with this
release, DRBD will restart the open() syscall in such a scenario unless
the user prepared to receive an EINTR from open() by calling sigaction()
and omitting SA_RESTART before.
Since the rc.1 the only change is a minor and straightforward fix to the
RDMA transport, which is relevant when the RDMA stack is cleaning up its
objects slowly (or not at all).
9.2.11 (api:genl2/proto:86-122/transport:19)
--------
* Do not block del-minor or down operations if the RDMA/Infiniband
stack cleans up slowly.
* Changes merged from 9.1.22
- Upgrade from partial resync to a full resync if necessary when the
user manually resolves a split-brain situation
- Fix a potential NULL deref when a disk fails while doing a
forget-peer operation.
- Fix a rcu_read_lock()/rcu_read_unlock() imbalance
- Restart the open() syscall when a process auto promoting a drbd device gets
interrupted by a signal
- Remove a deadlock that caused DRBD to connect sometimes
exceptionally slow
- Make detach operations interruptible
- Added dev_is_open to events2 status information
- Improve log readability for 2PC state changes and drbd-threads
- Updated compability code for Linux 6.9
https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.11.tar.gz
https://github.com/LINBIT/drbd/commit/f52e5a3545e17fafd548b6b9c483206c32754955
https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.22.tar.gz
https://github.com/LINBIT/drbd/commit/d7212a2eaeda23f8cb71be36ba52a5163f4dc694
reply other threads:[~2024-08-12 20:24 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86plqdtrpf.fsf@linbit.com \
--to=philipp.reisner@linbit.com \
--cc=drbd-announce@lists.linbit.com \
--cc=drbd-user@lists.linbit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox