10 Aug, 2009

1 commit


01 Aug, 2009

6 commits


31 Jul, 2009

25 commits


30 Jul, 2009

8 commits

  • Commit d01730d74d2b0155da50d44555001706294014f7 didn't completely fix
    the problem since we still take dqio_mutex and i_mutex in the wrong
    order. Move taking of i_mutex further down (luckily it's needed only
    for updating inode flags) below where dqio_mutex is taken.

    Tested-by: Valdis Kletnieks
    Signed-off-by: Jan Kara

    Jan Kara
     
  • VAT inode is located in the last block recorded block of the medium. When the
    drive errorneously reports number of recorded blocks, we failed to load the VAT
    inode and thus mount the medium. This patch makes kernel try to read VAT inode
    from the last block of the device if it is different from the last recorded
    block.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • The semaphore used by the async caching threads can prevent a
    transaction commit, which can make the FS appear to stall. This
    releases the semaphore more often when a transaction commit is
    in progress.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • The async block group caching code uses the commit_root pointer
    to get a stable version of the extent allocation tree for scanning.
    This copy of the tree root isn't going to change and it significantly
    reduces the complexity of the scanning code.

    During a commit, we have a loop where we update the extent allocation
    tree root. We need to loop because updating the root pointer in
    the tree of tree roots may allocate blocks which may change the
    extent allocation tree.

    Right now the commit_root pointer is changed inside this loop. It
    is more correct to change the commit_root pointer only after all the
    looping is done.

    Signed-off-by: Yan Zheng
    Signed-off-by: Chris Mason

    Yan Zheng
     
  • When a file is deleted from a gfs2 filesystem on one node, a dcache
    entry for it may still exist on other nodes in the cluster. If this
    happens, gfs2 will be unable to free this file on disk. Because of this,
    it's possible to have a gfs2 filesystem with no files on it and no free
    space. With this patch, when a node receives a callback notifying it
    that the file is being deleted on another node, it schedules a new
    workqueue thread to remove the file's dcache entry.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • Since both linked and unlinked inodes are counted by rgd->rd_dinodes, It
    makes no sense to count them with the used data blocks (first check that
    I changed), it makes sense to count them with the linked inodes (second
    check), and it makes no sense to care if there are more unlinked inodes
    than linked ones. This fixes these errors.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • GFS2 was placing far too many glocks on the reclaim list that were not good
    candidates for freeing up from cache. These locks would sit there and
    repeatedly get scanned to see if they could be reclaimed, wasting a lot
    of time when there was memory pressure. This fix does more checks on the
    locks to see if they are actually likely to be removable from cache.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     
  • When searching for unlinked, but still allocated inodes during block
    allocation, avoid the block relating to the inode that is doing the
    allocation. This fixes a hang caused when an unlinked, but still
    open, inode tries to allocate some more blocks and lands up
    finding itself during the search for deallocatable inodes.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse