mbox series

[0/4] More split-brain fixes for metadata uuid feature

Message ID 20200110121135.7386-1-nborisov@suse.com (mailing list archive)
Headers show
Series More split-brain fixes for metadata uuid feature | expand

Message

Nikolay Borisov Jan. 10, 2020, 12:11 p.m. UTC
Here are 4 patches which fix a newly found split-brain scenario in the
METADATA_UUID_INCOMPAT code. They are mostly the identical with Su's
original submission but I have reworked the changelogs and some function
names. Hence, I retained his authorship of the patches.

First 2 patches factor out some code with the hopes of making find_fisd a bit
more readable and simplifying the myriad of nested 'if' in device_list_add.

Patch 3 extends find_fsid_changed to handle the case where a disk with
METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS is scanned after a disk
which has successfully been switched to FSID == METADATA_UUID state and has
created btrfs_fs_devices.

Patch 4 handles the counterpart situation - a fully switched disk is scanned
after one which has had METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS
set.

This series should be applied to stable branches following 5.0 when the
metadata_uuid feature got introduced.

This patchset was tested with btrfs-progs' misc 034-metadata-uuid test and a full
xfstest run with no regressions. I will also be sending an improvement to the
test case which exercises the newly added code.

  btrfs: Call find_fsid from find_fsid_inprogress
  btrfs: Factor out metadata_uuid code from find_fsid.
  btrfs: Handle another split brain scenario with metadata uuid feature
  btrfs: Fix split-brain handling when changing FSID to metadata uuid

 fs/btrfs/volumes.c | 158 ++++++++++++++++++++++++++++-----------------
 1 file changed, 100 insertions(+), 58 deletions(-)

--
2.17.1

Comments

David Sterba Jan. 14, 2020, 5:14 p.m. UTC | #1
On Fri, Jan 10, 2020 at 02:11:31PM +0200, Nikolay Borisov wrote:
> Here are 4 patches which fix a newly found split-brain scenario in the
> METADATA_UUID_INCOMPAT code. They are mostly the identical with Su's
> original submission but I have reworked the changelogs and some function
> names. Hence, I retained his authorship of the patches.
> 
> First 2 patches factor out some code with the hopes of making find_fisd a bit
> more readable and simplifying the myriad of nested 'if' in device_list_add.
> 
> Patch 3 extends find_fsid_changed to handle the case where a disk with
> METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS is scanned after a disk
> which has successfully been switched to FSID == METADATA_UUID state and has
> created btrfs_fs_devices.
> 
> Patch 4 handles the counterpart situation - a fully switched disk is scanned
> after one which has had METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS
> set.
> 
> This series should be applied to stable branches following 5.0 when the
> metadata_uuid feature got introduced.
> 
> This patchset was tested with btrfs-progs' misc 034-metadata-uuid test and a full
> xfstest run with no regressions. I will also be sending an improvement to the
> test case which exercises the newly added code.
> 
>   btrfs: Call find_fsid from find_fsid_inprogress
>   btrfs: Factor out metadata_uuid code from find_fsid.
>   btrfs: Handle another split brain scenario with metadata uuid feature
>   btrfs: Fix split-brain handling when changing FSID to metadata uuid

I'm adding it to for-next, thanks.
David Sterba Jan. 21, 2020, 3:23 p.m. UTC | #2
On Tue, Jan 14, 2020 at 06:14:03PM +0100, David Sterba wrote:
> On Fri, Jan 10, 2020 at 02:11:31PM +0200, Nikolay Borisov wrote:
> > Here are 4 patches which fix a newly found split-brain scenario in the
> > METADATA_UUID_INCOMPAT code. They are mostly the identical with Su's
> > original submission but I have reworked the changelogs and some function
> > names. Hence, I retained his authorship of the patches.
> > 
> > First 2 patches factor out some code with the hopes of making find_fisd a bit
> > more readable and simplifying the myriad of nested 'if' in device_list_add.
> > 
> > Patch 3 extends find_fsid_changed to handle the case where a disk with
> > METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS is scanned after a disk
> > which has successfully been switched to FSID == METADATA_UUID state and has
> > created btrfs_fs_devices.
> > 
> > Patch 4 handles the counterpart situation - a fully switched disk is scanned
> > after one which has had METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS
> > set.
> > 
> > This series should be applied to stable branches following 5.0 when the
> > metadata_uuid feature got introduced.
> > 
> > This patchset was tested with btrfs-progs' misc 034-metadata-uuid test and a full
> > xfstest run with no regressions. I will also be sending an improvement to the
> > test case which exercises the newly added code.
> > 
> >   btrfs: Call find_fsid from find_fsid_inprogress
> >   btrfs: Factor out metadata_uuid code from find_fsid.
> >   btrfs: Handle another split brain scenario with metadata uuid feature
> >   btrfs: Fix split-brain handling when changing FSID to metadata uuid
> 
> I'm adding it to for-next, thanks.

Moving to misc-next.