• Mingming Cao's avatar
    [PATCH] ext3: reduce allocate-with-reservation lock latencies · 21fe3471
    Mingming Cao authored
    Currently in ext3 block reservation code, the global filesystem reservation
    tree lock (rsv_block) is hold during the process of searching for a space
    to make a new reservation window, including while scaning the block bitmap
    to verify if the avalible window has a free block.  Holding the lock during
    bitmap scan is unnecessary and could possibly cause scalability issue and
    latency issues.
    
    This patch tries to address this by dropping the lock before scan the
    bitmap.  Before that we need to reserve the open window in case someone
    else is targetting at the same window.  Question was should we reserve the
    whole free reservable space or just the window size we need.  Reserve the
    whole free reservable space will possibly force other threads which
    intended to do block allocation nearby move to another block group(cause
    bad layout).  In this patch, we just reserve the desired size before drop
    the lock and scan the block bitmap.  This patch fixed a ext3 reservation
    latency issue seen on a cvs check out test.  Patch is tested with many fsx,
    tiobench, dbench and untar a kernel test.
    Signed-Off-By: default avatarMingming Cao <cmm@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    21fe3471
balloc.c 45.6 KB