Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a87ab08 authored by Abhijith Das's avatar Abhijith Das Committed by Steven Whitehouse
Browse files

[GFS2] Quotas non-functional - fix bug



This patch fixes an error in the quota code where a 'struct
gfs2_quota_lvb*' was being passed to gfs2_adjust_quota() instead of a
'struct gfs2_quota_data*'. Also moved 'struct gfs2_quota_lvb' from
fs/gfs2/incore.h to include/linux/gfs2_ondisk.h as per Steve's suggestion.

Signed-off-by: default avatarAbhijith Das <adas@redhat.com>
Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent dbb7cae2
Loading
Loading
Loading
Loading
+0 −8
Original line number Original line Diff line number Diff line
@@ -275,14 +275,6 @@ enum {
	QDF_LOCKED		= 2,
	QDF_LOCKED		= 2,
};
};


struct gfs2_quota_lvb {
        __be32 qb_magic;
        u32 __pad;
        __be64 qb_limit;      /* Hard limit of # blocks to alloc */
        __be64 qb_warn;       /* Warn user when alloc is above this # */
        __be64 qb_value;       /* Current # blocks allocated */
};

struct gfs2_quota_data {
struct gfs2_quota_data {
	struct list_head qd_list;
	struct list_head qd_list;
	unsigned int qd_count;
	unsigned int qd_count;
+3 −1
Original line number Original line Diff line number Diff line
@@ -627,6 +627,8 @@ static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc,
	err = 0;
	err = 0;
	qd->qd_qb.qb_magic = cpu_to_be32(GFS2_MAGIC);
	qd->qd_qb.qb_magic = cpu_to_be32(GFS2_MAGIC);
	qd->qd_qb.qb_value = cpu_to_be64(value);
	qd->qd_qb.qb_value = cpu_to_be64(value);
	((struct gfs2_quota_lvb*)(qd->qd_gl->gl_lvb))->qb_magic = cpu_to_be32(GFS2_MAGIC);
	((struct gfs2_quota_lvb*)(qd->qd_gl->gl_lvb))->qb_value = cpu_to_be64(value);
unlock:
unlock:
	unlock_page(page);
	unlock_page(page);
	page_cache_release(page);
	page_cache_release(page);
@@ -709,7 +711,7 @@ static int do_sync(unsigned int num_qd, struct gfs2_quota_data **qda)
		offset = qd2offset(qd);
		offset = qd2offset(qd);
		error = gfs2_adjust_quota(ip, offset, qd->qd_change_sync,
		error = gfs2_adjust_quota(ip, offset, qd->qd_change_sync,
					  (struct gfs2_quota_data *)
					  (struct gfs2_quota_data *)
					  qd->qd_gl->gl_lvb);
					  qd);
		if (error)
		if (error)
			goto out_end_trans;
			goto out_end_trans;


+8 −0
Original line number Original line Diff line number Diff line
@@ -500,6 +500,14 @@ struct gfs2_quota_change_host {
	__u32 qc_id;
	__u32 qc_id;
};
};


struct gfs2_quota_lvb {
        __be32 qb_magic;
        u32 __pad;
        __be64 qb_limit;      /* Hard limit of # blocks to alloc */
        __be64 qb_warn;       /* Warn user when alloc is above this # */
        __be64 qb_value;       /* Current # blocks allocated */
};

#ifdef __KERNEL__
#ifdef __KERNEL__
/* Translation functions */
/* Translation functions */
struct gfs2_inode;
struct gfs2_inode;