mirror of https://gitee.com/openkylin/linux.git
[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: Abhijith Das <adas@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
dbb7cae2a3
commit
2a87ab0806
|
@ -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,
|
||||||
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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue