diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index f5830be..fe1828f 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -503,24 +503,22 @@
 
 static int sort_qd(const void *a, const void *b)
 {
-	struct gfs2_quota_data *qd_a = *(struct gfs2_quota_data **)a;
-	struct gfs2_quota_data *qd_b = *(struct gfs2_quota_data **)b;
-	int ret = 0;
+	const struct gfs2_quota_data *qd_a = *(const struct gfs2_quota_data **)a;
+	const struct gfs2_quota_data *qd_b = *(const struct gfs2_quota_data **)b;
 
 	if (!test_bit(QDF_USER, &qd_a->qd_flags) !=
 	    !test_bit(QDF_USER, &qd_b->qd_flags)) {
 		if (test_bit(QDF_USER, &qd_a->qd_flags))
-			ret = -1;
+			return -1;
 		else
-			ret = 1;
-	} else {
-		if (qd_a->qd_id < qd_b->qd_id)
-			ret = -1;
-		else if (qd_a->qd_id > qd_b->qd_id)
-			ret = 1;
+			return 1;
 	}
+	if (qd_a->qd_id < qd_b->qd_id)
+		return -1;
+	if (qd_a->qd_id > qd_b->qd_id)
+		return 1;
 
-	return ret;
+	return 0;
 }
 
 static void do_qc(struct gfs2_quota_data *qd, s64 change)
@@ -622,17 +620,13 @@
 	gfs2_trans_add_bh(ip->i_gl, bh, 0);
 
 	kaddr = kmap_atomic(page, KM_USER0);
-	ptr = (__be64 *)(kaddr + offset);
+	ptr = kaddr + offset;
 	value = (s64)be64_to_cpu(*ptr) + change;
 	*ptr = cpu_to_be64(value);
 	flush_dcache_page(page);
 	kunmap_atomic(kaddr, KM_USER0);
 	err = 0;
 	qd->qd_qb.qb_magic = cpu_to_be32(GFS2_MAGIC);
-#if 0
-	qd->qd_qb.qb_limit = cpu_to_be64(q.qu_limit);
-	qd->qd_qb.qb_warn = cpu_to_be64(q.qu_warn);
-#endif
 	qd->qd_qb.qb_value = cpu_to_be64(value);
 unlock:
 	unlock_page(page);
@@ -1057,43 +1051,6 @@
 	return error;
 }
 
-#if 0
-int gfs2_quota_read(struct gfs2_sbd *sdp, int user, u32 id,
-		    struct gfs2_quota *q)
-{
-	struct gfs2_quota_data *qd;
-	struct gfs2_holder q_gh;
-	int error;
-
-	if (((user) ? (id != current->fsuid) : (!in_group_p(id))) &&
-	    !capable(CAP_SYS_ADMIN))
-		return -EACCES;
-
-	error = qd_get(sdp, user, id, CREATE, &qd);
-	if (error)
-		return error;
-
-	error = do_glock(qd, NO_FORCE, &q_gh);
-	if (error)
-		goto out;
-
-	memset(q, 0, sizeof(struct gfs2_quota));
-	q->qu_limit = be64_to_cpu(qd->qd_qb.qb_limit);
-	q->qu_warn = be64_to_cpu(qd->qd_qb.qb_warn);
-	q->qu_value = be64_to_cpu(qd->qd_qb.qb_value);
-
-	spin_lock(&sdp->sd_quota_spin);
-	q->qu_value += qd->qd_change;
-	spin_unlock(&sdp->sd_quota_spin);
-
-	gfs2_glock_dq_uninit(&q_gh);
-
-out:
-	qd_put(qd);
-	return error;
-}
-#endif  /*  0  */
-
 int gfs2_quota_init(struct gfs2_sbd *sdp)
 {
 	struct gfs2_inode *ip = GFS2_I(sdp->sd_qc_inode);
