Prev: Slow Disk I/O
Next: [PATCH 2/2] remove the bogus checks in sys_personality()->__set_personality() path
From: Sage Weil on 28 May 2010 15:20 Hi- Do I need an ACK on this, or should I just send this to Linus with the Ceph fix? It's a pretty trivial fixup. Thanks- sage On Mon, 24 May 2010, Sage Weil wrote: > Hi guys, > > I need this patch (or something similar) to fix an issue with the way Ceph > is waiting for MDS requests to complete. I'm assuming there's no specific > reason the _killable_timeout variant was excluded? Can this go into .35? > > Thanks- > sage > > --- > > From 1ae82e511ba1664691380ea5c630a94eec370166 Mon Sep 17 00:00:00 2001 > From: Sage Weil <sage(a)newdream.net> > Date: Mon, 24 May 2010 11:12:42 -0700 > Subject: [PATCH] sched: add wait_for_completion_killable_timeout > > Add missing _killable_timeout variant for wait_for_completion that will > return when a timeout expires or the task is killed. > > CC: Ingo Molnar <mingo(a)elte.hu> > CC: Peter Zijlstra <peterz(a)infradead.org> > CC: Andreas Herrmann <andreas.herrmann3(a)amd.com> > CC: Thomas Gleixner <tglx(a)linutronix.de> > CC: Mike Galbraith <efault(a)gmx.de> > Signed-off-by: Sage Weil <sage(a)newdream.net> > --- > include/linux/completion.h | 2 ++ > kernel/sched.c | 17 +++++++++++++++++ > 2 files changed, 19 insertions(+), 0 deletions(-) > > diff --git a/include/linux/completion.h b/include/linux/completion.h > index 4a6b604..51e3145 100644 > --- a/include/linux/completion.h > +++ b/include/linux/completion.h > @@ -83,6 +83,8 @@ extern unsigned long wait_for_completion_timeout(struct completion *x, > unsigned long timeout); > extern unsigned long wait_for_completion_interruptible_timeout( > struct completion *x, unsigned long timeout); > +extern unsigned long wait_for_completion_killable_timeout( > + struct completion *x, unsigned long timeout); > extern bool try_wait_for_completion(struct completion *x); > extern bool completion_done(struct completion *x); > > diff --git a/kernel/sched.c b/kernel/sched.c > index 3c2a54f..4d051c7 100644 > --- a/kernel/sched.c > +++ b/kernel/sched.c > @@ -4161,6 +4161,23 @@ int __sched wait_for_completion_killable(struct completion *x) > EXPORT_SYMBOL(wait_for_completion_killable); > > /** > + * wait_for_completion_killable_timeout: - waits for completion of a task (w/(to,killable)) > + * @x: holds the state of this particular completion > + * @timeout: timeout value in jiffies > + * > + * This waits for either a completion of a specific task to be > + * signaled or for a specified timeout to expire. It can be > + * interrupted by a kill signal. The timeout is in jiffies. > + */ > +unsigned long __sched > +wait_for_completion_killable_timeout(struct completion *x, > + unsigned long timeout) > +{ > + return wait_for_common(x, timeout, TASK_KILLABLE); > +} > +EXPORT_SYMBOL(wait_for_completion_killable_timeout); > + > +/** > * try_wait_for_completion - try to decrement a completion without blocking > * @x: completion structure > * > -- > 1.7.0 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Peter Zijlstra on 29 May 2010 06:50 On Fri, 2010-05-28 at 12:16 -0700, Sage Weil wrote: > Hi- > > Do I need an ACK on this, or should I just send this to Linus with the > Ceph fix? It's a pretty trivial fixup. > > --- a/kernel/sched.c > > +++ b/kernel/sched.c > > @@ -4161,6 +4161,23 @@ int __sched wait_for_completion_killable(struct completion *x) > > EXPORT_SYMBOL(wait_for_completion_killable); > > > > /** > > + * wait_for_completion_killable_timeout: - waits for completion of a task (w/(to,killable)) > > + * @x: holds the state of this particular completion > > + * @timeout: timeout value in jiffies > > + * > > + * This waits for either a completion of a specific task to be > > + * signaled or for a specified timeout to expire. It can be > > + * interrupted by a kill signal. The timeout is in jiffies. > > + */ > > +unsigned long __sched > > +wait_for_completion_killable_timeout(struct completion *x, > > + unsigned long timeout) > > +{ > > + return wait_for_common(x, timeout, TASK_KILLABLE); > > +} > > +EXPORT_SYMBOL(wait_for_completion_killable_timeout); > > + > > +/** > > * try_wait_for_completion - try to decrement a completion without blocking > > * @x: completion structure > > * I guess its ok, although I have an intrinsic suspicion of all things timeout, but since we have plenty of those interfaces around I can't object too much ;-) Acked-by: Peter Zijlstra <a.p.zijlstra(a)chello.nl> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Sage Weil on 29 May 2010 12:20
On Sat, 29 May 2010, Peter Zijlstra wrote: > On Fri, 2010-05-28 at 12:16 -0700, Sage Weil wrote: > > Hi- > > > > Do I need an ACK on this, or should I just send this to Linus with the > > Ceph fix? It's a pretty trivial fixup. > > > > --- a/kernel/sched.c > > > +++ b/kernel/sched.c > > > @@ -4161,6 +4161,23 @@ int __sched wait_for_completion_killable(struct completion *x) > > > EXPORT_SYMBOL(wait_for_completion_killable); > > > > > > /** > > > + * wait_for_completion_killable_timeout: - waits for completion of a task (w/(to,killable)) > > > + * @x: holds the state of this particular completion > > > + * @timeout: timeout value in jiffies > > > + * > > > + * This waits for either a completion of a specific task to be > > > + * signaled or for a specified timeout to expire. It can be > > > + * interrupted by a kill signal. The timeout is in jiffies. > > > + */ > > > +unsigned long __sched > > > +wait_for_completion_killable_timeout(struct completion *x, > > > + unsigned long timeout) > > > +{ > > > + return wait_for_common(x, timeout, TASK_KILLABLE); > > > +} > > > +EXPORT_SYMBOL(wait_for_completion_killable_timeout); > > > + > > > +/** > > > * try_wait_for_completion - try to decrement a completion without blocking > > > * @x: completion structure > > > * > > I guess its ok, although I have an intrinsic suspicion of all things > timeout, but since we have plenty of those interfaces around I can't > object too much ;-) > > Acked-by: Peter Zijlstra <a.p.zijlstra(a)chello.nl> Agreed (about timeouts). In this case the timeout is only used during mount so that we don't hang indefinitely if the server is unreachable. Thanks :) sage -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |