All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/18] btrfs-progs: lowmem check: avoid extents overwrite
@ 2018-02-08  3:27 Su Yue
  2018-02-08  3:27 ` [PATCH v4 01/18] btrfs-progs: lowmem check: release path in repair_extent_data_item() Su Yue
                   ` (18 more replies)
  0 siblings, 19 replies; 24+ messages in thread
From: Su Yue @ 2018-02-08  3:27 UTC (permalink / raw)
  To: linux-btrfs; +Cc: suy.fnst

This patchset can be fetched from my github:
https://github.com/Damenly/btrfs-progs/tree/lowmem
based on unmerged patchset whose cover:
      [PATCH 0/3] btrfs-progs: Split original mode check to its own
      Author: Qu Wenruo <wqu@suse.com>
      
I'm sorry to send patches based on unmerged patch if it let you feel
uncomfortable.
I think the three patches from Qu are good enough so I send it before
my vacation.

Patch[1-3] fix minor problems of lowmem repair.

Patch[4-8] introduce two ways to avoid extents overwrite:
1) Traverse trees and exclude all metadata blocks.
   It's time-inefficient for large filesystems.
2) Mark all existed chunks full, allocate new chunk for CoW and
   records chunk start.
   If the last allocated chunk is almost full, allocated a new one.
2) is More efficient than 1). However, it can't handle situations
like no space(fsck/004).
Lowmem repair will try method 2 first and then method 1.

Patch[9-17] remove parameters @trans in functions for lowmem repair.
They try to avoid extents overwrite if necessary and start
transactions by themselves.

Patch[18] adds a test image.
Those patches are mainly for lowmem repair. Original mode is not
influenced.

---
Changlog:
v4->v3:
 - Remove global enum extents_operation to simplify
   avoid_extents_overwrite() and its cleanup.
 - Rebase after work of check split.
 
v3->v2:
 - check_btrfs_root() returns FATAL_ERROR if check_fs_first_inode()
   failed. Thanks Nikolay Borisov.
 - Add function try_to_force_cow_in_new_chunk() and global u64
   varaiable to record start of the last allocated chunk.
 - Remove unused EXTENTS_PIN in enum lowmem_extents_operation.
 
v2->v1:
 - Let @err in check_btrfs_root() record err bits but excluded
   negative values.
 - Do not delete a line of code to release path after extent item'
   insertion in repair_extent_data_item().
 - Add patch[3].
 - Force CoW in new allocated chunk to avoid extents overwrite.
 - Remove parameters @trans in check_chunks_and_extents_v2() and
   related callees.
 - Repair functions for lowmem mode call try_avoid_extents_overwrite()
   and start transactions.
   
Su Yue (18):
  btrfs-progs: lowmem check: release path in repair_extent_data_item()
  btrfs-progs: lowmem check: record returned errors after
    walk_down_tree_v2()
  btrfs-progs: lowmem check: assign @parent early in
    repair_extent_data_item()
  btrfs-progs: lowmem check: exclude extents of metadata blocks
  btrfs-progs: lowmem check: introduce mark/clear_block_groups_full()
  btrfs-progs: lowmem check: introduce try_force_cow_in_new_chunk()
  btrfs-progs: lowmem check: introduce avoid_extents_overwrite()
  btrfs-progs: lowmem check: exclude extents if init-extent-tree in
    lowmem
  btrfs-progs: lowmem check: start to remove parameters @trans in lowmem
  btrfs-progs: lowmem check: remove parameter @trans of
    delete_extent_item()
  btrfs-progs: lowmem check: remove parameter @trans of
    repair_chunk_item()
  btrfs-progs: lowmem check: remove parameter @trans of
    repair_extent_item()
  btrfs-progs: lowmem check: remove parameter @trans of
    check_leaf_items()
  btrfs-progs: lowmem check: remove parameter @trans of
    repair_tree_back_ref()
  btrfs-progs: lowmem check: remove parameter @trans of
    check_btrfs_root()
  btrfs-progs: lowmem check: introduce repair_block_accounting()
  btrfs-progs: lowmem check: end of removing parameters @trans in lowmem
  btrfs-progs: fsck-tests: add image no extent with normal device size

 check/mode-common.c                                | 100 +++-
 check/mode-common.h                                |   4 +-
 check/mode-lowmem.c                                | 560 +++++++++++++++++----
 check/mode-lowmem.h                                |   1 +
 cmds-check.c                                       |   3 +-
 .../014-no-extent-info/.lowmem_repairable          |   0
 .../fsck-tests/014-no-extent-info/no_extent.raw.xz | Bin 0 -> 28084 bytes
 .../{default_case.img => no_extent_bad_dev.img}    | Bin
 8 files changed, 561 insertions(+), 107 deletions(-)
 create mode 100644 tests/fsck-tests/014-no-extent-info/.lowmem_repairable
 create mode 100644 tests/fsck-tests/014-no-extent-info/no_extent.raw.xz
 rename tests/fsck-tests/014-no-extent-info/{default_case.img => no_extent_bad_dev.img} (100%)

