On Fri, Dec 06, 2013 at 12:30:14PM -0800, Christoph Hellwig wrote: > We might not have read in the extent list at this point, so make sure we > take the ilock exclusively if we have to do so. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > Index: xfs/fs/xfs/xfs_qm.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_qm.c 2013-12-06 17:20:27.491331600 +0100 > +++ xfs/fs/xfs/xfs_qm.c 2013-12-06 19:39:27.251160455 +0100 > @@ -1193,16 +1193,18 @@ xfs_qm_dqiterate( > lblkno = 0; > maxlblkcnt = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes); > do { > + uint lock_mode; > + > nmaps = XFS_DQITER_MAP_SIZE; > /* > * We aren't changing the inode itself. Just changing > * some of its data. No new blocks are added here, and > * the inode is never added to the transaction. > */ > - xfs_ilock(qip, XFS_ILOCK_SHARED); > + lock_mode = xfs_ilock_data_map_shared(qip); > error = xfs_bmapi_read(qip, lblkno, maxlblkcnt - lblkno, > map, &nmaps, 0); > - xfs_iunlock(qip, XFS_ILOCK_SHARED); > + xfs_iunlock(qip, lock_mode); > if (error) > break; looks good. Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs