| To: | xfs@xxxxxxxxxxx |
|---|---|
| Subject: | [PATCH 8/9] xfs: switch to NOFS allocation under i_lock in xfs_readlink_bmap |
| From: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
| Date: | Sat, 18 Jul 2009 18:15:00 -0400 |
| Cc: | sage@xxxxxxxxxxxx |
| References: | <20090718221452.594956000@xxxxxxxxxxxxxxxxxxxxxx> |
| User-agent: | quilt/0.47-1 |
xfs_readlink_bmap is called with i_lock held, but i_lock is taken in
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_vnodeops.c
===================================================================
--- linux-2.6.orig/fs/xfs/xfs_vnodeops.c 2009-07-18 20:29:59.041657600
+0200
+++ linux-2.6/fs/xfs/xfs_vnodeops.c 2009-07-18 20:31:22.964535322 +0200
@@ -547,7 +547,9 @@ xfs_readlink_bmap(
d = XFS_FSB_TO_DADDR(mp, mval[n].br_startblock);
byte_cnt = XFS_FSB_TO_B(mp, mval[n].br_blockcount);
- bp = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt), 0);
+ bp = xfs_buf_read_flags(mp->m_ddev_targp, d, BTOBB(byte_cnt),
+ XBF_LOCK | XBF_MAPPED |
+ XBF_DONT_BLOCK);
error = XFS_BUF_GETERROR(bp);
if (error) {
xfs_ioerror_alert("xfs_readlink",
|
| Previous by Date: | [PATCH 0/9] fixes for memory allocator recursions into the filesystem, Christoph Hellwig |
|---|---|
| Next by Date: | [PATCH 9/9] xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get, Christoph Hellwig |
| Previous by Thread: | [PATCH 7/9] xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_set, Christoph Hellwig |
| Next by Thread: | [PATCH 9/9] xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get, Christoph Hellwig |
| Indexes: | [Date] [Thread] [Top] [All Lists] |