diff options
-rw-r--r-- | fs/gfs2/bmap.c | 11 | ||||
-rw-r--r-- | fs/gfs2/file.c | 15 | ||||
-rw-r--r-- | fs/gfs2/incore.h | 2 | ||||
-rw-r--r-- | fs/gfs2/inode.c | 5 | ||||
-rw-r--r-- | fs/gfs2/main.c | 13 | ||||
-rw-r--r-- | fs/gfs2/quota.c | 4 | ||||
-rw-r--r-- | fs/gfs2/quota.h | 2 | ||||
-rw-r--r-- | fs/gfs2/rgrp.c | 52 | ||||
-rw-r--r-- | fs/gfs2/rgrp.h | 2 | ||||
-rw-r--r-- | fs/gfs2/super.c | 7 | ||||
-rw-r--r-- | fs/gfs2/util.c | 1 | ||||
-rw-r--r-- | fs/gfs2/util.h | 1 |
12 files changed, 33 insertions, 82 deletions
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c index 8d46ae4fa873..0860f0b5b3f1 100644 --- a/fs/gfs2/bmap.c +++ b/fs/gfs2/bmap.c | |||
@@ -787,8 +787,8 @@ static int do_strip(struct gfs2_inode *ip, struct buffer_head *dibh, | |||
787 | if (error) | 787 | if (error) |
788 | goto out_rlist; | 788 | goto out_rlist; |
789 | 789 | ||
790 | if (gfs2_rs_active(ip->i_res)) /* needs to be done with the rgrp glock held */ | 790 | if (gfs2_rs_active(&ip->i_res)) /* needs to be done with the rgrp glock held */ |
791 | gfs2_rs_deltree(ip->i_res); | 791 | gfs2_rs_deltree(&ip->i_res); |
792 | 792 | ||
793 | error = gfs2_trans_begin(sdp, rg_blocks + RES_DINODE + | 793 | error = gfs2_trans_begin(sdp, rg_blocks + RES_DINODE + |
794 | RES_INDIRECT + RES_STATFS + RES_QUOTA, | 794 | RES_INDIRECT + RES_STATFS + RES_QUOTA, |
@@ -1291,10 +1291,6 @@ int gfs2_setattr_size(struct inode *inode, u64 newsize) | |||
1291 | if (ret) | 1291 | if (ret) |
1292 | return ret; | 1292 | return ret; |
1293 | 1293 | ||
1294 | ret = get_write_access(inode); | ||
1295 | if (ret) | ||
1296 | return ret; | ||
1297 | |||
1298 | inode_dio_wait(inode); | 1294 | inode_dio_wait(inode); |
1299 | 1295 | ||
1300 | ret = gfs2_rsqa_alloc(ip); | 1296 | ret = gfs2_rsqa_alloc(ip); |
@@ -1307,10 +1303,9 @@ int gfs2_setattr_size(struct inode *inode, u64 newsize) | |||
1307 | goto out; | 1303 | goto out; |
1308 | } | 1304 | } |
1309 | 1305 | ||
1310 | gfs2_rs_deltree(ip->i_res); | ||
1311 | ret = do_shrink(inode, oldsize, newsize); | 1306 | ret = do_shrink(inode, oldsize, newsize); |
1312 | out: | 1307 | out: |
1313 | put_write_access(inode); | 1308 | gfs2_rsqa_delete(ip, NULL); |
1314 | return ret; | 1309 | return ret; |
1315 | } | 1310 | } |
1316 | 1311 | ||
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index de001eb27bed..3ead27d64bf0 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c | |||
@@ -336,8 +336,8 @@ static void gfs2_size_hint(struct file *filep, loff_t offset, size_t size) | |||
336 | size_t blks = (size + sdp->sd_sb.sb_bsize - 1) >> sdp->sd_sb.sb_bsize_shift; | 336 | size_t blks = (size + sdp->sd_sb.sb_bsize - 1) >> sdp->sd_sb.sb_bsize_shift; |
337 | int hint = min_t(size_t, INT_MAX, blks); | 337 | int hint = min_t(size_t, INT_MAX, blks); |
338 | 338 | ||
339 | if (hint > atomic_read(&ip->i_res->rs_sizehint)) | 339 | if (hint > atomic_read(&ip->i_res.rs_sizehint)) |
340 | atomic_set(&ip->i_res->rs_sizehint, hint); | 340 | atomic_set(&ip->i_res.rs_sizehint, hint); |
341 | } | 341 | } |
342 | 342 | ||
343 | /** | 343 | /** |
@@ -397,13 +397,9 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
397 | /* Update file times before taking page lock */ | 397 | /* Update file times before taking page lock */ |
398 | file_update_time(vma->vm_file); | 398 | file_update_time(vma->vm_file); |
399 | 399 | ||
400 | ret = get_write_access(inode); | ||
401 | if (ret) | ||
402 | goto out; | ||
403 | |||
404 | ret = gfs2_rsqa_alloc(ip); | 400 | ret = gfs2_rsqa_alloc(ip); |
405 | if (ret) | 401 | if (ret) |
406 | goto out_write_access; | 402 | goto out; |
407 | 403 | ||
408 | gfs2_size_hint(vma->vm_file, pos, PAGE_CACHE_SIZE); | 404 | gfs2_size_hint(vma->vm_file, pos, PAGE_CACHE_SIZE); |
409 | 405 | ||
@@ -486,8 +482,6 @@ out_uninit: | |||
486 | set_page_dirty(page); | 482 | set_page_dirty(page); |
487 | wait_for_stable_page(page); | 483 | wait_for_stable_page(page); |
488 | } | 484 | } |
489 | out_write_access: | ||
490 | put_write_access(inode); | ||
491 | out: | 485 | out: |
492 | sb_end_pagefault(inode->i_sb); | 486 | sb_end_pagefault(inode->i_sb); |
493 | return block_page_mkwrite_return(ret); | 487 | return block_page_mkwrite_return(ret); |
@@ -944,7 +938,8 @@ static long gfs2_fallocate(struct file *file, int mode, loff_t offset, loff_t le | |||
944 | 938 | ||
945 | ret = __gfs2_fallocate(file, mode, offset, len); | 939 | ret = __gfs2_fallocate(file, mode, offset, len); |
946 | if (ret) | 940 | if (ret) |
947 | gfs2_rs_deltree(ip->i_res); | 941 | gfs2_rs_deltree(&ip->i_res); |
942 | |||
948 | out_putw: | 943 | out_putw: |
949 | put_write_access(inode); | 944 | put_write_access(inode); |
950 | out_unlock: | 945 | out_unlock: |
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index 6a22f66f058d..25d0f12aaec5 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h | |||
@@ -394,7 +394,7 @@ struct gfs2_inode { | |||
394 | struct gfs2_holder i_iopen_gh; | 394 | struct gfs2_holder i_iopen_gh; |
395 | struct gfs2_holder i_gh; /* for prepare/commit_write only */ | 395 | struct gfs2_holder i_gh; /* for prepare/commit_write only */ |
396 | struct gfs2_qadata *i_qadata; /* quota allocation data */ | 396 | struct gfs2_qadata *i_qadata; /* quota allocation data */ |
397 | struct gfs2_blkreserv *i_res; /* rgrp multi-block reservation */ | 397 | struct gfs2_blkreserv i_res; /* rgrp multi-block reservation */ |
398 | struct gfs2_rgrpd *i_rgd; | 398 | struct gfs2_rgrpd *i_rgd; |
399 | u64 i_goal; /* goal block for allocations */ | 399 | u64 i_goal; /* goal block for allocations */ |
400 | struct rw_semaphore i_rw_mutex; | 400 | struct rw_semaphore i_rw_mutex; |
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index c37e6bf2958e..a8ce2e99cf5d 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c | |||
@@ -1859,10 +1859,6 @@ static int setattr_chown(struct inode *inode, struct iattr *attr) | |||
1859 | if (!(attr->ia_valid & ATTR_GID) || gid_eq(ogid, ngid)) | 1859 | if (!(attr->ia_valid & ATTR_GID) || gid_eq(ogid, ngid)) |
1860 | ogid = ngid = NO_GID_QUOTA_CHANGE; | 1860 | ogid = ngid = NO_GID_QUOTA_CHANGE; |
1861 | 1861 | ||
1862 | error = get_write_access(inode); | ||
1863 | if (error) | ||
1864 | return error; | ||
1865 | |||
1866 | error = gfs2_rsqa_alloc(ip); | 1862 | error = gfs2_rsqa_alloc(ip); |
1867 | if (error) | 1863 | if (error) |
1868 | goto out; | 1864 | goto out; |
@@ -1903,7 +1899,6 @@ out_end_trans: | |||
1903 | out_gunlock_q: | 1899 | out_gunlock_q: |
1904 | gfs2_quota_unlock(ip); | 1900 | gfs2_quota_unlock(ip); |
1905 | out: | 1901 | out: |
1906 | put_write_access(inode); | ||
1907 | return error; | 1902 | return error; |
1908 | } | 1903 | } |
1909 | 1904 | ||
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c index cde5c73c42df..1d709d496364 100644 --- a/fs/gfs2/main.c +++ b/fs/gfs2/main.c | |||
@@ -42,7 +42,8 @@ static void gfs2_init_inode_once(void *foo) | |||
42 | init_rwsem(&ip->i_rw_mutex); | 42 | init_rwsem(&ip->i_rw_mutex); |
43 | INIT_LIST_HEAD(&ip->i_trunc_list); | 43 | INIT_LIST_HEAD(&ip->i_trunc_list); |
44 | ip->i_qadata = NULL; | 44 | ip->i_qadata = NULL; |
45 | ip->i_res = NULL; | 45 | memset(&ip->i_res, 0, sizeof(ip->i_res)); |
46 | RB_CLEAR_NODE(&ip->i_res.rs_node); | ||
46 | ip->i_hash_cache = NULL; | 47 | ip->i_hash_cache = NULL; |
47 | } | 48 | } |
48 | 49 | ||
@@ -142,12 +143,6 @@ static int __init init_gfs2_fs(void) | |||
142 | if (!gfs2_qadata_cachep) | 143 | if (!gfs2_qadata_cachep) |
143 | goto fail; | 144 | goto fail; |
144 | 145 | ||
145 | gfs2_rsrv_cachep = kmem_cache_create("gfs2_mblk", | ||
146 | sizeof(struct gfs2_blkreserv), | ||
147 | 0, 0, NULL); | ||
148 | if (!gfs2_rsrv_cachep) | ||
149 | goto fail; | ||
150 | |||
151 | register_shrinker(&gfs2_qd_shrinker); | 146 | register_shrinker(&gfs2_qd_shrinker); |
152 | 147 | ||
153 | error = register_filesystem(&gfs2_fs_type); | 148 | error = register_filesystem(&gfs2_fs_type); |
@@ -200,9 +195,6 @@ fail_lru: | |||
200 | unregister_shrinker(&gfs2_qd_shrinker); | 195 | unregister_shrinker(&gfs2_qd_shrinker); |
201 | gfs2_glock_exit(); | 196 | gfs2_glock_exit(); |
202 | 197 | ||
203 | if (gfs2_rsrv_cachep) | ||
204 | kmem_cache_destroy(gfs2_rsrv_cachep); | ||
205 | |||
206 | if (gfs2_qadata_cachep) | 198 | if (gfs2_qadata_cachep) |
207 | kmem_cache_destroy(gfs2_qadata_cachep); | 199 | kmem_cache_destroy(gfs2_qadata_cachep); |
208 | 200 | ||
@@ -248,7 +240,6 @@ static void __exit exit_gfs2_fs(void) | |||
248 | rcu_barrier(); | 240 | rcu_barrier(); |
249 | 241 | ||
250 | mempool_destroy(gfs2_page_pool); | 242 | mempool_destroy(gfs2_page_pool); |
251 | kmem_cache_destroy(gfs2_rsrv_cachep); | ||
252 | kmem_cache_destroy(gfs2_qadata_cachep); | 243 | kmem_cache_destroy(gfs2_qadata_cachep); |
253 | kmem_cache_destroy(gfs2_quotad_cachep); | 244 | kmem_cache_destroy(gfs2_quotad_cachep); |
254 | kmem_cache_destroy(gfs2_rgrpd_cachep); | 245 | kmem_cache_destroy(gfs2_rgrpd_cachep); |
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index b845efdb5e3a..63a72109976c 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c | |||
@@ -550,10 +550,10 @@ int gfs2_qa_alloc(struct gfs2_inode *ip) | |||
550 | return error; | 550 | return error; |
551 | } | 551 | } |
552 | 552 | ||
553 | void gfs2_qa_delete(struct gfs2_inode *ip) | 553 | void gfs2_qa_delete(struct gfs2_inode *ip, atomic_t *wcount) |
554 | { | 554 | { |
555 | down_write(&ip->i_rw_mutex); | 555 | down_write(&ip->i_rw_mutex); |
556 | if (ip->i_qadata) { | 556 | if (ip->i_qadata && ((wcount == NULL) || (atomic_read(wcount) <= 1))) { |
557 | kmem_cache_free(gfs2_qadata_cachep, ip->i_qadata); | 557 | kmem_cache_free(gfs2_qadata_cachep, ip->i_qadata); |
558 | ip->i_qadata = NULL; | 558 | ip->i_qadata = NULL; |
559 | } | 559 | } |
diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h index 1940dd9cb1c7..5e47c935a515 100644 --- a/fs/gfs2/quota.h +++ b/fs/gfs2/quota.h | |||
@@ -19,7 +19,7 @@ struct gfs2_sbd; | |||
19 | #define NO_GID_QUOTA_CHANGE INVALID_GID | 19 | #define NO_GID_QUOTA_CHANGE INVALID_GID |
20 | 20 | ||
21 | extern int gfs2_qa_alloc(struct gfs2_inode *ip); | 21 | extern int gfs2_qa_alloc(struct gfs2_inode *ip); |
22 | extern void gfs2_qa_delete(struct gfs2_inode *ip); | 22 | extern void gfs2_qa_delete(struct gfs2_inode *ip, atomic_t *wcount); |
23 | extern int gfs2_quota_hold(struct gfs2_inode *ip, kuid_t uid, kgid_t gid); | 23 | extern int gfs2_quota_hold(struct gfs2_inode *ip, kuid_t uid, kgid_t gid); |
24 | extern void gfs2_quota_unhold(struct gfs2_inode *ip); | 24 | extern void gfs2_quota_unhold(struct gfs2_inode *ip); |
25 | 25 | ||
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index cb30748e7b19..b879925ce134 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
@@ -602,28 +602,7 @@ void gfs2_free_clones(struct gfs2_rgrpd *rgd) | |||
602 | */ | 602 | */ |
603 | int gfs2_rsqa_alloc(struct gfs2_inode *ip) | 603 | int gfs2_rsqa_alloc(struct gfs2_inode *ip) |
604 | { | 604 | { |
605 | int error = 0; | 605 | return gfs2_qa_alloc(ip); |
606 | |||
607 | down_write(&ip->i_rw_mutex); | ||
608 | if (ip->i_res) | ||
609 | goto out; | ||
610 | |||
611 | ip->i_res = kmem_cache_zalloc(gfs2_rsrv_cachep, GFP_NOFS); | ||
612 | if (!ip->i_res) { | ||
613 | error = -ENOMEM; | ||
614 | goto out; | ||
615 | } | ||
616 | |||
617 | RB_CLEAR_NODE(&ip->i_res->rs_node); | ||
618 | error = gfs2_qa_alloc(ip); | ||
619 | if (error) { | ||
620 | kmem_cache_free(gfs2_rsrv_cachep, ip->i_res); | ||
621 | ip->i_res = NULL; | ||
622 | } | ||
623 | |||
624 | out: | ||
625 | up_write(&ip->i_rw_mutex); | ||
626 | return error; | ||
627 | } | 606 | } |
628 | 607 | ||
629 | static void dump_rs(struct seq_file *seq, const struct gfs2_blkreserv *rs) | 608 | static void dump_rs(struct seq_file *seq, const struct gfs2_blkreserv *rs) |
@@ -693,15 +672,12 @@ void gfs2_rs_deltree(struct gfs2_blkreserv *rs) | |||
693 | void gfs2_rsqa_delete(struct gfs2_inode *ip, atomic_t *wcount) | 672 | void gfs2_rsqa_delete(struct gfs2_inode *ip, atomic_t *wcount) |
694 | { | 673 | { |
695 | down_write(&ip->i_rw_mutex); | 674 | down_write(&ip->i_rw_mutex); |
696 | if (ip->i_res && ((wcount == NULL) || (atomic_read(wcount) <= 1))) { | 675 | if ((wcount == NULL) || (atomic_read(wcount) <= 1)) { |
697 | gfs2_rs_deltree(ip->i_res); | 676 | gfs2_rs_deltree(&ip->i_res); |
698 | BUG_ON(ip->i_res->rs_free); | 677 | BUG_ON(ip->i_res.rs_free); |
699 | kmem_cache_free(gfs2_rsrv_cachep, ip->i_res); | ||
700 | ip->i_res = NULL; | ||
701 | |||
702 | gfs2_qa_delete(ip); | ||
703 | } | 678 | } |
704 | up_write(&ip->i_rw_mutex); | 679 | up_write(&ip->i_rw_mutex); |
680 | gfs2_qa_delete(ip, wcount); | ||
705 | } | 681 | } |
706 | 682 | ||
707 | /** | 683 | /** |
@@ -1465,7 +1441,7 @@ static void rs_insert(struct gfs2_inode *ip) | |||
1465 | { | 1441 | { |
1466 | struct rb_node **newn, *parent = NULL; | 1442 | struct rb_node **newn, *parent = NULL; |
1467 | int rc; | 1443 | int rc; |
1468 | struct gfs2_blkreserv *rs = ip->i_res; | 1444 | struct gfs2_blkreserv *rs = &ip->i_res; |
1469 | struct gfs2_rgrpd *rgd = rs->rs_rbm.rgd; | 1445 | struct gfs2_rgrpd *rgd = rs->rs_rbm.rgd; |
1470 | u64 fsblock = gfs2_rbm_to_block(&rs->rs_rbm); | 1446 | u64 fsblock = gfs2_rbm_to_block(&rs->rs_rbm); |
1471 | 1447 | ||
@@ -1512,7 +1488,7 @@ static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip, | |||
1512 | { | 1488 | { |
1513 | struct gfs2_rbm rbm = { .rgd = rgd, }; | 1489 | struct gfs2_rbm rbm = { .rgd = rgd, }; |
1514 | u64 goal; | 1490 | u64 goal; |
1515 | struct gfs2_blkreserv *rs = ip->i_res; | 1491 | struct gfs2_blkreserv *rs = &ip->i_res; |
1516 | u32 extlen; | 1492 | u32 extlen; |
1517 | u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; | 1493 | u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; |
1518 | int ret; | 1494 | int ret; |
@@ -1583,7 +1559,7 @@ static u64 gfs2_next_unreserved_block(struct gfs2_rgrpd *rgd, u64 block, | |||
1583 | } | 1559 | } |
1584 | 1560 | ||
1585 | if (n) { | 1561 | if (n) { |
1586 | while ((rs_cmp(block, length, rs) == 0) && (ip->i_res != rs)) { | 1562 | while ((rs_cmp(block, length, rs) == 0) && (&ip->i_res != rs)) { |
1587 | block = gfs2_rbm_to_block(&rs->rs_rbm) + rs->rs_free; | 1563 | block = gfs2_rbm_to_block(&rs->rs_rbm) + rs->rs_free; |
1588 | n = n->rb_right; | 1564 | n = n->rb_right; |
1589 | if (n == NULL) | 1565 | if (n == NULL) |
@@ -1993,7 +1969,7 @@ int gfs2_inplace_reserve(struct gfs2_inode *ip, struct gfs2_alloc_parms *ap) | |||
1993 | { | 1969 | { |
1994 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); | 1970 | struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); |
1995 | struct gfs2_rgrpd *begin = NULL; | 1971 | struct gfs2_rgrpd *begin = NULL; |
1996 | struct gfs2_blkreserv *rs = ip->i_res; | 1972 | struct gfs2_blkreserv *rs = &ip->i_res; |
1997 | int error = 0, rg_locked, flags = 0; | 1973 | int error = 0, rg_locked, flags = 0; |
1998 | u64 last_unlinked = NO_BLOCK; | 1974 | u64 last_unlinked = NO_BLOCK; |
1999 | int loops = 0; | 1975 | int loops = 0; |
@@ -2122,7 +2098,7 @@ next_rgrp: | |||
2122 | 2098 | ||
2123 | void gfs2_inplace_release(struct gfs2_inode *ip) | 2099 | void gfs2_inplace_release(struct gfs2_inode *ip) |
2124 | { | 2100 | { |
2125 | struct gfs2_blkreserv *rs = ip->i_res; | 2101 | struct gfs2_blkreserv *rs = &ip->i_res; |
2126 | 2102 | ||
2127 | if (rs->rs_rgd_gh.gh_gl) | 2103 | if (rs->rs_rgd_gh.gh_gl) |
2128 | gfs2_glock_dq_uninit(&rs->rs_rgd_gh); | 2104 | gfs2_glock_dq_uninit(&rs->rs_rgd_gh); |
@@ -2276,7 +2252,7 @@ static void gfs2_rgrp_error(struct gfs2_rgrpd *rgd) | |||
2276 | static void gfs2_adjust_reservation(struct gfs2_inode *ip, | 2252 | static void gfs2_adjust_reservation(struct gfs2_inode *ip, |
2277 | const struct gfs2_rbm *rbm, unsigned len) | 2253 | const struct gfs2_rbm *rbm, unsigned len) |
2278 | { | 2254 | { |
2279 | struct gfs2_blkreserv *rs = ip->i_res; | 2255 | struct gfs2_blkreserv *rs = &ip->i_res; |
2280 | struct gfs2_rgrpd *rgd = rbm->rgd; | 2256 | struct gfs2_rgrpd *rgd = rbm->rgd; |
2281 | unsigned rlen; | 2257 | unsigned rlen; |
2282 | u64 block; | 2258 | u64 block; |
@@ -2319,8 +2295,8 @@ static void gfs2_set_alloc_start(struct gfs2_rbm *rbm, | |||
2319 | { | 2295 | { |
2320 | u64 goal; | 2296 | u64 goal; |
2321 | 2297 | ||
2322 | if (gfs2_rs_active(ip->i_res)) { | 2298 | if (gfs2_rs_active(&ip->i_res)) { |
2323 | *rbm = ip->i_res->rs_rbm; | 2299 | *rbm = ip->i_res.rs_rbm; |
2324 | return; | 2300 | return; |
2325 | } | 2301 | } |
2326 | 2302 | ||
@@ -2374,7 +2350,7 @@ int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks, | |||
2374 | gfs2_alloc_extent(&rbm, dinode, nblocks); | 2350 | gfs2_alloc_extent(&rbm, dinode, nblocks); |
2375 | block = gfs2_rbm_to_block(&rbm); | 2351 | block = gfs2_rbm_to_block(&rbm); |
2376 | rbm.rgd->rd_last_alloc = block - rbm.rgd->rd_data0; | 2352 | rbm.rgd->rd_last_alloc = block - rbm.rgd->rd_data0; |
2377 | if (gfs2_rs_active(ip->i_res)) | 2353 | if (gfs2_rs_active(&ip->i_res)) |
2378 | gfs2_adjust_reservation(ip, &rbm, *nblocks); | 2354 | gfs2_adjust_reservation(ip, &rbm, *nblocks); |
2379 | ndata = *nblocks; | 2355 | ndata = *nblocks; |
2380 | if (dinode) | 2356 | if (dinode) |
diff --git a/fs/gfs2/rgrp.h b/fs/gfs2/rgrp.h index 06bbefaabc31..66b51cf66dfa 100644 --- a/fs/gfs2/rgrp.h +++ b/fs/gfs2/rgrp.h | |||
@@ -78,7 +78,7 @@ extern int gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset, | |||
78 | extern int gfs2_fitrim(struct file *filp, void __user *argp); | 78 | extern int gfs2_fitrim(struct file *filp, void __user *argp); |
79 | 79 | ||
80 | /* This is how to tell if a reservation is in the rgrp tree: */ | 80 | /* This is how to tell if a reservation is in the rgrp tree: */ |
81 | static inline bool gfs2_rs_active(struct gfs2_blkreserv *rs) | 81 | static inline bool gfs2_rs_active(const struct gfs2_blkreserv *rs) |
82 | { | 82 | { |
83 | return rs && !RB_EMPTY_NODE(&rs->rs_node); | 83 | return rs && !RB_EMPTY_NODE(&rs->rs_node); |
84 | } | 84 | } |
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c index b030ca223067..64f03c821b5d 100644 --- a/fs/gfs2/super.c +++ b/fs/gfs2/super.c | |||
@@ -1593,8 +1593,8 @@ out_truncate: | |||
1593 | 1593 | ||
1594 | out_unlock: | 1594 | out_unlock: |
1595 | /* Error path for case 1 */ | 1595 | /* Error path for case 1 */ |
1596 | if (gfs2_rs_active(ip->i_res)) | 1596 | if (gfs2_rs_active(&ip->i_res)) |
1597 | gfs2_rs_deltree(ip->i_res); | 1597 | gfs2_rs_deltree(&ip->i_res); |
1598 | 1598 | ||
1599 | if (test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) { | 1599 | if (test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) { |
1600 | ip->i_iopen_gh.gh_flags |= GL_NOCACHE; | 1600 | ip->i_iopen_gh.gh_flags |= GL_NOCACHE; |
@@ -1632,7 +1632,8 @@ static struct inode *gfs2_alloc_inode(struct super_block *sb) | |||
1632 | ip->i_flags = 0; | 1632 | ip->i_flags = 0; |
1633 | ip->i_gl = NULL; | 1633 | ip->i_gl = NULL; |
1634 | ip->i_rgd = NULL; | 1634 | ip->i_rgd = NULL; |
1635 | ip->i_res = NULL; | 1635 | memset(&ip->i_res, 0, sizeof(ip->i_res)); |
1636 | RB_CLEAR_NODE(&ip->i_res.rs_node); | ||
1636 | ip->i_rahead = 0; | 1637 | ip->i_rahead = 0; |
1637 | } | 1638 | } |
1638 | return &ip->i_inode; | 1639 | return &ip->i_inode; |
diff --git a/fs/gfs2/util.c b/fs/gfs2/util.c index 3b4819d8bdd6..cf645835710f 100644 --- a/fs/gfs2/util.c +++ b/fs/gfs2/util.c | |||
@@ -28,7 +28,6 @@ struct kmem_cache *gfs2_bufdata_cachep __read_mostly; | |||
28 | struct kmem_cache *gfs2_rgrpd_cachep __read_mostly; | 28 | struct kmem_cache *gfs2_rgrpd_cachep __read_mostly; |
29 | struct kmem_cache *gfs2_quotad_cachep __read_mostly; | 29 | struct kmem_cache *gfs2_quotad_cachep __read_mostly; |
30 | struct kmem_cache *gfs2_qadata_cachep __read_mostly; | 30 | struct kmem_cache *gfs2_qadata_cachep __read_mostly; |
31 | struct kmem_cache *gfs2_rsrv_cachep __read_mostly; | ||
32 | mempool_t *gfs2_page_pool __read_mostly; | 31 | mempool_t *gfs2_page_pool __read_mostly; |
33 | 32 | ||
34 | void gfs2_assert_i(struct gfs2_sbd *sdp) | 33 | void gfs2_assert_i(struct gfs2_sbd *sdp) |
diff --git a/fs/gfs2/util.h b/fs/gfs2/util.h index 9edbcc94bdf6..c81295f407f6 100644 --- a/fs/gfs2/util.h +++ b/fs/gfs2/util.h | |||
@@ -150,7 +150,6 @@ extern struct kmem_cache *gfs2_bufdata_cachep; | |||
150 | extern struct kmem_cache *gfs2_rgrpd_cachep; | 150 | extern struct kmem_cache *gfs2_rgrpd_cachep; |
151 | extern struct kmem_cache *gfs2_quotad_cachep; | 151 | extern struct kmem_cache *gfs2_quotad_cachep; |
152 | extern struct kmem_cache *gfs2_qadata_cachep; | 152 | extern struct kmem_cache *gfs2_qadata_cachep; |
153 | extern struct kmem_cache *gfs2_rsrv_cachep; | ||
154 | extern mempool_t *gfs2_page_pool; | 153 | extern mempool_t *gfs2_page_pool; |
155 | 154 | ||
156 | static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt, | 155 | static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt, |