diff options
Diffstat (limited to 'fs/gfs2/inode.c')
-rw-r--r-- | fs/gfs2/inode.c | 44 |
1 files changed, 4 insertions, 40 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 2a1b4b5a648c..2b035e0959b2 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c | |||
@@ -521,12 +521,10 @@ static int make_dinode(struct gfs2_inode *dip, struct gfs2_glock *gl, | |||
521 | int error; | 521 | int error; |
522 | 522 | ||
523 | munge_mode_uid_gid(dip, &mode, &uid, &gid); | 523 | munge_mode_uid_gid(dip, &mode, &uid, &gid); |
524 | if (!gfs2_qadata_get(dip)) | ||
525 | return -ENOMEM; | ||
526 | 524 | ||
527 | error = gfs2_quota_lock(dip, uid, gid); | 525 | error = gfs2_quota_lock(dip, uid, gid); |
528 | if (error) | 526 | if (error) |
529 | goto out; | 527 | return error; |
530 | 528 | ||
531 | error = gfs2_quota_check(dip, uid, gid); | 529 | error = gfs2_quota_check(dip, uid, gid); |
532 | if (error) | 530 | if (error) |
@@ -542,8 +540,6 @@ static int make_dinode(struct gfs2_inode *dip, struct gfs2_glock *gl, | |||
542 | 540 | ||
543 | out_quota: | 541 | out_quota: |
544 | gfs2_quota_unlock(dip); | 542 | gfs2_quota_unlock(dip); |
545 | out: | ||
546 | gfs2_qadata_put(dip); | ||
547 | return error; | 543 | return error; |
548 | } | 544 | } |
549 | 545 | ||
@@ -551,15 +547,10 @@ static int link_dinode(struct gfs2_inode *dip, const struct qstr *name, | |||
551 | struct gfs2_inode *ip) | 547 | struct gfs2_inode *ip) |
552 | { | 548 | { |
553 | struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode); | 549 | struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode); |
554 | struct gfs2_qadata *qa; | ||
555 | int alloc_required; | 550 | int alloc_required; |
556 | struct buffer_head *dibh; | 551 | struct buffer_head *dibh; |
557 | int error; | 552 | int error; |
558 | 553 | ||
559 | qa = gfs2_qadata_get(dip); | ||
560 | if (!qa) | ||
561 | return -ENOMEM; | ||
562 | |||
563 | error = gfs2_quota_lock(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 554 | error = gfs2_quota_lock(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); |
564 | if (error) | 555 | if (error) |
565 | goto fail; | 556 | goto fail; |
@@ -611,7 +602,6 @@ fail_quota_locks: | |||
611 | gfs2_quota_unlock(dip); | 602 | gfs2_quota_unlock(dip); |
612 | 603 | ||
613 | fail: | 604 | fail: |
614 | gfs2_qadata_put(dip); | ||
615 | return error; | 605 | return error; |
616 | } | 606 | } |
617 | 607 | ||
@@ -734,7 +724,6 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, | |||
734 | if (gfs2_mb_reserved(dip)) | 724 | if (gfs2_mb_reserved(dip)) |
735 | gfs2_inplace_release(dip); | 725 | gfs2_inplace_release(dip); |
736 | gfs2_quota_unlock(dip); | 726 | gfs2_quota_unlock(dip); |
737 | gfs2_qadata_put(dip); | ||
738 | mark_inode_dirty(inode); | 727 | mark_inode_dirty(inode); |
739 | gfs2_glock_dq_uninit_m(2, ghs); | 728 | gfs2_glock_dq_uninit_m(2, ghs); |
740 | d_instantiate(dentry, inode); | 729 | d_instantiate(dentry, inode); |
@@ -883,16 +872,9 @@ static int gfs2_link(struct dentry *old_dentry, struct inode *dir, | |||
883 | error = 0; | 872 | error = 0; |
884 | 873 | ||
885 | if (alloc_required) { | 874 | if (alloc_required) { |
886 | struct gfs2_qadata *qa = gfs2_qadata_get(dip); | ||
887 | |||
888 | if (!qa) { | ||
889 | error = -ENOMEM; | ||
890 | goto out_gunlock; | ||
891 | } | ||
892 | |||
893 | error = gfs2_quota_lock_check(dip); | 875 | error = gfs2_quota_lock_check(dip); |
894 | if (error) | 876 | if (error) |
895 | goto out_alloc; | 877 | goto out_gunlock; |
896 | 878 | ||
897 | error = gfs2_inplace_reserve(dip, sdp->sd_max_dirres); | 879 | error = gfs2_inplace_reserve(dip, sdp->sd_max_dirres); |
898 | if (error) | 880 | if (error) |
@@ -935,9 +917,6 @@ out_ipres: | |||
935 | out_gunlock_q: | 917 | out_gunlock_q: |
936 | if (alloc_required) | 918 | if (alloc_required) |
937 | gfs2_quota_unlock(dip); | 919 | gfs2_quota_unlock(dip); |
938 | out_alloc: | ||
939 | if (alloc_required) | ||
940 | gfs2_qadata_put(dip); | ||
941 | out_gunlock: | 920 | out_gunlock: |
942 | gfs2_glock_dq(ghs + 1); | 921 | gfs2_glock_dq(ghs + 1); |
943 | out_child: | 922 | out_child: |
@@ -1374,16 +1353,9 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry, | |||
1374 | goto out_gunlock; | 1353 | goto out_gunlock; |
1375 | 1354 | ||
1376 | if (alloc_required) { | 1355 | if (alloc_required) { |
1377 | struct gfs2_qadata *qa = gfs2_qadata_get(ndip); | ||
1378 | |||
1379 | if (!qa) { | ||
1380 | error = -ENOMEM; | ||
1381 | goto out_gunlock; | ||
1382 | } | ||
1383 | |||
1384 | error = gfs2_quota_lock_check(ndip); | 1356 | error = gfs2_quota_lock_check(ndip); |
1385 | if (error) | 1357 | if (error) |
1386 | goto out_alloc; | 1358 | goto out_gunlock; |
1387 | 1359 | ||
1388 | error = gfs2_inplace_reserve(ndip, sdp->sd_max_dirres); | 1360 | error = gfs2_inplace_reserve(ndip, sdp->sd_max_dirres); |
1389 | if (error) | 1361 | if (error) |
@@ -1444,9 +1416,6 @@ out_ipreserv: | |||
1444 | out_gunlock_q: | 1416 | out_gunlock_q: |
1445 | if (alloc_required) | 1417 | if (alloc_required) |
1446 | gfs2_quota_unlock(ndip); | 1418 | gfs2_quota_unlock(ndip); |
1447 | out_alloc: | ||
1448 | if (alloc_required) | ||
1449 | gfs2_qadata_put(ndip); | ||
1450 | out_gunlock: | 1419 | out_gunlock: |
1451 | while (x--) { | 1420 | while (x--) { |
1452 | gfs2_glock_dq(ghs + x); | 1421 | gfs2_glock_dq(ghs + x); |
@@ -1607,12 +1576,9 @@ static int setattr_chown(struct inode *inode, struct iattr *attr) | |||
1607 | if (!(attr->ia_valid & ATTR_GID) || ogid == ngid) | 1576 | if (!(attr->ia_valid & ATTR_GID) || ogid == ngid) |
1608 | ogid = ngid = NO_QUOTA_CHANGE; | 1577 | ogid = ngid = NO_QUOTA_CHANGE; |
1609 | 1578 | ||
1610 | if (!gfs2_qadata_get(ip)) | ||
1611 | return -ENOMEM; | ||
1612 | |||
1613 | error = gfs2_quota_lock(ip, nuid, ngid); | 1579 | error = gfs2_quota_lock(ip, nuid, ngid); |
1614 | if (error) | 1580 | if (error) |
1615 | goto out_alloc; | 1581 | return error; |
1616 | 1582 | ||
1617 | if (ouid != NO_QUOTA_CHANGE || ogid != NO_QUOTA_CHANGE) { | 1583 | if (ouid != NO_QUOTA_CHANGE || ogid != NO_QUOTA_CHANGE) { |
1618 | error = gfs2_quota_check(ip, nuid, ngid); | 1584 | error = gfs2_quota_check(ip, nuid, ngid); |
@@ -1638,8 +1604,6 @@ out_end_trans: | |||
1638 | gfs2_trans_end(sdp); | 1604 | gfs2_trans_end(sdp); |
1639 | out_gunlock_q: | 1605 | out_gunlock_q: |
1640 | gfs2_quota_unlock(ip); | 1606 | gfs2_quota_unlock(ip); |
1641 | out_alloc: | ||
1642 | gfs2_qadata_put(ip); | ||
1643 | return error; | 1607 | return error; |
1644 | } | 1608 | } |
1645 | 1609 | ||