diff options
Diffstat (limited to 'fs/gfs2/rgrp.c')
-rw-r--r-- | fs/gfs2/rgrp.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index bab9cfab34c7..8b01c635d925 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
@@ -276,9 +276,7 @@ void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd) | |||
276 | return; | 276 | return; |
277 | } | 277 | } |
278 | 278 | ||
279 | tmp = rgd->rd_data - | 279 | tmp = rgd->rd_data - rgd->rd_free - rgd->rd_dinodes; |
280 | rgd->rd_free - | ||
281 | rgd->rd_rg.rg_dinodes; | ||
282 | if (count[1] + count[2] != tmp) { | 280 | if (count[1] + count[2] != tmp) { |
283 | if (gfs2_consist_rgrpd(rgd)) | 281 | if (gfs2_consist_rgrpd(rgd)) |
284 | fs_err(sdp, "used data mismatch: %u != %u\n", | 282 | fs_err(sdp, "used data mismatch: %u != %u\n", |
@@ -286,10 +284,10 @@ void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd) | |||
286 | return; | 284 | return; |
287 | } | 285 | } |
288 | 286 | ||
289 | if (count[3] != rgd->rd_rg.rg_dinodes) { | 287 | if (count[3] != rgd->rd_dinodes) { |
290 | if (gfs2_consist_rgrpd(rgd)) | 288 | if (gfs2_consist_rgrpd(rgd)) |
291 | fs_err(sdp, "used metadata mismatch: %u != %u\n", | 289 | fs_err(sdp, "used metadata mismatch: %u != %u\n", |
292 | count[3], rgd->rd_rg.rg_dinodes); | 290 | count[3], rgd->rd_dinodes); |
293 | return; | 291 | return; |
294 | } | 292 | } |
295 | 293 | ||
@@ -692,7 +690,6 @@ int gfs2_rindex_hold(struct gfs2_sbd *sdp, struct gfs2_holder *ri_gh) | |||
692 | static void gfs2_rgrp_in(struct gfs2_rgrpd *rgd, const void *buf) | 690 | static void gfs2_rgrp_in(struct gfs2_rgrpd *rgd, const void *buf) |
693 | { | 691 | { |
694 | const struct gfs2_rgrp *str = buf; | 692 | const struct gfs2_rgrp *str = buf; |
695 | struct gfs2_rgrp_host *rg = &rgd->rd_rg; | ||
696 | u32 rg_flags; | 693 | u32 rg_flags; |
697 | 694 | ||
698 | rg_flags = be32_to_cpu(str->rg_flags); | 695 | rg_flags = be32_to_cpu(str->rg_flags); |
@@ -701,21 +698,20 @@ static void gfs2_rgrp_in(struct gfs2_rgrpd *rgd, const void *buf) | |||
701 | else | 698 | else |
702 | rgd->rd_flags &= ~GFS2_RDF_NOALLOC; | 699 | rgd->rd_flags &= ~GFS2_RDF_NOALLOC; |
703 | rgd->rd_free = be32_to_cpu(str->rg_free); | 700 | rgd->rd_free = be32_to_cpu(str->rg_free); |
704 | rg->rg_dinodes = be32_to_cpu(str->rg_dinodes); | 701 | rgd->rd_dinodes = be32_to_cpu(str->rg_dinodes); |
705 | rgd->rd_igeneration = be64_to_cpu(str->rg_igeneration); | 702 | rgd->rd_igeneration = be64_to_cpu(str->rg_igeneration); |
706 | } | 703 | } |
707 | 704 | ||
708 | static void gfs2_rgrp_out(struct gfs2_rgrpd *rgd, void *buf) | 705 | static void gfs2_rgrp_out(struct gfs2_rgrpd *rgd, void *buf) |
709 | { | 706 | { |
710 | struct gfs2_rgrp *str = buf; | 707 | struct gfs2_rgrp *str = buf; |
711 | struct gfs2_rgrp_host *rg = &rgd->rd_rg; | ||
712 | u32 rg_flags = 0; | 708 | u32 rg_flags = 0; |
713 | 709 | ||
714 | if (rgd->rd_flags & GFS2_RDF_NOALLOC) | 710 | if (rgd->rd_flags & GFS2_RDF_NOALLOC) |
715 | rg_flags |= GFS2_RGF_NOALLOC; | 711 | rg_flags |= GFS2_RGF_NOALLOC; |
716 | str->rg_flags = cpu_to_be32(rg_flags); | 712 | str->rg_flags = cpu_to_be32(rg_flags); |
717 | str->rg_free = cpu_to_be32(rgd->rd_free); | 713 | str->rg_free = cpu_to_be32(rgd->rd_free); |
718 | str->rg_dinodes = cpu_to_be32(rg->rg_dinodes); | 714 | str->rg_dinodes = cpu_to_be32(rgd->rd_dinodes); |
719 | str->__pad = cpu_to_be32(0); | 715 | str->__pad = cpu_to_be32(0); |
720 | str->rg_igeneration = cpu_to_be64(rgd->rd_igeneration); | 716 | str->rg_igeneration = cpu_to_be64(rgd->rd_igeneration); |
721 | memset(&str->rg_reserved, 0, sizeof(str->rg_reserved)); | 717 | memset(&str->rg_reserved, 0, sizeof(str->rg_reserved)); |
@@ -1447,7 +1443,7 @@ u64 gfs2_alloc_di(struct gfs2_inode *dip, u64 *generation) | |||
1447 | 1443 | ||
1448 | gfs2_assert_withdraw(sdp, rgd->rd_free); | 1444 | gfs2_assert_withdraw(sdp, rgd->rd_free); |
1449 | rgd->rd_free--; | 1445 | rgd->rd_free--; |
1450 | rgd->rd_rg.rg_dinodes++; | 1446 | rgd->rd_dinodes++; |
1451 | *generation = rgd->rd_igeneration++; | 1447 | *generation = rgd->rd_igeneration++; |
1452 | gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1); | 1448 | gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1); |
1453 | gfs2_rgrp_out(rgd, rgd->rd_bits[0].bi_bh->b_data); | 1449 | gfs2_rgrp_out(rgd, rgd->rd_bits[0].bi_bh->b_data); |
@@ -1546,9 +1542,9 @@ static void gfs2_free_uninit_di(struct gfs2_rgrpd *rgd, u64 blkno) | |||
1546 | return; | 1542 | return; |
1547 | gfs2_assert_withdraw(sdp, rgd == tmp_rgd); | 1543 | gfs2_assert_withdraw(sdp, rgd == tmp_rgd); |
1548 | 1544 | ||
1549 | if (!rgd->rd_rg.rg_dinodes) | 1545 | if (!rgd->rd_dinodes) |
1550 | gfs2_consist_rgrpd(rgd); | 1546 | gfs2_consist_rgrpd(rgd); |
1551 | rgd->rd_rg.rg_dinodes--; | 1547 | rgd->rd_dinodes--; |
1552 | rgd->rd_free++; | 1548 | rgd->rd_free++; |
1553 | 1549 | ||
1554 | gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1); | 1550 | gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1); |