/* Free from the filesystem-specific list */
                list_del(&qd->qd_list);
 
-               spin_lock(&sdp->sd_quota_spin);
                gfs2_assert_warn(sdp, !qd->qd_change);
                gfs2_assert_warn(sdp, !qd->qd_slot_count);
                gfs2_assert_warn(sdp, !qd->qd_bh_count);
 
                gfs2_lvb_unhold(qd->qd_gl);
-               spin_unlock(&sdp->sd_quota_spin);
                atomic_dec(&sdp->sd_quota_count);
 
                /* Delete it from the common reclaim list */
        unsigned int c, o = 0, b;
        unsigned char byte = 0;
 
-       spin_lock(&sdp->sd_quota_spin);
+       spin_lock(&qd_lru_lock);
 
        if (qd->qd_slot_count++) {
-               spin_unlock(&sdp->sd_quota_spin);
+               spin_unlock(&qd_lru_lock);
                return 0;
        }
 
 
        sdp->sd_quota_bitmap[c][o] |= 1 << b;
 
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
 
        return 0;
 
 fail:
        qd->qd_slot_count--;
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
        return -ENOSPC;
 }
 
 {
        struct gfs2_sbd *sdp = qd->qd_gl->gl_sbd;
 
-       spin_lock(&sdp->sd_quota_spin);
+       spin_lock(&qd_lru_lock);
        gfs2_assert(sdp, qd->qd_slot_count);
        qd->qd_slot_count++;
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
 }
 
 static void slot_put(struct gfs2_quota_data *qd)
 {
        struct gfs2_sbd *sdp = qd->qd_gl->gl_sbd;
 
-       spin_lock(&sdp->sd_quota_spin);
+       spin_lock(&qd_lru_lock);
        gfs2_assert(sdp, qd->qd_slot_count);
        if (!--qd->qd_slot_count) {
                gfs2_icbit_munge(sdp, sdp->sd_quota_bitmap, qd->qd_slot, 0);
                qd->qd_slot = -1;
        }
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
 }
 
 static int bh_get(struct gfs2_quota_data *qd)
                return 0;
 
        spin_lock(&qd_lru_lock);
-       spin_lock(&sdp->sd_quota_spin);
 
        list_for_each_entry(qd, &sdp->sd_quota_list, qd_list) {
                if (test_bit(QDF_LOCKED, &qd->qd_flags) ||
        if (!found)
                qd = NULL;
 
-       spin_unlock(&sdp->sd_quota_spin);
        spin_unlock(&qd_lru_lock);
 
        if (qd) {
                return 0;
 
        spin_lock(&qd_lru_lock);
-       spin_lock(&sdp->sd_quota_spin);
 
        if (test_bit(QDF_LOCKED, &qd->qd_flags) ||
            !test_bit(QDF_CHANGE, &qd->qd_flags)) {
-               spin_unlock(&sdp->sd_quota_spin);
                spin_unlock(&qd_lru_lock);
                return 0;
        }
        gfs2_assert_warn(sdp, qd->qd_slot_count);
        qd->qd_slot_count++;
 
-       spin_unlock(&sdp->sd_quota_spin);
        spin_unlock(&qd_lru_lock);
 
        gfs2_assert_warn(sdp, qd->qd_change_sync);
        x = be64_to_cpu(qc->qc_change) + change;
        qc->qc_change = cpu_to_be64(x);
 
-       spin_lock(&sdp->sd_quota_spin);
+       spin_lock(&qd_lru_lock);
        qd->qd_change = x;
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
 
        if (!x) {
                gfs2_assert_warn(sdp, test_bit(QDF_CHANGE, &qd->qd_flags));
        if (!qd->qd_qb.qb_limit)
                return 0;
 
-       spin_lock(&sdp->sd_quota_spin);
+       spin_lock(&qd_lru_lock);
        value = qd->qd_change;
-       spin_unlock(&sdp->sd_quota_spin);
+       spin_unlock(&qd_lru_lock);
 
        spin_lock(>->gt_spin);
        num = gt->gt_quota_scale_num;
                        continue;
 
                value = (s64)be64_to_cpu(qd->qd_qb.qb_value);
-               spin_lock(&sdp->sd_quota_spin);
+               spin_lock(&qd_lru_lock);
                value += qd->qd_change;
-               spin_unlock(&sdp->sd_quota_spin);
+               spin_unlock(&qd_lru_lock);
 
                if (be64_to_cpu(qd->qd_qb.qb_limit) && (s64)be64_to_cpu(qd->qd_qb.qb_limit) < value) {
                        print_message(qd, "exceeded");
                        qd->qd_slot_count = 1;
 
                        spin_lock(&qd_lru_lock);
-                       spin_lock(&sdp->sd_quota_spin);
                        gfs2_icbit_munge(sdp, sdp->sd_quota_bitmap, slot, 1);
-                       spin_unlock(&sdp->sd_quota_spin);
                        list_add(&qd->qd_list, &sdp->sd_quota_list);
                        atomic_inc(&sdp->sd_quota_count);
                        spin_unlock(&qd_lru_lock);
        while (!list_empty(head)) {
                qd = list_entry(head->prev, struct gfs2_quota_data, qd_list);
 
-               spin_lock(&sdp->sd_quota_spin);
                if (atomic_read(&qd->qd_count) > 1 ||
                    (atomic_read(&qd->qd_count) &&
                     !test_bit(QDF_CHANGE, &qd->qd_flags))) {
-                       spin_unlock(&sdp->sd_quota_spin);
                        list_move(&qd->qd_list, head);
                        spin_unlock(&qd_lru_lock);
                        schedule();
                        spin_lock(&qd_lru_lock);
                        continue;
                }
-               spin_unlock(&sdp->sd_quota_spin);
 
                list_del(&qd->qd_list);
                /* Also remove if this qd exists in the reclaim list */