Re: Buffer state bits
flat view
From: Jan Kara <jack@suse.cz>
Date: 2009-08-27 11:14:03
Also in:
linux-fsdevel
On Wed 26-08-09 22:27:00, Jamie Lokier wrote:
Jan Kara wrote:quoted
BH_Dirty - Ideally, this bit should mean "buffer has data that have to be written". But it is not quite true. The problem happens when someone calls set_page_dirty() on the page to which buffers are attached or similarly when buffers are attached to a dirty page. Then all buffers attached to the page are marked dirty - even those that are beyond end of file which obviously should not be written. When buffer is dirty, the page has to be dirty as well (mark buffer dirty takes care of that). It is not necessarily the other way around and buffer dirty bit is what ultimately decides whether the buffer goes to disk or not.That last sentence implies page can be dirty while a buffer in the page is not dirty.
Yes, that happens.
In that case, do buffers beyond the end of file need to be set dirty by set_page_dirty()? If yes, perhaps the text could explain why.
No, they need not. But it's racy to check i_size in set_page_dirty because we don't hold i_mutex... I'll add some explanation to the paragraph. Honza -- Jan Kara [off-list ref] SUSE Labs, CR