Re: [PATCH v2 00/17] btrfs-progs: lowmem check: avoid extents overwrite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2017年12月20日 12:57, Su Yue wrote:
> This patchset can be fetched from my github:
> https://github.com/Damenly/btrfs-progs/tree/lowmem_repair
> based on kdave/devel.
> 
> Thanks to Qu Wenruo's ideas and suggestions first.
> Any suggestions about names of functions and variables are welcome.
> 
> Patch[1-3] fix minor problems of lowmem repair.

Mostly fine for patch 1-3.

So Reviewed-by: Qu Wenruo <wqu@xxxxxxxx> for those patches.

Although for 2nd patch, I'm not sure if the naming or if the >0 for
error is good.


> 
> Patch[4-8] introduce two ways to avoid extents overwrite:
> 1) Traverse trees and exclude all metadata blocks.
> It's time-inefficient for big filesystems.
> 2) Mark all existed chunks full, allocate new chunk for CoW.
> More efficient than method 1. However, it can't not handle situation
> like no space.
> Lowmem repair will try method 2 first and method 1 next now.

Commented in separate patches.

Thanks,
Qu

> 
> Patch[9-17] remove parameters in lowmem repair functions. They
> will try to avoid extents overwrite if necessary and start 
> transactions themselves.
> 
> Those patches are mainly for lowmem repair. Original mode is not
> influenced.
> Since btrfs-progs v4.14, lowmem mode changed to check all tree blocks
> backrefs. There are many bugs about shared backref in lowmem mode now.
> If lowmem check can not work as expected, lowmem repair are useless.
> I will fix lowmem check in next.
> 
> ---
> Changlog:
> v1->v2:
>  - 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 (17):
>   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 modify_block_groups_cache()
>   btrfs-progs: lowmem check: introduce force_cow_in_new_chunk()
>   btrfs-progs: lowmem check: introduce try_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
> 
>  cmds-check.c | 620 +++++++++++++++++++++++++++++++++++++++++++++++++----------
>  1 file changed, 515 insertions(+), 105 deletions(-)
> 

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux