diff options
Diffstat (limited to 'fs/xfs/xfs_qm.c')
-rw-r--r-- | fs/xfs/xfs_qm.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index dd88f0e27bd8..348e4d2ed6e6 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c | |||
@@ -1222,16 +1222,18 @@ xfs_qm_dqiterate( | |||
1222 | lblkno = 0; | 1222 | lblkno = 0; |
1223 | maxlblkcnt = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes); | 1223 | maxlblkcnt = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes); |
1224 | do { | 1224 | do { |
1225 | uint lock_mode; | ||
1226 | |||
1225 | nmaps = XFS_DQITER_MAP_SIZE; | 1227 | nmaps = XFS_DQITER_MAP_SIZE; |
1226 | /* | 1228 | /* |
1227 | * We aren't changing the inode itself. Just changing | 1229 | * We aren't changing the inode itself. Just changing |
1228 | * some of its data. No new blocks are added here, and | 1230 | * some of its data. No new blocks are added here, and |
1229 | * the inode is never added to the transaction. | 1231 | * the inode is never added to the transaction. |
1230 | */ | 1232 | */ |
1231 | xfs_ilock(qip, XFS_ILOCK_SHARED); | 1233 | lock_mode = xfs_ilock_data_map_shared(qip); |
1232 | error = xfs_bmapi_read(qip, lblkno, maxlblkcnt - lblkno, | 1234 | error = xfs_bmapi_read(qip, lblkno, maxlblkcnt - lblkno, |
1233 | map, &nmaps, 0); | 1235 | map, &nmaps, 0); |
1234 | xfs_iunlock(qip, XFS_ILOCK_SHARED); | 1236 | xfs_iunlock(qip, lock_mode); |
1235 | if (error) | 1237 | if (error) |
1236 | break; | 1238 | break; |
1237 | 1239 | ||