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__ */ |