[lkml]   [2007]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH] [GFS2] soft lockup in rgblk_search
    From: Bob Peterson <>

    This patch seems to fix the problem described in bugzilla bug 246114.
    It was written by Steve Whitehouse with some tweaking by me.

    The code was looping in the relatively new section of code designed to
    search for and reuse unlinked inodes. In cases where it was finding an
    appropriate inode to reuse, it was looping around and finding the same
    block over and over because a "<=" check should have been a "<" when
    comparing the goal block to the last unlinked block found.

    Signed-off-by: Bob Peterson <>
    Signed-off-by: Steven Whitehouse <>

    diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
    index e4e0406..bb58e69 100644
    --- a/fs/gfs2/rgrp.c
    +++ b/fs/gfs2/rgrp.c
    @@ -863,16 +863,19 @@ static struct inode *try_rgrp_unlink(struct gfs2_rgrpd *rgd, u64 *last_unlinked)
    u64 no_addr;

    for(;;) {
    + if (goal >= rgd->rd_data)
    + break;
    goal = rgblk_search(rgd, goal, GFS2_BLKST_UNLINKED,
    if (goal == 0)
    - return 0;
    + break;
    no_addr = goal + rgd->rd_data0;
    - if (no_addr <= *last_unlinked)
    + goal++;
    + if (no_addr < *last_unlinked)
    *last_unlinked = no_addr;
    inode = gfs2_inode_lookup(rgd->rd_sbd->sd_vfs, DT_UNKNOWN,
    - no_addr, -1);
    + no_addr, -1);
    if (!IS_ERR(inode))
    return inode;
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-08-14 12:23    [W:0.023 / U:7.524 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site