2015-10-14 04:40:44

by Daeho Jeong

[permalink] [raw]
Subject: Question about ext4_free_blocks() Behavior for Per-File Data Journaling Mode

Hi. I have a question about ext4_free_blocks() behavior for per-file data journaling
mode. AFAIUI, in ext4_free_blocks(), it doesn't invoke ext4_forget() function for
data blocks of a per-file data journaling enabled file, because all the data blocks
of the file are not linked to the block device's address space of the file, but the
address space of the inode of the file, so any data blocks of the file cannot be
found by sb_find_get_block() function. It seems a bug, but I am not sure.
Is this a problem?

I think that, in ext4_free_blocks(), we have to find buffer heads of the file's data
,which are journaled, and transfer the found buffer heads to ext4_forget() in
order to forget and revoke the buffer head related journal record. For that,
we might need to transfer the logical block numbers of the buffer heads of
files' data blocks to ext4_free_blocks(). Do you have a better idea to resolve
this problem?


2015-12-08 07:02:23

by Daeho Jeong

[permalink] [raw]
Subject: Re: Question about ext4_free_blocks() Behavior for Per-File Data Journaling Mode

> Hi. I have a question about ext4_free_blocks() behavior for per-file data journaling
> mode. AFAIUI, in ext4_free_blocks(), it doesn't invoke ext4_forget() function for
> data blocks of a per-file data journaling enabled file, because all the data blocks
> of the file are not linked to the block device's address space of the file, but the
> address space of the inode of the file, so any data blocks of the file cannot be
> found by sb_find_get_block() function. It seems a bug, but I am not sure.
> Is this a problem?

I just answer my own question. It was a silly question, because all the data buffers
of per-file data journalled file are forgotten by jbd2_journal_invalidatepage() in advance
of invoking ext4_free_blocks().

Anyway, the revoke operation to the data blocks is still missing in ext4_free_blocks().
I will fix this problem. :-)