All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/6] Convert rollback rework for v4.9
@ 2016-12-19  6:56 Qu Wenruo
  2016-12-19  6:56 ` [PATCH v3 1/6] btrfs-progs: file-item: Fix wrong file extents inserted Qu Wenruo
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Qu Wenruo @ 2016-12-19  6:56 UTC (permalink / raw)
  To: linux-btrfs

Can be fetched from github:
https://github.com/adam900710/btrfs-progs.git convert_rework_for_4.9

This is mainly to fix problems exposed by Chandan's fix for 64K nodesize.

The problem is, although we're still using old rollback functions, it
has quite a lot of problems to support the new behavior.

1) Can't rollback new convert image with new data chunk
Chunk level check can't handle newly allocated data chunk, which is not
1:1 mapped but completely valid in new behavior.
The last patch will enhance the test case to handle it.

2) Can't rollback real no-hole image
Since it assumes hole file extent as requirement.
And due to the possibility to enable no_holes halfway, btrfsck won't
report such error, since it's acceptable.

3) Too complex logic, and RW btrfs tree operations
In fact, considering how small data we need to rewrite (1M + 128K), we
don't really need to open btrfs read-write.
Just copy needed data and re-fill. Simple and easy.

Thanks Chandan, his report on failure of rollback leads to this rework.

And this is still small fixes, most of the patch are just deleting old codes.
All rollback test cases from btrfs-progs and fstests are passed.

v2:
  Fix a bug that we can still rollback if convert subvolume is just orphaned,
  not deleted. Exposed by btrfs/012.

v3:
  Better patch split. Now only one patch is larger than 200 lines(214 lines)
  Fix regression introduced in last minute update of v2 patch.
  Remove duplicated bs= options.

Qu Wenruo (6):
  btrfs-progs: file-item: Fix wrong file extents inserted
  btrfs-progs: utils: Introduce basic set operations for range
  btrfs-progs: convert: Introduce function to record relocated ranges
  btrfs-progs: convert: Introduce new function to check if we can
    rollback
  btrfs-progs: convert: Switch to new rollback function
  btrfs-progs: convert-test: trigger chunk allocation after convert

 convert/main.c       | 744 ++++++++++++++++++++++-----------------------------
 disk-io.h            |   9 +-
 file-item.c          |  11 +
 tests/common         |   4 +
 tests/common.convert |   3 +
 utils.h              |  19 ++
 6 files changed, 366 insertions(+), 424 deletions(-)

-- 
2.10.2




^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-01-30 15:14 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-19  6:56 [PATCH v3 0/6] Convert rollback rework for v4.9 Qu Wenruo
2016-12-19  6:56 ` [PATCH v3 1/6] btrfs-progs: file-item: Fix wrong file extents inserted Qu Wenruo
2016-12-19  6:56 ` [PATCH v3 2/6] btrfs-progs: utils: Introduce basic set operations for range Qu Wenruo
2017-01-23 17:28   ` David Sterba
2017-01-24  0:40     ` Qu Wenruo
2017-01-23 17:40   ` David Sterba
2016-12-19  6:56 ` [PATCH v3 3/6] btrfs-progs: convert: Introduce function to record relocated ranges Qu Wenruo
2016-12-19  6:56 ` [PATCH v3 4/6] btrfs-progs: convert: Introduce new function to check if we can rollback Qu Wenruo
2016-12-19  6:56 ` [PATCH v3 5/6] btrfs-progs: convert: Switch to new rollback function Qu Wenruo
2016-12-20  5:36   ` Chandan Rajendra
2017-01-23 17:54   ` David Sterba
2017-01-24  0:44     ` Qu Wenruo
2017-01-24 16:37       ` David Sterba
2017-01-25  0:42         ` Qu Wenruo
2017-01-30 14:55           ` David Sterba
2016-12-19  6:56 ` [PATCH v3 6/6] btrfs-progs: convert-test: trigger chunk allocation after convert Qu Wenruo
2016-12-21 14:35 ` [PATCH v3 0/6] Convert rollback rework for v4.9 David Sterba
2016-12-22  1:53   ` Qu Wenruo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.