Skip to contentSkip to conversation

ext4: include journal blocks in df overhead calcs

PATCH Superseded Eric Sandeen 2 participants 3 messages Nov 28, 2012 – Dec 25, 2012 ext4 file system

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ext4: include journal blocks in df overhead calcs

To more accurately calculate overhead for "bsd" style df reporting, we should count the journal blocks as overhead as well.

---

I don't think this needs any special treatment for big allocclusters, does it? df still reports blocks?

fs/ext4/super.c +4 -0
index 80928f7..b441daa 100644
@@ -3229,6 +3229,10 @@ int ext4_calculate_overhead(struct super_block *sb)
 			memset(buf, 0, PAGE_SIZE);
 		cond_resched();
 	}
+	/* Add the journal blocks as well */
+	if (sbi->s_journal)
+		overhead += sbi->s_journal->j_maxlen;
+
 	sbi->s_overhead = overhead;
 	smp_wmb();
 	free_page((unsigned long) buf);
#1 lore raw

PATCH v2 1/1 ext4: include journal blocks in df overhead calcs

To more accurately calculate overhead for "bsd" style df reporting, we should count the journal blocks as overhead as well.

---

V2: I guess s_overhead _is_ in clusters, so do that conversion after all. Ted, if I'm wrong, you can pick the other patch ;)

Editorial/soapbox:

TBH it's hard to keep track of what fields are now stored as "clusters" not blocks . . .

Esp. when we do things like use local vars named "blk" -

	blks = count_overhead(sb, i, buf);

but count_overhead() returns *clusters*, so it's really quite confusing to keep it all straight.

fs/ext4/super.c +4 -0
index 80928f7..b441daa 100644
@@ -3229,6 +3229,10 @@ int ext4_calculate_overhead(struct super_block *sb)
 			memset(buf, 0, PAGE_SIZE);
 		cond_resched();
 	}
+	/* Add the journal blocks as well */
+	if (sbi->s_journal)
+		overhead += EXT4_B2C(sbi, sbi->s_journal->j_maxlen);
+
 	sbi->s_overhead = overhead;
 	smp_wmb();
 	free_page((unsigned long) buf);