-- 
2.16.1




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

end of thread, other threads:[~2018-05-08 16:32 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-08  3:27 [PATCH v4 00/18] btrfs-progs: lowmem check: avoid extents overwrite Su Yue
2018-02-08  3:27 ` [PATCH v4 01/18] btrfs-progs: lowmem check: release path in repair_extent_data_item() Su Yue
2018-02-08  3:27 ` [PATCH v4 02/18] btrfs-progs: lowmem check: record returned errors after walk_down_tree_v2() Su Yue
2018-02-08  3:27 ` [PATCH v4 03/18] btrfs-progs: lowmem check: assign @parent early in repair_extent_data_item() Su Yue
2018-02-08  3:27 ` [PATCH v4 04/18] btrfs-progs: lowmem check: exclude extents of metadata blocks Su Yue
2018-02-08  3:27 ` [PATCH v4 05/18] btrfs-progs: lowmem check: introduce mark/clear_block_groups_full() Su Yue
2018-02-08  3:27 ` [PATCH v4 06/18] btrfs-progs: lowmem check: introduce try_force_cow_in_new_chunk() Su Yue
2018-02-08  3:27 ` [PATCH v4 07/18] btrfs-progs: lowmem check: introduce avoid_extents_overwrite() Su Yue
2018-02-08  3:27 ` [PATCH v4 08/18] btrfs-progs: lowmem check: exclude extents if init-extent-tree in lowmem Su Yue
2018-02-08  3:27 ` [PATCH v4 09/18] btrfs-progs: lowmem check: start to remove parameters @trans " Su Yue
2018-02-08  3:27 ` [PATCH v4 10/18] btrfs-progs: lowmem check: remove parameter @trans of delete_extent_item() Su Yue
2018-02-08  3:27 ` [PATCH v4 11/18] btrfs-progs: lowmem check: remove parameter @trans of repair_chunk_item() Su Yue
2018-02-08  3:27 ` [PATCH v4 12/18] btrfs-progs: lowmem check: remove parameter @trans of repair_extent_item() Su Yue
2018-02-08  3:27 ` [PATCH v4 13/18] btrfs-progs: lowmem check: remove parameter @trans of check_leaf_items() Su Yue
2018-02-08  3:27 ` [PATCH v4 14/18] btrfs-progs: lowmem check: remove parameter @trans of repair_tree_back_ref() Su Yue
2018-02-08  3:27 ` [PATCH v4 15/18] btrfs-progs: lowmem check: remove parameter @trans of check_btrfs_root() Su Yue
2018-02-08  3:27 ` [PATCH v4 16/18] btrfs-progs: lowmem check: introduce repair_block_accounting() Su Yue
2018-02-08  3:27 ` [PATCH v4 17/18] btrfs-progs: lowmem check: end of removing parameters @trans in lowmem Su Yue
2018-02-08  3:27 ` [PATCH v4 18/18] btrfs-progs: fsck-tests: add image no extent with normal device size Su Yue
2018-05-07 18:17 ` [PATCH v4 00/18] btrfs-progs: lowmem check: avoid extents overwrite David Sterba
2018-05-08  2:09   ` Su Yue
2018-05-08  2:06     ` Qu Wenruo
2018-05-08  2:19       ` Su Yue
2018-05-08 16:30       ` David Sterba

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.