-1

I was investigating the journaling layer used in the EXT4 (JBD2) and I added some printk to see the behavior of the ext4_journal_start and ext4_journal_stop functions being called.

This is the procedure:

I first format a given partition using:

sudo mke2fs -t ext4 /dev/vdb

(I am using QEMU to run this experiment)

Then I mount it:

sudo mount /dev/vdb /mnt/mydisk

That is the normal procedure for mounting, but when I mount it, because of my printk's functions in both ext4_journal_start/stop, the dmesg shows a lot of calls to journal_stop without any journal_start.

P.S.: I should guess that it is some background behavior of EXT4 or something, but I have no idea what is it.

Here is the dmesg output:

 * Restoring resolver state...                                           [ OK ] 
 * Stopping System V runlevel compatibility                              [ OK ]
[  124.648904] JOURNAL STOP
[  124.778691] JOURNAL STOP
 ...
[... ]  # it is called maybe more than 40 times
 ...
[  129.641895] jbd2_journal_commit_transaction
[  129.769132] JOURNAL STOP
 ...
[... ]  # it is called maybe more than 40 times
 ...
[  134.766164] jbd2_journal_commit_transaction

After 134 seconds, it stops these messages, and then I try to write some file into that mounting point, and it behaves as expected.

[  624.995549] JOURNAL START
[  624.996849] JOURNAL STOP
[  625.000676] JOURNAL START
[  625.001757] JOURNAL START
[  625.002822] JOURNAL STOP
[  625.003773] JOURNAL STOP
[  631.004110] jbd2_journal_commit_transaction

So, it is strange that after mounting, even that I did absolutely nothing, these functions are being called (journal_stop) several times and, furthermore, after two commits (the function call jbd2_journal_commit_transaction) the dmesg gets stable, and it then follows an expected behavior.

To make it clear, my question is: what causes this several calls without any reason (the ext4_journal_stop)?

campescassiano
  • 809
  • 5
  • 18

1 Answers1

0

By debugging the ext4 source code, I discovered what causes the several journal operations right after mounting the file system.

The ext4 is creating the inode table, so that is why the journal is called several times right after mounting a partition.

campescassiano
  • 809
  • 5
  • 18