From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kara Subject: Re: [PATCH 2/2] fs: Make write(2) interruptible by a signal Date: Wed, 16 Nov 2011 13:54:45 +0100 Message-ID: <20111116125445.GA8195@quack.suse.cz> References: <1321441935-6802-1-git-send-email-jack@suse.cz> <1321441935-6802-3-git-send-email-jack@suse.cz> <20111116114421.GA9098@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jan Kara , Andrew Morton , Christoph Hellwig , Al Viro , "linux-fsdevel@vger.kernel.org" To: Wu Fengguang Return-path: Received: from cantor2.suse.de ([195.135.220.15]:41544 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753222Ab1KPMzI (ORCPT ); Wed, 16 Nov 2011 07:55:08 -0500 Content-Disposition: inline In-Reply-To: <20111116114421.GA9098@localhost> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed 16-11-11 19:44:21, Wu Fengguang wrote: > Jan, > > Due to the (very low) possibility of data loss by partial writes, IMHO > it would safer to test this patch in linux-next until next merge window, > would you agree? Fine with me. Thanks. > Pushing the first patch will address the main problem, anyway. Hopefully, yes. Honza > On Wed, Nov 16, 2011 at 07:12:15PM +0800, Jan Kara wrote: > > Currently write(2) to a file is not interruptible by a signal. Sometimes this > > is desirable (e.g. when you want to quickly kill a process hogging your disk or > > when some process gets blocked in balance_dirty_pages() indefinitely due to a > > filesystem being in an error condition). > > > > Reported-by: Kazuya Mio > > Tested-by: Kazuya Mio > > Signed-off-by: Jan Kara > > --- > > mm/filemap.c | 6 ++++-- > > 1 files changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/mm/filemap.c b/mm/filemap.c > > index c0018f2..c106d3b 100644 > > --- a/mm/filemap.c > > +++ b/mm/filemap.c > > @@ -2407,7 +2407,6 @@ static ssize_t generic_perform_write(struct file *file, > > iov_iter_count(i)); > > > > again: > > - > > /* > > * Bring in the user page that we will copy from _first_. > > * Otherwise there's a nasty deadlock on copying from the > > @@ -2463,7 +2462,10 @@ again: > > written += copied; > > > > balance_dirty_pages_ratelimited(mapping); > > - > > + if (fatal_signal_pending(current)) { > > + status = -EINTR; > > + break; > > + } > > } while (iov_iter_count(i)); > > > > return written ? written : status; > > -- > > 1.7.1 -- Jan Kara SUSE Labs, CR