From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kara Subject: Re: [RFC] fsfreeze: moving from uniterruptible to killable Date: Tue, 26 Mar 2013 22:15:20 +0100 Message-ID: <20130326211520.GF2082@quack.suse.cz> References: <514EC323.7050002@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Linux FS Devel , Linux Kernel , Jan Kara To: Marco Stornelli Return-path: Content-Disposition: inline In-Reply-To: <514EC323.7050002@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Sun 24-03-13 10:10:59, Marco Stornelli wrote: > When a fs is frozen, a process can hang because we wait in > uniterruptible state. We give the user the possibility to kill the process. Yes, but it needs slightly more work as you probably know... (bailing out properly when the signal arrives). Honza > > Not-signed-off-by: Marco Stornelli > --- > > --- fs/super.c.orig 2013-03-24 09:56:33.000000000 +0100 > +++ fs/super.c 2013-03-24 09:58:41.000000000 +0100 > @@ -1198,7 +1198,7 @@ retry: > if (unlikely(sb->s_writers.frozen >= level)) { > if (!wait) > return 0; > - wait_event(sb->s_writers.wait_unfrozen, > + wait_event_killable(sb->s_writers.wait_unfrozen, > sb->s_writers.frozen < level); > } > > @@ -1248,7 +1248,7 @@ static void sb_wait_write(struct super_b > * of frozen and checking of the counter > */ > prepare_to_wait(&sb->s_writers.wait, &wait, > - TASK_UNINTERRUPTIBLE); > + TASK_KILLABLE); > > writers = percpu_counter_sum(&sb->s_writers.counter[level-1]); > if (writers) -- Jan Kara SUSE Labs, CR