summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--btrfstune.c9
-rw-r--r--disk-io.c11
2 files changed, 13 insertions, 7 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");
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;
+ }
}
/*