diff options
author | David Sterba <dsterba@suse.com> | 2018-06-18 18:15:12 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-08-07 11:18:54 +0200 |
commit | a8985f549cb897e28999bf3d8cdac78cc2d1555e (patch) | |
tree | b2379f578e535c120a78bfe88754fa140e3df890 /btrfstune.c | |
parent | 7faaca0d9f78f7162ae603231f693dd8e1af2a41 (diff) |
btrfs-progs: btrfstune: allow to continue uuid change
When the 'btrfsune -u' command is interrupted, the final filesystem fsid
is not written to the superblock and it cannot be mounted. Too bad that
'btrfstune' cannot continue to finish the UUID change as it should.
This patch fixes that and passes the relaxed flags for superblock and
only warns when it detects the fsid mismatch. As this is something that
should be noted in case it would be needed for further debugging, it's
not just silent.
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'btrfstune.c')
-rw-r--r-- | btrfstune.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/btrfstune.c b/btrfstune.c index 889b931c..eb13b7be 100644 --- a/btrfstune.c +++ b/btrfstune.c @@ -474,7 +474,8 @@ int main(int argc, char *argv[]) return 1; } - ret = check_mounted_where(fd, device, NULL, 0, NULL, SBREAD_DEFAULT); + ret = check_mounted_where(fd, device, NULL, 0, NULL, + SBREAD_IGNORE_FSID_MISMATCH); if (ret < 0) { error("could not check mount status of %s: %s", device, strerror(-ret)); @@ -521,9 +522,9 @@ int main(int argc, char *argv[]) if (random_fsid || new_fsid_str) { if (!force) { warning( - "it's highly recommended to run 'btrfs check' before this operation"); - warning( - "also canceling running UUID change progress may cause corruption"); +"it's recommended to run 'btrfs check --readonly' before this operation.\n" +"\tThe whole operation must finish before the filesystem can be mounted again.\n" +"\tIf cancelled or interrupted, run 'btrfstune -u' to restart."); ret = ask_user("We are going to change UUID, are your sure?"); if (!ret) { fprintf(stderr, "UUID change canceled\n"); |