On Oct 21, 2020, at 3:15 AM, Chunguang Xu <brookxu.cn@xxxxxxxxx> wrote: > > From: Chunguang Xu <brookxu@xxxxxxxxxxx> > > The code of mb_find_order_for_block is a bit obscure, but we can > simplify it with mb_find_buddy(), make the code more concise. > > Signed-off-by: Chunguang Xu <brookxu@xxxxxxxxxxx> Removing lines is always good. Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> > --- > fs/ext4/mballoc.c | 10 +++------- > 1 file changed, 3 insertions(+), 7 deletions(-) > > static int mb_find_order_for_block(struct ext4_buddy *e4b, int block) > { > - int order = 1; > - int bb_incr = 1 << (e4b->bd_blkbits - 1); > + int order = 1, max; > void *bb; > > BUG_ON(e4b->bd_bitmap == e4b->bd_buddy); > BUG_ON(block >= (1 << (e4b->bd_blkbits + 3))); > > - bb = e4b->bd_buddy; > while (order <= e4b->bd_blkbits + 1) { > - block = block >> 1; > - if (!mb_test_bit(block, bb)) { > + bb = mb_find_buddy(e4b, order, &max); > + if (!mb_test_bit(block >> order, bb)) { > /* this block is part of buddy of order 'order' */ > return order; > } > - bb += bb_incr; > - bb_incr >>= 1; > order++; > } (style) this while loop is actually a for loop: for (order = 1; order <= e4b->bd_blkbits + 1; order++) { Cheers, Andreas
Attachment:
signature.asc
Description: Message signed with OpenPGP