Re: Delayed allocation and page_lock vs transaction start ordering

Jan Kara
2008-04-16T09:26:16Z

On Tue 15-04-08 10:58:25, Badari Pulavarty wrote:
>
> On Tue, 2008-04-15 at 18:14 +0200, Jan Kara wrote:
> > Hi,
> >
> > I've ported my patch inversing locking ordering of page_lock and
> > transaction start to ext4 (on top of ext4 patch queue). Everything except
> > delayed allocation is converted (the patch is below for interested
> > readers).
>
> I am curious on the following code:
>
> ext4_ordered_writepage()
>
> + * Note that we don't need to start a transaction unless we're journaling
> + * data because we should have holes filled from ext4_page_mkwrite(). If
> + * we are journaling data, we cannot start transaction directly because
> + * transaction start ranks above page lock so we have to do some magic...
Hmm, actually this comment becomes completely correct only after JBD
ordered mode rewrite patch ;). But the locking is correct even now - note
that we call block_write_full_page() before we start a transaction and
block_write_full_page() unlocks the page...

> Currently you are starting a transaction when the page is locked.
> What do you plan to do here ?

Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR