These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / xfs / xfs_dquot.c
index 02c01bb..7ac6c5c 100644 (file)
@@ -75,9 +75,9 @@ xfs_qm_dqdestroy(
        ASSERT(list_empty(&dqp->q_lru));
 
        mutex_destroy(&dqp->q_qlock);
-       kmem_zone_free(xfs_qm_dqzone, dqp);
 
-       XFS_STATS_DEC(xs_qm_dquot);
+       XFS_STATS_DEC(dqp->q_mount, xs_qm_dquot);
+       kmem_zone_free(xfs_qm_dqzone, dqp);
 }
 
 /*
@@ -251,7 +251,7 @@ xfs_qm_init_dquot_blk(
                d->dd_diskdq.d_id = cpu_to_be32(curid);
                d->dd_diskdq.d_flags = type;
                if (xfs_sb_version_hascrc(&mp->m_sb)) {
-                       uuid_copy(&d->dd_uuid, &mp->m_sb.sb_uuid);
+                       uuid_copy(&d->dd_uuid, &mp->m_sb.sb_meta_uuid);
                        xfs_update_cksum((char *)d, sizeof(struct xfs_dqblk),
                                         XFS_DQUOT_CRC_OFF);
                }
@@ -568,8 +568,6 @@ xfs_qm_dqread(
        struct xfs_buf          *bp;
        struct xfs_trans        *tp = NULL;
        int                     error;
-       int                     cancelflags = 0;
-
 
        dqp = kmem_zone_zalloc(xfs_qm_dqzone, KM_SLEEP);
 
@@ -607,7 +605,7 @@ xfs_qm_dqread(
                break;
        }
 
-       XFS_STATS_INC(xs_qm_dquot);
+       XFS_STATS_INC(mp, xs_qm_dquot);
 
        trace_xfs_dqread(dqp);
 
@@ -617,7 +615,6 @@ xfs_qm_dqread(
                                          XFS_QM_DQALLOC_SPACE_RES(mp), 0);
                if (error)
                        goto error1;
-               cancelflags = XFS_TRANS_RELEASE_LOG_RES;
        }
 
        /*
@@ -632,7 +629,6 @@ xfs_qm_dqread(
                 * allocate (ENOENT).
                 */
                trace_xfs_dqread_fail(dqp);
-               cancelflags |= XFS_TRANS_ABORT;
                goto error1;
        }
 
@@ -670,7 +666,7 @@ xfs_qm_dqread(
        xfs_trans_brelse(tp, bp);
 
        if (tp) {
-               error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES);
+               error = xfs_trans_commit(tp);
                if (error)
                        goto error0;
        }
@@ -680,7 +676,7 @@ xfs_qm_dqread(
 
 error1:
        if (tp)
-               xfs_trans_cancel(tp, cancelflags);
+               xfs_trans_cancel(tp);
 error0:
        xfs_qm_dqdestroy(dqp);
        *O_dqpp = NULL;
@@ -751,12 +747,12 @@ restart:
                mutex_unlock(&qi->qi_tree_lock);
 
                trace_xfs_dqget_hit(dqp);
-               XFS_STATS_INC(xs_qm_dqcachehits);
+               XFS_STATS_INC(mp, xs_qm_dqcachehits);
                *O_dqpp = dqp;
                return 0;
        }
        mutex_unlock(&qi->qi_tree_lock);
-       XFS_STATS_INC(xs_qm_dqcachemisses);
+       XFS_STATS_INC(mp, xs_qm_dqcachemisses);
 
        /*
         * Dquot cache miss. We don't want to keep the inode lock across
@@ -810,7 +806,7 @@ restart:
                mutex_unlock(&qi->qi_tree_lock);
                trace_xfs_dqget_dup(dqp);
                xfs_qm_dqdestroy(dqp);
-               XFS_STATS_INC(xs_qm_dquot_dups);
+               XFS_STATS_INC(mp, xs_qm_dquot_dups);
                goto restart;
        }
 
@@ -850,7 +846,7 @@ xfs_qm_dqput(
                trace_xfs_dqput_free(dqp);
 
                if (list_lru_add(&qi->qi_lru, &dqp->q_lru))
-                       XFS_STATS_INC(xs_qm_dquot_unused);
+                       XFS_STATS_INC(dqp->q_mount, xs_qm_dquot_unused);
        }
        xfs_dqunlock(dqp);
 }
@@ -958,12 +954,8 @@ xfs_qm_dqflush(
                struct xfs_log_item     *lip = &dqp->q_logitem.qli_item;
                dqp->dq_flags &= ~XFS_DQ_DIRTY;
 
-               spin_lock(&mp->m_ail->xa_lock);
-               if (lip->li_flags & XFS_LI_IN_AIL)
-                       xfs_trans_ail_delete(mp->m_ail, lip,
-                                            SHUTDOWN_CORRUPT_INCORE);
-               else
-                       spin_unlock(&mp->m_ail->xa_lock);
+               xfs_trans_ail_remove(lip, SHUTDOWN_CORRUPT_INCORE);
+
                error = -EIO;
                goto out_unlock;
        }