diff options
Diffstat (limited to 'fs/gfs2/quota.c')
-rw-r--r-- | fs/gfs2/quota.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index addb51e0f135..a08dabd6ce90 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. | 2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. |
3 | * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. | 3 | * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. |
4 | * | 4 | * |
5 | * This copyrighted material is made available to anyone wishing to use, | 5 | * This copyrighted material is made available to anyone wishing to use, |
6 | * modify, copy, or redistribute it subject to the terms and conditions | 6 | * modify, copy, or redistribute it subject to the terms and conditions |
@@ -59,7 +59,6 @@ | |||
59 | #include "super.h" | 59 | #include "super.h" |
60 | #include "trans.h" | 60 | #include "trans.h" |
61 | #include "inode.h" | 61 | #include "inode.h" |
62 | #include "ops_file.h" | ||
63 | #include "ops_address.h" | 62 | #include "ops_address.h" |
64 | #include "util.h" | 63 | #include "util.h" |
65 | 64 | ||
@@ -274,10 +273,10 @@ static int bh_get(struct gfs2_quota_data *qd) | |||
274 | } | 273 | } |
275 | 274 | ||
276 | block = qd->qd_slot / sdp->sd_qc_per_block; | 275 | block = qd->qd_slot / sdp->sd_qc_per_block; |
277 | offset = qd->qd_slot % sdp->sd_qc_per_block;; | 276 | offset = qd->qd_slot % sdp->sd_qc_per_block; |
278 | 277 | ||
279 | bh_map.b_size = 1 << ip->i_inode.i_blkbits; | 278 | bh_map.b_size = 1 << ip->i_inode.i_blkbits; |
280 | error = gfs2_block_map(&ip->i_inode, block, 0, &bh_map); | 279 | error = gfs2_block_map(&ip->i_inode, block, &bh_map, 0); |
281 | if (error) | 280 | if (error) |
282 | goto fail; | 281 | goto fail; |
283 | error = gfs2_meta_read(ip->i_gl, bh_map.b_blocknr, DIO_WAIT, &bh); | 282 | error = gfs2_meta_read(ip->i_gl, bh_map.b_blocknr, DIO_WAIT, &bh); |
@@ -454,7 +453,7 @@ static void qdsb_put(struct gfs2_quota_data *qd) | |||
454 | int gfs2_quota_hold(struct gfs2_inode *ip, u32 uid, u32 gid) | 453 | int gfs2_quota_hold(struct gfs2_inode *ip, u32 uid, u32 gid) |
455 | { | 454 | { |
456 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 455 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
457 | struct gfs2_alloc *al = &ip->i_alloc; | 456 | struct gfs2_alloc *al = ip->i_alloc; |
458 | struct gfs2_quota_data **qd = al->al_qd; | 457 | struct gfs2_quota_data **qd = al->al_qd; |
459 | int error; | 458 | int error; |
460 | 459 | ||
@@ -502,7 +501,7 @@ out: | |||
502 | void gfs2_quota_unhold(struct gfs2_inode *ip) | 501 | void gfs2_quota_unhold(struct gfs2_inode *ip) |
503 | { | 502 | { |
504 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 503 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
505 | struct gfs2_alloc *al = &ip->i_alloc; | 504 | struct gfs2_alloc *al = ip->i_alloc; |
506 | unsigned int x; | 505 | unsigned int x; |
507 | 506 | ||
508 | gfs2_assert_warn(sdp, !test_bit(GIF_QD_LOCKED, &ip->i_flags)); | 507 | gfs2_assert_warn(sdp, !test_bit(GIF_QD_LOCKED, &ip->i_flags)); |
@@ -646,7 +645,7 @@ static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc, | |||
646 | } | 645 | } |
647 | 646 | ||
648 | if (!buffer_mapped(bh)) { | 647 | if (!buffer_mapped(bh)) { |
649 | gfs2_get_block(inode, iblock, bh, 1); | 648 | gfs2_block_map(inode, iblock, bh, 1); |
650 | if (!buffer_mapped(bh)) | 649 | if (!buffer_mapped(bh)) |
651 | goto unlock; | 650 | goto unlock; |
652 | } | 651 | } |
@@ -793,11 +792,9 @@ static int do_glock(struct gfs2_quota_data *qd, int force_refresh, | |||
793 | struct gfs2_holder i_gh; | 792 | struct gfs2_holder i_gh; |
794 | struct gfs2_quota_host q; | 793 | struct gfs2_quota_host q; |
795 | char buf[sizeof(struct gfs2_quota)]; | 794 | char buf[sizeof(struct gfs2_quota)]; |
796 | struct file_ra_state ra_state; | ||
797 | int error; | 795 | int error; |
798 | struct gfs2_quota_lvb *qlvb; | 796 | struct gfs2_quota_lvb *qlvb; |
799 | 797 | ||
800 | file_ra_state_init(&ra_state, sdp->sd_quota_inode->i_mapping); | ||
801 | restart: | 798 | restart: |
802 | error = gfs2_glock_nq_init(qd->qd_gl, LM_ST_SHARED, 0, q_gh); | 799 | error = gfs2_glock_nq_init(qd->qd_gl, LM_ST_SHARED, 0, q_gh); |
803 | if (error) | 800 | if (error) |
@@ -820,8 +817,8 @@ restart: | |||
820 | 817 | ||
821 | memset(buf, 0, sizeof(struct gfs2_quota)); | 818 | memset(buf, 0, sizeof(struct gfs2_quota)); |
822 | pos = qd2offset(qd); | 819 | pos = qd2offset(qd); |
823 | error = gfs2_internal_read(ip, &ra_state, buf, | 820 | error = gfs2_internal_read(ip, NULL, buf, &pos, |
824 | &pos, sizeof(struct gfs2_quota)); | 821 | sizeof(struct gfs2_quota)); |
825 | if (error < 0) | 822 | if (error < 0) |
826 | goto fail_gunlock; | 823 | goto fail_gunlock; |
827 | 824 | ||
@@ -856,7 +853,7 @@ fail: | |||
856 | int gfs2_quota_lock(struct gfs2_inode *ip, u32 uid, u32 gid) | 853 | int gfs2_quota_lock(struct gfs2_inode *ip, u32 uid, u32 gid) |
857 | { | 854 | { |
858 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 855 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
859 | struct gfs2_alloc *al = &ip->i_alloc; | 856 | struct gfs2_alloc *al = ip->i_alloc; |
860 | unsigned int x; | 857 | unsigned int x; |
861 | int error = 0; | 858 | int error = 0; |
862 | 859 | ||
@@ -924,7 +921,7 @@ static int need_sync(struct gfs2_quota_data *qd) | |||
924 | 921 | ||
925 | void gfs2_quota_unlock(struct gfs2_inode *ip) | 922 | void gfs2_quota_unlock(struct gfs2_inode *ip) |
926 | { | 923 | { |
927 | struct gfs2_alloc *al = &ip->i_alloc; | 924 | struct gfs2_alloc *al = ip->i_alloc; |
928 | struct gfs2_quota_data *qda[4]; | 925 | struct gfs2_quota_data *qda[4]; |
929 | unsigned int count = 0; | 926 | unsigned int count = 0; |
930 | unsigned int x; | 927 | unsigned int x; |
@@ -972,7 +969,7 @@ static int print_message(struct gfs2_quota_data *qd, char *type) | |||
972 | int gfs2_quota_check(struct gfs2_inode *ip, u32 uid, u32 gid) | 969 | int gfs2_quota_check(struct gfs2_inode *ip, u32 uid, u32 gid) |
973 | { | 970 | { |
974 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 971 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
975 | struct gfs2_alloc *al = &ip->i_alloc; | 972 | struct gfs2_alloc *al = ip->i_alloc; |
976 | struct gfs2_quota_data *qd; | 973 | struct gfs2_quota_data *qd; |
977 | s64 value; | 974 | s64 value; |
978 | unsigned int x; | 975 | unsigned int x; |
@@ -1016,10 +1013,9 @@ int gfs2_quota_check(struct gfs2_inode *ip, u32 uid, u32 gid) | |||
1016 | void gfs2_quota_change(struct gfs2_inode *ip, s64 change, | 1013 | void gfs2_quota_change(struct gfs2_inode *ip, s64 change, |
1017 | u32 uid, u32 gid) | 1014 | u32 uid, u32 gid) |
1018 | { | 1015 | { |
1019 | struct gfs2_alloc *al = &ip->i_alloc; | 1016 | struct gfs2_alloc *al = ip->i_alloc; |
1020 | struct gfs2_quota_data *qd; | 1017 | struct gfs2_quota_data *qd; |
1021 | unsigned int x; | 1018 | unsigned int x; |
1022 | unsigned int found = 0; | ||
1023 | 1019 | ||
1024 | if (gfs2_assert_warn(GFS2_SB(&ip->i_inode), change)) | 1020 | if (gfs2_assert_warn(GFS2_SB(&ip->i_inode), change)) |
1025 | return; | 1021 | return; |
@@ -1032,7 +1028,6 @@ void gfs2_quota_change(struct gfs2_inode *ip, s64 change, | |||
1032 | if ((qd->qd_id == uid && test_bit(QDF_USER, &qd->qd_flags)) || | 1028 | if ((qd->qd_id == uid && test_bit(QDF_USER, &qd->qd_flags)) || |
1033 | (qd->qd_id == gid && !test_bit(QDF_USER, &qd->qd_flags))) { | 1029 | (qd->qd_id == gid && !test_bit(QDF_USER, &qd->qd_flags))) { |
1034 | do_qc(qd, change); | 1030 | do_qc(qd, change); |
1035 | found++; | ||
1036 | } | 1031 | } |
1037 | } | 1032 | } |
1038 | } | 1033 | } |