All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Monakhov <dmonakhov@openvz.org>
To: Jan Kara <jack@suse.cz>
Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, jack@suse.cz,
	lczerner@redhat.com
Subject: Re: [PATCH 08/10] ext4: endless truncate due to nonlocked dio readers V2
Date: Thu, 27 Sep 2012 19:11:13 +0400	[thread overview]
Message-ID: <87626z5wmm.fsf@openvz.org> (raw)
In-Reply-To: <20120926140538.GH10145@quack.suse.cz>

On Wed, 26 Sep 2012 16:05:38 +0200, Jan Kara <jack@suse.cz> wrote:
> On Mon 24-09-12 15:44:18, Dmitry Monakhov wrote:
> > If we have enough aggressive DIO readers, truncate and other dio
> > waiters will wait forever inside inode_dio_wait(). It is reasonable
> > to disable nonlock DIO read optimization during truncate.
>   Umm, actually this is a problem with any inode_dio_wait() call in ext4,
> isn't it? So I'd just create ext4_inode_dio_wait() doing
> 	ext4_inode_block_unlocked_dio(inode);
> 	inode_dio_wait(inode);
> 	ext4_inode_resume_unlocked_dio(inode);
> 
> and use it instead of inode_dio_wait().
Ops sorry miss that comment.
Actually all other places are very special, and guarded already: 
1) ext4_ext_punch_hole()
2) ext4_move_extents()
3) ext4_change_inode_journal_flag()
Such functions require explicit scope where nonlocked DIO read should
be disabled. So ext4_setattr() is the only place where we wait for
existing dio, but nonlocked dio reads are allowed and may result in
temporal live-lock.
> 
> 								Honza
>  
> > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
> > ---
> >  fs/ext4/inode.c |    8 ++++++--
> >  1 files changed, 6 insertions(+), 2 deletions(-)
> > 
> > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> > index 32e9701..d3f86e7 100644
> > --- a/fs/ext4/inode.c
> > +++ b/fs/ext4/inode.c
> > @@ -4330,9 +4330,13 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
> >  	if (attr->ia_valid & ATTR_SIZE) {
> >  		if (attr->ia_size != inode->i_size) {
> >  			truncate_setsize(inode, attr->ia_size);
> > -			/* Inode size will be reduced, wait for dio in flight */
> > -			if (orphan)
> > +			/* Inode size will be reduced, wait for dio in flight.
> > +			 * Temproraly disable unlocked DIO to prevent livelock */
>                            ^^ Temporarily
> 
> > +			if (orphan) {
> > +				ext4_inode_block_unlocked_dio(inode);
> >  				inode_dio_wait(inode);
> > +				ext4_inode_resume_unlocked_dio(inode);
> > +			}
> >  		}
> >  		ext4_truncate(inode);
> >  	}
> > -- 
> > 1.7.7.6
> > 
> -- 
> Jan Kara <jack@suse.cz>
> SUSE Labs, CR
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2012-09-27 15:11 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-24 11:44 [PATCH 00/10] ext4: Bunch of DIO/AIO fixes V3 Dmitry Monakhov
2012-09-24 11:44 ` [PATCH 01/10] ext4: ext4_inode_info diet Dmitry Monakhov
2012-09-26 12:28   ` Jan Kara
2012-09-24 11:44 ` [PATCH 02/10] ext4: give i_aiodio_unwritten more appropriate name Dmitry Monakhov
2012-09-26 12:32   ` Jan Kara
2012-09-24 11:44 ` [PATCH 03/10] ext4: fix unwritten counter leakage Dmitry Monakhov
2012-09-26 13:07   ` Jan Kara
2012-09-27 12:19     ` Dmitry Monakhov
2012-09-27 12:34       ` Jan Kara
2012-09-27 12:54         ` Dmitry Monakhov
2012-09-27 13:07           ` Jan Kara
2012-09-24 11:44 ` [PATCH 04/10] ext4: completed_io locking cleanup V3 Dmitry Monakhov
2012-09-26 13:42   ` Jan Kara
2012-09-27 11:24     ` Dmitry Monakhov
2012-09-24 11:44 ` [PATCH 05/10] ext4: serialize dio nonlocked reads with defrag workers V3 Dmitry Monakhov
2012-09-26 13:49   ` Jan Kara
2012-09-24 11:44 ` [PATCH 06/10] ext4: punch_hole should wait for DIO writers V2 Dmitry Monakhov
2012-09-26 13:56   ` Jan Kara
2012-09-24 11:44 ` [PATCH 07/10] ext4: serialize unlocked dio reads with truncate Dmitry Monakhov
2012-09-24 11:44 ` [PATCH 08/10] ext4: endless truncate due to nonlocked dio readers V2 Dmitry Monakhov
2012-09-26 14:05   ` Jan Kara
2012-09-27 15:11     ` Dmitry Monakhov [this message]
2012-09-27 15:23       ` Jan Kara
2012-09-24 11:44 ` [PATCH 09/10] ext4: serialize truncate with owerwrite DIO workers V2 Dmitry Monakhov
2012-09-24 11:44 ` [PATCH 10/10] ext4: fix ext_remove_space for punch_hole case Dmitry Monakhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87626z5wmm.fsf@openvz.org \
    --to=dmonakhov@openvz.org \
    --cc=jack@suse.cz \
    --cc=lczerner@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.