• Steven Whitehouse's avatar
    GFS2: Consolidate free block searching functions · ff7f4cb4
    Steven Whitehouse authored
    With the recently added block reservation code, an additional function
    was added to search for free blocks. This had a restriction of only being
    able to search for aligned extents of free blocks. As a result the
    allocation patterns when reserving blocks were suboptimal when the
    existing allocation of blocks for an inode was not aligned to the same
    boundary.
    
    This patch resolves that problem by adding the ability for gfs2_rbm_find
    to search for extents of a particular minimum size. We can then use
    gfs2_rbm_find for both looking for reservations, and also looking for
    free blocks on an individual basis when we actually come to do the
    allocation later on. As a result we only need a single set of code
    to deal with both situations.
    
    The function gfs2_rbm_from_block() is moved up rgrp.c so that it
    occurs before all of its callers.
    
    Many thanks are due to Bob for helping track down the final issue in
    this patch. That fix to the rb_tree traversal and to not share
    block reservations from a dirctory to its children is included here.
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    ff7f4cb4
inode.c 42.8 KB