On Wed 16-11-11 19:28:19, Wu Fengguang wrote: > On Wed, Nov 16, 2011 at 07:12:14PM +0800, Jan Kara wrote: > > There is no reason why task in balance_dirty_pages() shouldn't be killable > > and it helps in recovering from some error conditions (like when filesystem > > goes in error state and cannot accept writeback anymore but we still want to > > kill processes using it to be able to unmount it). > > Here I'd like to add a paragraph from my original patch: > > The follow up patches will further abort the generic_perform_write() and > other filesystem write loops, to avoid large write + SIGKILL combination > exceeding the dirty limit and possibly strange OOM. Sure, feel free to add the paragraph to the changelog. Honza > > Reported-by: Kazuya Mio <k-mio@xxxxxxxxxxxxx> > > Tested-by: Kazuya Mio <k-mio@xxxxxxxxxxxxx> > > Signed-off-by: Jan Kara <jack@xxxxxxx> > > --- > > mm/page-writeback.c | 5 ++++- > > 1 files changed, 4 insertions(+), 1 deletions(-) > > > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > > index 0360d1b..39f5805 100644 > > --- a/mm/page-writeback.c > > +++ b/mm/page-writeback.c > > @@ -1133,7 +1133,7 @@ pause: > > pages_dirtied, > > pause, > > start_time); > > - __set_current_state(TASK_UNINTERRUPTIBLE); > > + __set_current_state(TASK_KILLABLE); > > io_schedule_timeout(pause); > > > > dirty_thresh = hard_dirty_limit(dirty_thresh); > > @@ -1145,6 +1145,9 @@ pause: > > */ > > if (nr_dirty < dirty_thresh) > > break; > > + > > + if (fatal_signal_pending(current)) > > + break; > > } > > > > if (!dirty_exceeded && bdi->dirty_exceeded) > > -- > > 1.7.1 -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html