diff mbox

[v2] btrfs-progs: Doc: Add warning and note on btrfs-convert.

Message ID 1427336364-18161-1-git-send-email-quwenruo@cn.fujitsu.com (mailing list archive)
State Superseded
Headers show

Commit Message

Qu Wenruo March 26, 2015, 2:19 a.m. UTC
Although btrfs-convert can rollback converted btrfs, it still has some
limitation to ensure rollback.

Add a warning on the limitations.

Also add a note for users who decides to go on with btrfs and don't need
the rollback ability.

Reported-by: Vytautas D <vytdau@gmail.com>
Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
---
v2: Add reporters.
---
 Documentation/btrfs-convert.txt | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

David Sterba April 2, 2015, 3:19 p.m. UTC | #1
On Thu, Mar 26, 2015 at 10:19:24AM +0800, Qu Wenruo wrote:
> +WARNING: To ensure *btrfs-convert* be able to rollback btrfs, one should never
> +execute *btrfs filesystem defragment* or *btrfs balance* command on the
> +converted btrfs.

So it looks like a fundamental problem, not lack of implementation. The
original filesystem has some correspondence between physical blocks (1:1
match in ext) and btrfs blocks (where the mapping is not 1:1, though
from the beginning physical matches logical).

Once we balance data, the chunks get moved and the original phyisical
offset is lost. We'd have to remember that somewhere and restore upon
rollback.

I don't see now why defrag is harmful to rollback. The defragmented data
are written to the "ext free space", ie. where all new modifications get
written. The old data are pinned by the ext2_saved subvolume and can be
restored. Or not?
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Qu Wenruo April 3, 2015, 12:37 a.m. UTC | #2
-------- Original Message  --------
Subject: Re: [PATCH v2] btrfs-progs: Doc: Add warning and note on 
btrfs-convert.
From: David Sterba <dsterba@suse.cz>
To: Qu Wenruo <quwenruo@cn.fujitsu.com>
Date: 2015?04?02? 23:19

> On Thu, Mar 26, 2015 at 10:19:24AM +0800, Qu Wenruo wrote:
>> +WARNING: To ensure *btrfs-convert* be able to rollback btrfs, one should never
>> +execute *btrfs filesystem defragment* or *btrfs balance* command on the
>> +converted btrfs.
>
> So it looks like a fundamental problem, not lack of implementation. The
> original filesystem has some correspondence between physical blocks (1:1
> match in ext) and btrfs blocks (where the mapping is not 1:1, though
> from the beginning physical matches logical).
>
> Once we balance data, the chunks get moved and the original phyisical
> offset is lost. We'd have to remember that somewhere and restore upon
> rollback.
>
> I don't see now why defrag is harmful to rollback. The defragmented data
> are written to the "ext free space", ie. where all new modifications get
> written. The old data are pinned by the ext2_saved subvolume and can be
> restored. Or not?
>
Oh, I forgot ext*_image is readonly, so defrag should be OK.

I'll remove defrag from warning.

BTW, although we use 1:1 physical bytenr and if the extent is moved, we 
lost its physical bytenr, but we still have its offset in ext*_image, 
and its logical file offset is the same as its original physical bytenr.

So, why not use file offset as physical bytenr to do rollback?
It should make btrfs-convert to rollback even after balance.

Thanks,
Qu

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Duncan April 3, 2015, 4:37 a.m. UTC | #3
David Sterba posted on Thu, 02 Apr 2015 17:19:31 +0200 as excerpted:

> On Thu, Mar 26, 2015 at 10:19:24AM +0800, Qu Wenruo wrote:
>> WARNING: To ensure *btrfs-convert* be able to rollback btrfs, one
>> should never execute *btrfs filesystem defragment* or *btrfs balance*
>> command on the converted btrfs.

> I don't see now why defrag is harmful to rollback. The defragmented data
> are written to the "ext free space", ie. where all new modifications get
> written. The old data are pinned by the ext2_saved subvolume and can be
> restored. Or not?

Is defrag ever going to be snapshot-aware-enabled again?  If not, then I 
don't see that (snapshot-unaware) defrag can affect ext2_saved either.  
But with snapshot-aware-defrag, AFAIK defrag would affect ext2_saved, 
unless of course it was special-cased...
diff mbox

Patch

diff --git a/Documentation/btrfs-convert.txt b/Documentation/btrfs-convert.txt
index 8b3f05b..bb2f020 100644
--- a/Documentation/btrfs-convert.txt
+++ b/Documentation/btrfs-convert.txt
@@ -15,6 +15,15 @@  DESCRIPTION
 and the original filesystem image is accessible as from separate subvolume
 named 'ext2_saved' as file image.
 
+WARNING: To ensure *btrfs-convert* be able to rollback btrfs, one should never
+execute *btrfs filesystem defragment* or *btrfs balance* command on the
+converted btrfs.
+
+NOTE: If one is satisfied with converted btrfs, and not longer wants to
+rollback to ext*, it is highly recommended to remove 'ext2_saved' subvolume
+and execute *btrfs filesystem defragment* and *btrfs balance* command on the
+converted btrfs.
+
 OPTIONS
 -------
 -d|--no-datasum::