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"); diff --git a/disk-io.c b/disk-io.c index 26e4f6e9..ca2fc383 100644 --- a/disk-io.c +++ b/disk-io.c @@ -1383,9 +1383,14 @@ static int check_super(struct btrfs_super_block *sb, unsigned sbflags) uuid_unparse(sb->fsid, fsid); uuid_unparse(sb->dev_item.fsid, dev_fsid); - error("dev_item UUID does not match fsid: %s != %s", - dev_fsid, fsid); - goto error_out; + if (sbflags & SBREAD_IGNORE_FSID_MISMATCH) { + warning("ignored: dev_item fsid mismatch: %s != %s", + dev_fsid, fsid); + } else { + error("dev_item UUID does not match fsid: %s != %s", + dev_fsid, fsid); + goto error_out; + } } /*