btrfs-progs: add mount status check for btrfs-image
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>
Mon, 7 Jul 2014 01:56:51 +0000 (09:56 +0800)
committerDavid Sterba <dsterba@suse.cz>
Fri, 22 Aug 2014 13:07:03 +0000 (15:07 +0200)
When btrfs-image run on a mounted filesystem,
the undergoing fs operations may change what you have imaged a while ago.
In this case, give a warning to remind the user that he may not
get a consistent image he wants.

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
[tweaked the message]
Signed-off-by: David Sterba <dsterba@suse.cz>
btrfs-image.c

index 985aa26..cb17f16 100644 (file)
@@ -2570,12 +2570,22 @@ int main(int argc, char *argv[])
                        num_threads = 1;
        }
 
-       if (create)
+       if (create) {
+               ret = check_mounted(source);
+               if (ret < 0) {
+                       fprintf(stderr, "Could not check mount status: %s\n",
+                               strerror(-ret));
+                       exit(1);
+               } else if (ret)
+                       fprintf(stderr,
+               "WARNING: The device is mounted. Make sure the filesystem is quiescent.\n");
+
                ret = create_metadump(source, out, num_threads,
                                      compress_level, sanitize, walk_trees);
-       else
+       } else {
                ret = restore_metadump(source, out, old_restore, 1,
                                       multi_devices);
+       }
        if (ret) {
                printk("%s failed (%s)\n", (create) ? "create" : "restore",
                       strerror(errno));