summaryrefslogtreecommitdiff
path: root/convert
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2017-10-26 15:28:37 +0800
committerDavid Sterba <dsterba@suse.com>2017-11-14 15:59:00 +0100
commitda2659b090af383dea6dec71d2d4e128c643d455 (patch)
treef0b8ee3daf7906de8f57fae8da5d457fb2cb0a5c /convert
parentfec462240d7722a5952969a1b4c39ce719661ed7 (diff)
btrfs-progs: convert: Open the fs readonly for rollback
For rollback, we only needs to open the fs to check if it meets the condition to rollback. And this RW read makes us failed to rollback btrfs with v2 space cache. In fact, we don't even start a transaction during rollback. So open the fs RO for rollback, to avoid v2 space cache problem. Reported-by: Gu Jinxiang <gujx@cn.fujitsu.com> Reviewed-by: Gu JinXiang <gujx@cn.fujitsu.com> Tested-by: Gu JinXiang <gujx@cn.fujitsu.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'convert')
-rw-r--r--convert/main.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/convert/main.c b/convert/main.c
index 67616c4b..af285531 100644
--- a/convert/main.c
+++ b/convert/main.c
@@ -1529,7 +1529,13 @@ static int do_rollback(const char *devname)
goto free_mem;
}
fsize = lseek(fd, 0, SEEK_END);
- root = open_ctree_fd(fd, devname, 0, OPEN_CTREE_WRITES);
+
+ /*
+ * For rollback, we don't really need to write anything so open it
+ * read-only. The write part will happen after we close the
+ * filesystem.
+ */
+ root = open_ctree_fd(fd, devname, 0, 0);
if (!root) {
error("unable to open ctree");
ret = -EIO;