xfs
[Top] [All Lists]

[PATCH 4/9] xfs: switch to NOFS allocation under i_lock in xfs_da_buf_ma

To: xfs@xxxxxxxxxxx
Subject: [PATCH 4/9] xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Tue, 25 Aug 2009 14:21:38 -0400
References: <20090825182134.299870049@xxxxxxxxxxxxxxxxxxxxxx>
User-agent: quilt/0.47-1
i_lock is taken in the reclaim context so all allocations under it
must avoid recursions into the filesystem.

Reported by the new reclaim context tracing in lockdep.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6/fs/xfs/xfs_da_btree.c
===================================================================
--- linux-2.6.orig/fs/xfs/xfs_da_btree.c        2009-07-10 13:05:24.812364541 
+0200
+++ linux-2.6/fs/xfs/xfs_da_btree.c     2009-07-10 13:16:00.834365485 +0200
@@ -2261,9 +2261,9 @@ xfs_da_buf_make(int nbuf, xfs_buf_t **bp
        int             off;
 
        if (nbuf == 1)
-               dabuf = kmem_zone_alloc(xfs_dabuf_zone, KM_SLEEP);
+               dabuf = kmem_zone_alloc(xfs_dabuf_zone, KM_NOFS);
        else
-               dabuf = kmem_alloc(XFS_DA_BUF_SIZE(nbuf), KM_SLEEP);
+               dabuf = kmem_alloc(XFS_DA_BUF_SIZE(nbuf), KM_NOFS);
        dabuf->dirty = 0;
 #ifdef XFS_DABUF_DEBUG
        dabuf->ra = ra;

<Prev in Thread] Current Thread [Next in Thread>