On Thu, Oct 11, 2018 at 06:03:20PM +0300, Nikolay Borisov wrote:
> 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. 

All the cases seem to be covered. Do you intend to add the design
document somewhere? The references in the code seem stale and puzzling.

> 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. 

Hm, no better ideas so it can stay and be changed later.

> 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. 

Perfect, thanks.

Now the bad news from me :) There are several coding style and style
issues all over the patches so I'll list them here.

* BTRFS_SUPER_FLAG_CHANGING_FSID_v2 -- V2 with uppercase V, as other
  versioned symbols

* all references in changelogs or comments should refer to the super flag
  as CHANGING_FSID_v2, not FSID_CHANGING, not just CHANGING_FSID, nor
  FSID_CHANGE. This is because we want to be able to search for it and
  find all occurences

* error messages should stick to the preferred format,
  https://btrfs.wiki.kernel.org/index.php/Development_notes#Error_messages

* comments referring to UUID should use "UUID", there's a mixt of
  both ways added by the patches, error messages should use the
  uppercase form too

* find_fsid - type and name should be on one line, parameters on the
  next if they don't fit

* device_list_add - missing space before =

As these are not functional problems, I'll add the patchset to for-next
for testing.

Reply via email to