From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kara Subject: [PATCH 2/2] fs: Make write(2) interruptible by a signal Date: Wed, 16 Nov 2011 12:12:15 +0100 Message-ID: <1321441935-6802-3-git-send-email-jack@suse.cz> References: <1321441935-6802-1-git-send-email-jack@suse.cz> Cc: Andrew Morton , Christoph Hellwig , Al Viro , linux-fsdevel@vger.kernel.org, Jan Kara To: Wu Fengguang Return-path: Received: from cantor2.suse.de ([195.135.220.15]:59153 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755394Ab1KPLMq (ORCPT ); Wed, 16 Nov 2011 06:12:46 -0500 In-Reply-To: <1321441935-6802-1-git-send-email-jack@suse.cz> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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