[Ocfs2-devel] [PATCH] ocfs2: fix non-auto defrag path not working issue

Heming Zhao heming.zhao at suse.com
Mon Feb 20 04:28:51 UTC 2023


On 2/20/23 11:18 AM, Joseph Qi wrote:
> 
> 
> On 2/17/23 9:20 AM, Heming Zhao wrote:
>> This commit fixes three issues on non-auto defrag path (defragfs.ocfs2
>> doesn't set OCFS2_MOVE_EXT_FL_AUTO_DEFRAG on range.me_flags):
>> - For ocfs2_find_victim_alloc_group(), old code forgot enlarge bitmap
>>    range for global_bitmap case. Old code could generate negative
>>    vict_bit.
>> - For ocfs2_probe_alloc_group(), old code forgot back off move_len when
>>    finding enough bitmap space. Old code has possibility to make data
>>    corruption.
>> - For ocfs2_ioctl_move_extents(), this func should set me_threshold for
>>    both auto & non-auto path. Without setting me_threshold,
>>    ocfs2_move_extent() will make 'move_max_hop = 0', then
>>    ocfs2_probe_alloc_group() returns 'phys_cpos == 0' under max_hop is 0.
>>
>> Another info is current defragfs.ocfs2 doesn't have ability to trigger
>> non-auto defrag path. I modified defragfs.ocfs2 source code ".me_flags"
>> and hardcode ".me_goal" for running test.
>>
> 
> I'm fine with the code changes. But the commit log needs improve.
> How about the following?

OK, I will send v2 patch.
Thank you for your review and spent time to revise my commit log.

Thanks,
Heming

> 
> This fixes three issues on move extents ioctl without auto defrag:
> 
> a) In ocfs2_find_victim_alloc_group(), we have to convert bits to block
> first in case of global bitmap.
> b) In ocfs2_probe_alloc_group(), when finding enough bits in block group
> bitmap, we have to back off move_len to start pos as well, otherwise it
> may corrupt filesystem.
> c) In ocfs2_ioctl_move_extents(), set me_threshold both for non-auto and
> auto defrag paths. Otherwise it will set move_max_hop to 0 and finally
> cause unexpectedly ENOSPC error.
> 
> Currently there is no tools triggering the above issues since
> defragfs.ocfs2 enables auto defrag by default. Test with manually
> changing defragfs.ocfs2 to run non auto defrag path.
> 
> Thanks,
> Joseph
> 
> 
>> Signed-off-by: Heming Zhao <heming.zhao at suse.com>
>> ---
>>   fs/ocfs2/move_extents.c | 24 +++++++++++++-----------
>>   1 file changed, 13 insertions(+), 11 deletions(-)
>>




More information about the Ocfs2-devel mailing list