From: Nish Aravamudan <nish.aravamudan@gmail.com>
To: Dan Dennedy <dan@dennedy.org>
Cc: Nishanth Aravamudan <nacc@us.ibm.com>,
kj <kernel-janitors@lists.osdl.org>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Linux1394-Devel <linux1394-devel@lists.sourceforge.net>,
lkml <linux-kernel@vger.kernel.org>,
Ben Collins <bcollins@debian.org>
Subject: Re: [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of
Date: Wed, 19 Jan 2005 06:27:18 +0000 [thread overview]
Message-ID: <29495f1d0501182227739e369f@mail.gmail.com> (raw)
In-Reply-To: <1105678375.7830.81.camel@kino.dennedy.org>
[-- Attachment #1: Type: text/plain, Size: 3417 bytes --]
On Thu, 13 Jan 2005 23:52:55 -0500, Dan Dennedy <dan@dennedy.org> wrote:
> On Mon, 2005-01-10 at 09:39 -0800, Nishanth Aravamudan wrote:
> > On Sun, Jan 09, 2005 at 10:01:21AM +0100, Stefan Richter wrote:
> > > Nishanth Aravamudan wrote:
> > > >Description: Use ssleep() instead of schedule_timeout() to guarantee
> > > >the task
> > > >delays as expected. The existing code should not really need to run in
> > > >TASK_INTERRUPTIBLE, as there is no check for signals (or even an
> > > >early return
> > > >value whatsoever). ssleep() takes care of these issues.
> > >
> > > >--- 2.6.10-v/drivers/ieee1394/sbp2.c 2004-12-24 13:34:00.000000000
> > > >-0800
> > > >+++ 2.6.10/drivers/ieee1394/sbp2.c 2005-01-05 14:23:05.000000000 -0800
> > > >@@ -902,8 +902,7 @@ alloc_fail:
> > > > * connected to the sbp2 device being removed. That host would
> > > > * have a certain amount of time to relogin before the sbp2 device
> > > > * allows someone else to login instead. One second makes sense. */
> > > >- set_current_state(TASK_INTERRUPTIBLE);
> > > >- schedule_timeout(HZ);
> > > >+ ssleep(1);
> > >
> > > Maybe the current code is _deliberately_ accepting interruption by
> > > signals but trying to complete sbp2_probe() anyway. However it seems
> > > more plausible to me to abort the device probe, for example like this:
> > > if (msleep_interruptible(1000)) {
> > > sbp2_remove_device(scsi_id);
> > > return -EINTR;
> > > }
> >
> > You might be right, but I'd like to get Ben's input on this, as I honeslty am
>
> Don't hold your breath waiting for Ben's input. However, I would like to
> get one of the two proposed committed and tested by more users as this
> is a sore spot. I am not in a position at this time to fully research
> and test to make a call.
>
> > unsure. To be fair, I am trying to audit all usage of schedule_timeout() and the
> > semantic interpretation (to me) of using TASK_INTERRUPTIBLE is that you wish to
> > sleep a certain amount of time, but also are prepared for an early return on
> > either signals or wait-queue events. msleep_interruptible() cleanly removes this
> > second issue, but still requires the caller to respond appropriately if there is
> > a return value. Hence, I like your change. I think it makes the most sense.
> > Since I didn't/don't know how the device works, I was not able to make the
> > change myself. Thanks for your input!
>
> Sounds like a sign-off. Any other input before I request Stefan to make
> the final decision?
Yes, this is an ACK for Stefan's change. Although the exact code he
produced is not quite accurate. It would be most accurate to use
msleep_interruptible(1000);
if (signals_pending(current) {
sbp2_remove_device(scsi_id);
return -EINTR;
}
This accounts for the corner case when the sleep times out and a
signal comes between the second-to-last and last jiffies. Thanks for
both of your input! If you'd prefere me sending a new patch I can do
so from work tomorrow.
> > > Anyway, signal handling does not appear to be critical there.
> >
> > Just out of curiousity, doesn't that run the risk, though, of
> > signal_pending(current) being true for quite a bit of time following the
> > timeout?
>
> How much of this is "curiosity" vs a real risk?
I think it should be ok, actually, the -EINTR should get passed back
to userspace, where it would be handled appropriately. I hope :)
-Nish
[-- Attachment #2: Type: text/plain, Size: 167 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors
WARNING: multiple messages have this Message-ID (diff)
From: Nish Aravamudan <nish.aravamudan@gmail.com>
To: Dan Dennedy <dan@dennedy.org>
Cc: Nishanth Aravamudan <nacc@us.ibm.com>,
kj <kernel-janitors@lists.osdl.org>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Linux1394-Devel <linux1394-devel@lists.sourceforge.net>,
lkml <linux-kernel@vger.kernel.org>,
Ben Collins <bcollins@debian.org>
Subject: Re: [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout()
Date: Tue, 18 Jan 2005 22:27:18 -0800 [thread overview]
Message-ID: <29495f1d0501182227739e369f@mail.gmail.com> (raw)
In-Reply-To: <1105678375.7830.81.camel@kino.dennedy.org>
On Thu, 13 Jan 2005 23:52:55 -0500, Dan Dennedy <dan@dennedy.org> wrote:
> On Mon, 2005-01-10 at 09:39 -0800, Nishanth Aravamudan wrote:
> > On Sun, Jan 09, 2005 at 10:01:21AM +0100, Stefan Richter wrote:
> > > Nishanth Aravamudan wrote:
> > > >Description: Use ssleep() instead of schedule_timeout() to guarantee
> > > >the task
> > > >delays as expected. The existing code should not really need to run in
> > > >TASK_INTERRUPTIBLE, as there is no check for signals (or even an
> > > >early return
> > > >value whatsoever). ssleep() takes care of these issues.
> > >
> > > >--- 2.6.10-v/drivers/ieee1394/sbp2.c 2004-12-24 13:34:00.000000000
> > > >-0800
> > > >+++ 2.6.10/drivers/ieee1394/sbp2.c 2005-01-05 14:23:05.000000000 -0800
> > > >@@ -902,8 +902,7 @@ alloc_fail:
> > > > * connected to the sbp2 device being removed. That host would
> > > > * have a certain amount of time to relogin before the sbp2 device
> > > > * allows someone else to login instead. One second makes sense. */
> > > >- set_current_state(TASK_INTERRUPTIBLE);
> > > >- schedule_timeout(HZ);
> > > >+ ssleep(1);
> > >
> > > Maybe the current code is _deliberately_ accepting interruption by
> > > signals but trying to complete sbp2_probe() anyway. However it seems
> > > more plausible to me to abort the device probe, for example like this:
> > > if (msleep_interruptible(1000)) {
> > > sbp2_remove_device(scsi_id);
> > > return -EINTR;
> > > }
> >
> > You might be right, but I'd like to get Ben's input on this, as I honeslty am
>
> Don't hold your breath waiting for Ben's input. However, I would like to
> get one of the two proposed committed and tested by more users as this
> is a sore spot. I am not in a position at this time to fully research
> and test to make a call.
>
> > unsure. To be fair, I am trying to audit all usage of schedule_timeout() and the
> > semantic interpretation (to me) of using TASK_INTERRUPTIBLE is that you wish to
> > sleep a certain amount of time, but also are prepared for an early return on
> > either signals or wait-queue events. msleep_interruptible() cleanly removes this
> > second issue, but still requires the caller to respond appropriately if there is
> > a return value. Hence, I like your change. I think it makes the most sense.
> > Since I didn't/don't know how the device works, I was not able to make the
> > change myself. Thanks for your input!
>
> Sounds like a sign-off. Any other input before I request Stefan to make
> the final decision?
Yes, this is an ACK for Stefan's change. Although the exact code he
produced is not quite accurate. It would be most accurate to use
msleep_interruptible(1000);
if (signals_pending(current) {
sbp2_remove_device(scsi_id);
return -EINTR;
}
This accounts for the corner case when the sleep times out and a
signal comes between the second-to-last and last jiffies. Thanks for
both of your input! If you'd prefere me sending a new patch I can do
so from work tomorrow.
> > > Anyway, signal handling does not appear to be critical there.
> >
> > Just out of curiousity, doesn't that run the risk, though, of
> > signal_pending(current) being true for quite a bit of time following the
> > timeout?
>
> How much of this is "curiosity" vs a real risk?
I think it should be ok, actually, the -EINTR should get passed back
to userspace, where it would be handled appropriately. I hope :)
-Nish
next prev parent reply other threads:[~2005-01-19 6:27 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-25 0:48 [KJ] [announce] 2.6.10-kj Domen Puncer
2004-12-25 0:48 ` Domen Puncer
2005-01-07 19:33 ` [KJ] [UPDATE PATCH] atm/ambassador: use msleep() instead of Nishanth Aravamudan
2005-01-07 19:33 ` [UPDATE PATCH] atm/ambassador: use msleep() instead of schedule_timeout() Nishanth Aravamudan
2005-01-07 19:40 ` [KJ] [UPDATE PATCH] ide/ide-cd: use ssleep() instead of Nishanth Aravamudan
2005-01-07 19:40 ` [UPDATE PATCH] ide/ide-cd: use ssleep() instead of schedule_timeout() Nishanth Aravamudan
2005-01-07 19:47 ` [KJ] Re: [UPDATE PATCH] ide/ide-cd: use ssleep() instead of Jens Axboe
2005-01-07 19:47 ` [UPDATE PATCH] ide/ide-cd: use ssleep() instead of schedule_timeout() Jens Axboe
2005-01-15 0:58 ` [KJ] Re: [UPDATE PATCH] ide/ide-cd: use ssleep() instead of Bartlomiej Zolnierkiewicz
2005-01-15 0:58 ` [UPDATE PATCH] ide/ide-cd: use ssleep() instead of schedule_timeout() Bartlomiej Zolnierkiewicz
2005-01-07 21:34 ` [KJ] [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of Nishanth Aravamudan
2005-01-07 21:34 ` [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() Nishanth Aravamudan
2005-01-09 9:01 ` [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of Stefan Richter
2005-01-09 9:01 ` [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() Stefan Richter
2005-01-10 17:39 ` [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of Nishanth Aravamudan
2005-01-10 17:39 ` [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() Nishanth Aravamudan
2005-01-14 4:52 ` [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of Dan Dennedy
2005-01-14 4:52 ` [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() Dan Dennedy
2005-01-14 11:16 ` [KJ] Re: [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead Stefan Richter
2005-01-14 11:16 ` [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() Stefan Richter
2005-01-19 6:27 ` Nish Aravamudan [this message]
2005-01-19 6:27 ` [KJ] " Nish Aravamudan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=29495f1d0501182227739e369f@mail.gmail.com \
--to=nish.aravamudan@gmail.com \
--cc=bcollins@debian.org \
--cc=dan@dennedy.org \
--cc=kernel-janitors@lists.osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=nacc@us.ibm.com \
--cc=stefanr@s5r6.in-berlin.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.