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

[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
...@@ -275,14 +275,6 @@ enum { ...@@ -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;
......
...@@ -627,6 +627,8 @@ static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc, ...@@ -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) ...@@ -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;
......
...@@ -500,6 +500,14 @@ struct gfs2_quota_change_host { ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment