Aneesh Kumar K.V wrote:
On Fri, Jan 11, 2008 at 03:04:08PM +0100, Valerie Clement wrote:
Hi,
I've got problems with mballoc when I create the ext4 filesystem with
the "uninit_groups" option enabled.
First, I do a single test on a filesystem created without the
"uninit_groups" option and mounted with the defaults option:
dd if=/dev/zero of=/mnt/test/foo bs=1M count=1024
In this case, the file blocks are allocated in the groups 4, 5, 6, 7, 8,
9, 10.
When the filesystem is created with the "uninit_groups" option enabled
and mounted with the defaults option, I do the same dd command.
In this case, the file blocks are allocated in the groups 5, 7, 9, 25,
27, 49, 81. It seems that the blocks could be allocated only in the
already initialized groups.
That is because we skip the uninitialized group in ext4_mb_good_group.
I guess we are trying criteria 0 allocation and we skip uninit group for
criteria 0 . You can tune by setting higher value for
/proc/fs/ext4/partition/orders2_req. Setting it to a high value would
skip criteria 0 allocation for small requests.
Hi Aneesh,
thanks for your answer but I'm not sure your solution is the right one
to fix the problem.
I added traces in the mballoc code and found perhaps something
incorrect: while running the dd command, the function
ext4_mb_init_cache() is called, which calls ext4_init_block_bitmap() for
an uninitialized group. But the flag EXT4_BG_BLOCK_UNINIT is not reset
after. Shouldn't it be reset here?
I guess you are using delayed allocation ?
Yes
Valérie
-
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html