On 12.12.19 г. 13:01 ч., damenly.su@xxxxxxxxx wrote: > From: Su Yue <Damenly_Su@xxxxxxx> > > This patchset fixes one reproducible bug and add two split-brain > cases ignored. > > The origin code thinks the final state of successful synced device is > always has INCOMPAT_METADATA_UUID feature. However, a device without > the feature flag can be the one pull into disk. This is what handled > in the patchset. Test images are added in btrfs-progs part. > > Patch[1] fixes a bug about wrong fsid copy. > Patch[2] is for the later patches. > Patch[3-5] add the forgotten cases. > Patch[6] just does simple code movement for grace. > > The set passes xfstests-dev without regressions. > > Su Yue (6): > btrfs: metadata_uuid: fix failed assertion due to unsuccessful device > scan > btrfs: metadata_uuid: move split-brain handling from fs_id() to new > function > btrfs: split-brain case for scanned changing device with > INCOMPAT_METADATA_UUID > btrfs: split-brain case for scanned changed device without > INCOMPAT_METADATA_UUID > btrfs: copy fsid and metadata_uuid for pulled disk without > INCOMPAT_METADATA_UUID > btrfs: metadata_uuid: move partly logic into find_fsid_inprogress() > > fs/btrfs/volumes.c | 193 +++++++++++++++++++++++++++++---------------- > 1 file changed, 125 insertions(+), 68 deletions(-) > I'm currently on holiday but the fsid change feature has a design document here: https://github.com/btrfs/btrfs-dev-docs/blob/master/fsid-change.txt it lists all the cases I have handled. If you think there are other please first describe them in prose following the parlance set out in the document to ease reasoning.
