All of lore.kernel.org
 help / color / mirror / Atom feed
From: Su Yue <suy.fnst@cn.fujitsu.com>
To: Qu Wenruo <wqu@suse.de>, Qu Wenruo <quwenruo.btrfs@gmx.com>,
	<dsterba@suse.cz>, <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH v4 00/18] btrfs-progs: lowmem check: avoid extents overwrite
Date: Tue, 8 May 2018 10:19:18 +0800	[thread overview]
Message-ID: <e46f1553-67db-f09e-f6a3-aa77dbc2c347@cn.fujitsu.com> (raw)
In-Reply-To: <f43e2d6d-4800-faae-6b81-99cd12f7ecda@suse.de>



On 05/08/2018 10:06 AM, Qu Wenruo wrote:
> 
> 
> On 2018年05月08日 10:09, Su Yue wrote:
>>
>>
>> On 05/08/2018 02:17 AM, David Sterba wrote:
>>> On Thu, Feb 08, 2018 at 11:27:19AM +0800, Su Yue wrote:
>>>> 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
>>>
>>> Patch 1-4 added to devel.
>>>
>>>>     btrfs-progs: lowmem check: introduce mark/clear_block_groups_full()
>>>
>>> There were too many conflicts starting with this patch.
>>>
>>> Can you please refresh teh rest of the series and resend?
>>>
>> OK of cource. An small question below.
>>
>> Though this patchset is for lowmem mode, it also changes original mode
>> for code reuse.
>>
>> This patch and remainings base on Qu's unmerged patchset:
>>      [PATCH 0/3] btrfs-progs: Split original mode check to its own
>>          Author: Qu Wenruo <wqu@suse.com>
>> New version is named
>>      [PATCH 0/3] btrfs-progs: Split mode-original code
>>      Author: Qu Wenruo <wqu@suse.com>
> 
> Sorry, that patchset will not be updated until we get a relatively
> stable check code base.
> So I'm afraid you need to base them on current devel branch other than
> my patchset.
> 
Understood. Thanks a lot.

Thanks,
Su

> Thanks,
> Qu
> 
>>
>> I just tried to rebase his brach named split_check_for_david to devel
>> but failed with conflictions.
>>
>> Does V2 need to get rid of the precondition and just rebases to devel?
>> Or to wait completion of split?
>>
>> Thanks,
>> Su
>>
>>> For subject please use "btrfs-progs: check: lowmem: ..." and try to fix
>>> the typos in the changelogs. Thanks.
>>>
>>>
>>>
>>>>     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
>>>
>>>
>>>
>>
>>
>>
> 



  reply	other threads:[~2018-05-08  2:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2018-05-08 16:30       ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e46f1553-67db-f09e-f6a3-aa77dbc2c347@cn.fujitsu.com \
    --to=suy.fnst@cn.fujitsu.com \
    --cc=dsterba@suse.cz \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.com \
    --cc=wqu@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.