[Ocfs2-tools-devel] [PATCH 6/7] tunefs.ocfs2: Turn on and off
the extended slot map
Sunil Mushran
Sunil.Mushran at oracle.com
Fri Jan 11 15:34:59 PST 2008
Looks good.
Joel Becker wrote:
> On Fri, Jan 11, 2008 at 12:32:16PM -0800, Joel Becker wrote:
>
>> On Fri, Jan 11, 2008 at 09:51:39AM +0800, tao.ma wrote:
>>
>>> You patch does touch increasing slot.
>>> Although current ocfs2_extend_slot is only 8 bytes and the minimum
>>> cluster size is 4K and 8 * 255 << 4k, do you think we have any future
>>> improvement in future which will exceed the limit? ;)
>>> Maybe a call of ocfs2_format_slot_map is needed for increasing slot?
>>>
>> With the new format, we do intend to allow an arbitrary number
>> of slots (even though we all know >255 nodes is hard to make work in
>> practice). Thus, adding slots could grow beyond 4K - never mind a 1K
>> blocksize. So I do need to do something at add_slot() time. It should
>> be something as trivial as format_slotmap(). This will do nothing if
>> the slotmap is already big enough.
>>
>
> How's this?
>
> diff --git a/tunefs.ocfs2/tunefs.c b/tunefs.ocfs2/tunefs.c
> index 400ae10..61052ee 100644
> --- a/tunefs.ocfs2/tunefs.c
> +++ b/tunefs.ocfs2/tunefs.c
> @@ -911,18 +911,25 @@ static void update_mount_type(ocfs2_filesys *fs, int *changed)
> static errcode_t update_slots(ocfs2_filesys *fs, int *changed)
> {
> errcode_t ret = 0;
> + int orig_slots = OCFS2_RAW_SB(fs->fs_super)->s_max_slots;
>
> block_signals(SIG_BLOCK);
> - if (opts.num_slots > OCFS2_RAW_SB(fs->fs_super)->s_max_slots)
> + if (opts.num_slots > orig_slots)
> ret = add_slots(fs);
> else
> ret = remove_slots(fs);
> - block_signals(SIG_UNBLOCK);
> if (ret)
> - return ret;
> + goto unblock;
>
> OCFS2_RAW_SB(fs->fs_super)->s_max_slots = opts.num_slots;
> - *changed = 1;
> + ret = ocfs2_format_slot_map(fs);
> + if (!ret)
> + *changed = 1;
> + else
> + OCFS2_RAW_SB(fs->fs_super)->s_max_slots = orig_slots;
> +
> +unblock:
> + block_signals(SIG_UNBLOCK);
>
> return ret;
> }
>
>
More information about the Ocfs2-tools-devel
mailing list