diff options
| -rw-r--r-- | fs/gfs2/bmap.c | 6 | ||||
| -rw-r--r-- | fs/gfs2/eattr.c | 6 | ||||
| -rw-r--r-- | fs/gfs2/ops_address.c | 6 | ||||
| -rw-r--r-- | fs/gfs2/ops_file.c | 5 | ||||
| -rw-r--r-- | fs/gfs2/ops_inode.c | 12 | ||||
| -rw-r--r-- | fs/gfs2/quota.h | 17 |
6 files changed, 23 insertions, 29 deletions
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c index f7093aa69aae..c19184f2e70e 100644 --- a/fs/gfs2/bmap.c +++ b/fs/gfs2/bmap.c | |||
| @@ -903,14 +903,10 @@ static int do_grow(struct gfs2_inode *ip, u64 size) | |||
| 903 | if (!al) | 903 | if (!al) |
| 904 | return -ENOMEM; | 904 | return -ENOMEM; |
| 905 | 905 | ||
| 906 | error = gfs2_quota_lock(ip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 906 | error = gfs2_quota_lock_check(ip); |
| 907 | if (error) | 907 | if (error) |
| 908 | goto out; | 908 | goto out; |
| 909 | 909 | ||
| 910 | error = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
| 911 | if (error) | ||
| 912 | goto out_gunlock_q; | ||
| 913 | |||
| 914 | al->al_requested = sdp->sd_max_height + RES_DATA; | 910 | al->al_requested = sdp->sd_max_height + RES_DATA; |
| 915 | 911 | ||
| 916 | error = gfs2_inplace_reserve(ip); | 912 | error = gfs2_inplace_reserve(ip); |
diff --git a/fs/gfs2/eattr.c b/fs/gfs2/eattr.c index 288d5e6ad93a..81755925a755 100644 --- a/fs/gfs2/eattr.c +++ b/fs/gfs2/eattr.c | |||
| @@ -686,14 +686,10 @@ static int ea_alloc_skeleton(struct gfs2_inode *ip, struct gfs2_ea_request *er, | |||
| 686 | if (!al) | 686 | if (!al) |
| 687 | return -ENOMEM; | 687 | return -ENOMEM; |
| 688 | 688 | ||
| 689 | error = gfs2_quota_lock(ip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 689 | error = gfs2_quota_lock_check(ip); |
| 690 | if (error) | 690 | if (error) |
| 691 | goto out; | 691 | goto out; |
| 692 | 692 | ||
| 693 | error = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
| 694 | if (error) | ||
| 695 | goto out_gunlock_q; | ||
| 696 | |||
| 697 | al->al_requested = blks; | 693 | al->al_requested = blks; |
| 698 | 694 | ||
| 699 | error = gfs2_inplace_reserve(ip); | 695 | error = gfs2_inplace_reserve(ip); |
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c index e72fd47d71eb..90a04a6e3789 100644 --- a/fs/gfs2/ops_address.c +++ b/fs/gfs2/ops_address.c | |||
| @@ -653,14 +653,10 @@ static int gfs2_write_begin(struct file *file, struct address_space *mapping, | |||
| 653 | goto out_unlock; | 653 | goto out_unlock; |
| 654 | } | 654 | } |
| 655 | 655 | ||
| 656 | error = gfs2_quota_lock(ip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 656 | error = gfs2_quota_lock_check(ip); |
| 657 | if (error) | 657 | if (error) |
| 658 | goto out_alloc_put; | 658 | goto out_alloc_put; |
| 659 | 659 | ||
| 660 | error = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
| 661 | if (error) | ||
| 662 | goto out_qunlock; | ||
| 663 | |||
| 664 | al->al_requested = data_blocks + ind_blocks; | 660 | al->al_requested = data_blocks + ind_blocks; |
| 665 | error = gfs2_inplace_reserve(ip); | 661 | error = gfs2_inplace_reserve(ip); |
| 666 | if (error) | 662 | if (error) |
diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c index 2b25a5f7a1c7..e1b7d525a066 100644 --- a/fs/gfs2/ops_file.c +++ b/fs/gfs2/ops_file.c | |||
| @@ -369,12 +369,9 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct page *page) | |||
| 369 | if (al == NULL) | 369 | if (al == NULL) |
| 370 | goto out_unlock; | 370 | goto out_unlock; |
| 371 | 371 | ||
| 372 | ret = gfs2_quota_lock(ip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 372 | ret = gfs2_quota_lock_check(ip); |
| 373 | if (ret) | 373 | if (ret) |
| 374 | goto out_alloc_put; | 374 | goto out_alloc_put; |
| 375 | ret = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
| 376 | if (ret) | ||
| 377 | goto out_quota_unlock; | ||
| 378 | al->al_requested = data_blocks + ind_blocks; | 375 | al->al_requested = data_blocks + ind_blocks; |
| 379 | ret = gfs2_inplace_reserve(ip); | 376 | ret = gfs2_inplace_reserve(ip); |
| 380 | if (ret) | 377 | if (ret) |
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c index 34fe571e15ee..2686ad4c0029 100644 --- a/fs/gfs2/ops_inode.c +++ b/fs/gfs2/ops_inode.c | |||
| @@ -205,14 +205,10 @@ static int gfs2_link(struct dentry *old_dentry, struct inode *dir, | |||
| 205 | goto out_gunlock; | 205 | goto out_gunlock; |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | error = gfs2_quota_lock(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 208 | error = gfs2_quota_lock_check(dip); |
| 209 | if (error) | 209 | if (error) |
| 210 | goto out_alloc; | 210 | goto out_alloc; |
| 211 | 211 | ||
| 212 | error = gfs2_quota_check(dip, dip->i_inode.i_uid, dip->i_inode.i_gid); | ||
| 213 | if (error) | ||
| 214 | goto out_gunlock_q; | ||
| 215 | |||
| 216 | al->al_requested = sdp->sd_max_dirres; | 212 | al->al_requested = sdp->sd_max_dirres; |
| 217 | 213 | ||
| 218 | error = gfs2_inplace_reserve(dip); | 214 | error = gfs2_inplace_reserve(dip); |
| @@ -725,14 +721,10 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry, | |||
| 725 | goto out_gunlock; | 721 | goto out_gunlock; |
| 726 | } | 722 | } |
| 727 | 723 | ||
| 728 | error = gfs2_quota_lock(ndip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 724 | error = gfs2_quota_lock_check(ndip); |
| 729 | if (error) | 725 | if (error) |
| 730 | goto out_alloc; | 726 | goto out_alloc; |
| 731 | 727 | ||
| 732 | error = gfs2_quota_check(ndip, ndip->i_inode.i_uid, ndip->i_inode.i_gid); | ||
| 733 | if (error) | ||
| 734 | goto out_gunlock_q; | ||
| 735 | |||
| 736 | al->al_requested = sdp->sd_max_dirres; | 728 | al->al_requested = sdp->sd_max_dirres; |
| 737 | 729 | ||
| 738 | error = gfs2_inplace_reserve(ndip); | 730 | error = gfs2_inplace_reserve(ndip); |
diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h index a8be1417051f..3b7f4b0e5dfe 100644 --- a/fs/gfs2/quota.h +++ b/fs/gfs2/quota.h | |||
| @@ -32,4 +32,21 @@ int gfs2_quota_init(struct gfs2_sbd *sdp); | |||
| 32 | void gfs2_quota_scan(struct gfs2_sbd *sdp); | 32 | void gfs2_quota_scan(struct gfs2_sbd *sdp); |
| 33 | void gfs2_quota_cleanup(struct gfs2_sbd *sdp); | 33 | void gfs2_quota_cleanup(struct gfs2_sbd *sdp); |
| 34 | 34 | ||
| 35 | static inline int gfs2_quota_lock_check(struct gfs2_inode *ip) | ||
| 36 | { | ||
| 37 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | ||
| 38 | int ret; | ||
| 39 | if (sdp->sd_args.ar_quota == GFS2_QUOTA_OFF) | ||
| 40 | return 0; | ||
| 41 | ret = gfs2_quota_lock(ip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | ||
| 42 | if (ret) | ||
| 43 | return ret; | ||
| 44 | if (sdp->sd_args.ar_quota != GFS2_QUOTA_ON) | ||
| 45 | return 0; | ||
| 46 | ret = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid); | ||
| 47 | if (ret) | ||
| 48 | gfs2_quota_unlock(ip); | ||
| 49 | return ret; | ||
| 50 | } | ||
| 51 | |||
| 35 | #endif /* __QUOTA_DOT_H__ */ | 52 | #endif /* __QUOTA_DOT_H__ */ |
