From: Nikolay Borisov <nborisov@suse.com>
To: linux-btrfs@vger.kernel.org
Cc: Nikolay Borisov <nborisov@suse.com>
Subject: [PATCH 0/6] FSID change kernel support
Date: Thu, 11 Oct 2018 18:03:20 +0300 [thread overview]
Message-ID: <1539270206-27005-1-git-send-email-nborisov@suse.com> (raw)
Hello,
Here is the second posting of the fsid change support for the kernel. For
background information you can refer to v1 [0]. The main changes in this version
are around the handling of possible split-brain scenarios. I've changed a bit
how the userspace code works and now the process is split among 2 transactions.
The first one flagging "we are about to change fsid" and once it's persisted on
all disks a second one does the actual change. This of course is not enough
to guarantee full consistency so I had to extend the device scanning to
gracefully handle such cases. I believe I have covered everything but more
review will be appreciated.
So patch 1 implements the basic functionality with no split-brain handling
whatsoever. Patch 2 is a minor cleanup. Patch 3 deals with a split-brain that
can occur if power loss happens during the initial transaction (the one setting
the beginning flag). Patch 4 adds some information that is needed in the last 2
patches. Patch 5 handles failure between transaction 1 and transaction 2 and
finally patch 6 handles the case of power loss during transaction 1 but for an
fs which has already undergone at least one successful fsid change. More
details about the exact failure modes are in each respective patch.
One thing which could be improved but I ran out of ideas is the naming of the
ancillary functions - find_fsid_inprogress and find_fsid_changed.
I've actually tested the split-brain handing code with specially crafted images.
They will be part of the user-space submissions and I believe I have full
coverage for that.
[0] https://lore.kernel.org/linux-btrfs/1535531774-29830-1-git-send-email-nborisov@suse.com/
Nikolay Borisov (6):
btrfs: Introduce support for FSID change without metadata rewrite
btrfs: Remove fsid/metadata_fsid fields from btrfs_info
btrfs: Add handling for disk split-brain scenario during fsid change
btrfs: Introduce 2 more members to struct btrfs_fs_devices
btrfs: Handle one more split-brain scenario during fsid change
btrfs: Handle final split-brain possibility during fsid change
fs/btrfs/check-integrity.c | 2 +-
fs/btrfs/ctree.c | 5 +-
fs/btrfs/ctree.h | 10 +-
fs/btrfs/disk-io.c | 53 ++++++++---
fs/btrfs/extent-tree.c | 2 +-
fs/btrfs/ioctl.c | 2 +-
fs/btrfs/super.c | 2 +-
fs/btrfs/volumes.c | 196 ++++++++++++++++++++++++++++++++++++----
fs/btrfs/volumes.h | 6 ++
include/trace/events/btrfs.h | 2 +-
include/uapi/linux/btrfs.h | 1 +
include/uapi/linux/btrfs_tree.h | 1 +
12 files changed, 241 insertions(+), 41 deletions(-)
--
2.7.4
next reply other threads:[~2018-10-11 15:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-11 15:03 Nikolay Borisov [this message]
2018-10-11 15:03 ` [PATCH 1/6] btrfs: Introduce support for FSID change without metadata rewrite Nikolay Borisov
2018-10-11 15:03 ` [PATCH 2/6] btrfs: Remove fsid/metadata_fsid fields from btrfs_info Nikolay Borisov
2018-10-11 15:03 ` [PATCH 3/6] btrfs: Add handling for disk split-brain scenario during fsid change Nikolay Borisov
2018-10-11 15:03 ` [PATCH 4/6] btrfs: Introduce 2 more members to struct btrfs_fs_devices Nikolay Borisov
2018-10-11 15:03 ` [PATCH 5/6] btrfs: Handle one more split-brain scenario during fsid change Nikolay Borisov
2018-10-11 15:03 ` [PATCH 6/6] btrfs: Handle final split-brain possibility " Nikolay Borisov
2018-10-19 14:18 ` [PATCH 0/6] FSID change kernel support David Sterba
2018-10-19 14:31 ` Nikolay Borisov
2018-10-19 15:50 ` David Sterba
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=1539270206-27005-1-git-send-email-nborisov@suse.com \
--to=nborisov@suse.com \
--cc=linux-btrfs@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).