Re: [PATCH] Change ll_rw_block() calls in JBD

Zoltan Menyhart
2006-05-19T12:35:51Z

Jan Kara wrote:

>>>+ if (!buffer_jbd(bh) || jh->b_jlist != BJ_SyncData) {
>>
>>Who (else) can take away the journal head, remove our "jh" from the
>>synch. data list?
>
> For two of the above comments: Under memory pressure data buffers can
> be written out earlier and then released by __journal_try_to_free_buffer()
> as they are not dirty any more. The above checks protect us against this.

Assume "bh" has been set free in the mean time.
Assume it is now used for another transaction (maybe for another file system).

The first part of the test should verify not only if "bh" is used for _any_
journal head but if it is exactly for our current one:

if (buffer_jbd(bh) != jh || ...

Thanks,

Zoltan