Merge tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[cascardo/linux.git] / fs / xfs / xfs_qm.c
index 2e86fa0..60eff47 100644 (file)
@@ -40,6 +40,7 @@
 #include "xfs_utils.h"
 #include "xfs_qm.h"
 #include "xfs_trace.h"
+#include "xfs_icache.h"
 
 /*
  * The global quota manager. There is only one of these for the entire
@@ -891,7 +892,8 @@ xfs_qm_dqiter_bufs(
        while (blkcnt--) {
                error = xfs_trans_read_buf(mp, NULL, mp->m_ddev_targp,
                              XFS_FSB_TO_DADDR(mp, bno),
-                             mp->m_quotainfo->qi_dqchunklen, 0, &bp);
+                             mp->m_quotainfo->qi_dqchunklen, 0, &bp,
+                             &xfs_dquot_buf_ops);
                if (error)
                        break;
 
@@ -978,7 +980,8 @@ xfs_qm_dqiterate(
                                while (rablkcnt--) {
                                        xfs_buf_readahead(mp->m_ddev_targp,
                                               XFS_FSB_TO_DADDR(mp, rablkno),
-                                              mp->m_quotainfo->qi_dqchunklen);
+                                              mp->m_quotainfo->qi_dqchunklen,
+                                              NULL);
                                        rablkno++;
                                }
                        }
@@ -1453,7 +1456,7 @@ xfs_qm_dqreclaim_one(
        int                     error;
 
        if (!xfs_dqlock_nowait(dqp))
-               goto out_busy;
+               goto out_move_tail;
 
        /*
         * This dquot has acquired a reference in the meantime remove it from
@@ -1476,7 +1479,7 @@ xfs_qm_dqreclaim_one(
         * getting flushed to disk, we don't want to reclaim it.
         */
        if (!xfs_dqflock_nowait(dqp))
-               goto out_busy;
+               goto out_unlock_move_tail;
 
        if (XFS_DQ_IS_DIRTY(dqp)) {
                struct xfs_buf  *bp = NULL;
@@ -1487,7 +1490,7 @@ xfs_qm_dqreclaim_one(
                if (error) {
                        xfs_warn(mp, "%s: dquot %p flush failed",
                                 __func__, dqp);
-                       goto out_busy;
+                       goto out_unlock_move_tail;
                }
 
                xfs_buf_delwri_queue(bp, buffer_list);
@@ -1496,7 +1499,7 @@ xfs_qm_dqreclaim_one(
                 * Give the dquot another try on the freelist, as the
                 * flushing will take some time.
                 */
-               goto out_busy;
+               goto out_unlock_move_tail;
        }
        xfs_dqfunlock(dqp);
 
@@ -1515,14 +1518,13 @@ xfs_qm_dqreclaim_one(
        XFS_STATS_INC(xs_qm_dqreclaims);
        return;
 
-out_busy:
-       xfs_dqunlock(dqp);
-
        /*
         * Move the dquot to the tail of the list so that we don't spin on it.
         */
+out_unlock_move_tail:
+       xfs_dqunlock(dqp);
+out_move_tail:
        list_move_tail(&dqp->q_lru, &qi->qi_lru_list);
-
        trace_xfs_dqreclaim_busy(dqp);
        XFS_STATS_INC(xs_qm_dqreclaim_misses);
 }