* [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
@ 2015-09-28 0:34 Ben Hutchings
2015-09-28 10:34 ` Lee Jones
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Ben Hutchings @ 2015-09-28 0:34 UTC (permalink / raw)
To: Maxim Levitsky, Roger Tseng; +Cc: LKML, Lee Jones
[-- Attachment #1: Type: text/plain, Size: 822 bytes --]
rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix). A load average of ~1 on a system that
should be idle is somewhat alarming.
Change the sleep to be interruptible, but still ignore signals.
A better fix might be to replace this loop with a delayed work item.
References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
if (host->eject)
break;
- msleep(1000);
+ if (msleep_interruptible(1000))
+ flush_signals(current);
}
complete(&host->detect_ms_exit);
--
Ben Hutchings
All extremists should be taken out and shot.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-09-28 0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
@ 2015-09-28 10:34 ` Lee Jones
2015-09-28 11:10 ` Ben Hutchings
2015-10-08 3:37 ` Roger Tseng
2015-10-08 7:19 ` Lee Jones
2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2015-09-28 10:34 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML
The subsystem is missing from the subject line.
On Mon, 28 Sep 2015, Ben Hutchings wrote:
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix). A load average of ~1 on a system that
> should be idle is somewhat alarming.
>
> Change the sleep to be interruptible, but still ignore signals.
>
> A better fix might be to replace this loop with a delayed work item.
>
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
How was this patch made? Where's the diff etc?
Why was this patch sent to me?
> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
> if (host->eject)
> break;
>
> - msleep(1000);
> + if (msleep_interruptible(1000))
> + flush_signals(current);
> }
>
> complete(&host->detect_ms_exit);
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-09-28 10:34 ` Lee Jones
@ 2015-09-28 11:10 ` Ben Hutchings
2015-09-28 11:23 ` Lee Jones
0 siblings, 1 reply; 12+ messages in thread
From: Ben Hutchings @ 2015-09-28 11:10 UTC (permalink / raw)
To: Lee Jones; +Cc: Maxim Levitsky, Roger Tseng, LKML
[-- Attachment #1: Type: text/plain, Size: 1367 bytes --]
On Mon, 2015-09-28 at 11:34 +0100, Lee Jones wrote:
> The subsystem is missing from the subject line.
>
> On Mon, 28 Sep 2015, Ben Hutchings wrote:
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix). A load average of ~1 on a system
> > that
> > should be idle is somewhat alarming.
> >
> > Change the sleep to be interruptible, but still ignore signals.
> >
> > A better fix might be to replace this loop with a delayed work
> > item.
> >
> > References: https://bugs.debian.org/765717
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
>
> How was this patch made? Where's the diff etc?
With quilt.
> Why was this patch sent to me?
I think I must have added you previously as MFD maintainer, but as this
doesn't touch rtsx_pcr or rtsx_usb it's not really in your area. Sorry
to bother you.
Ben.
> > ---
> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> > if (host->eject)
> > break;
> >
> > - msleep(1000);
> > + if (msleep_interruptible(1000))
> > + flush_signals(current);
> > }
> >
> > complete(&host->detect_ms_exit);
>
--
Ben Hutchings
All extremists should be taken out and shot.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-09-28 11:10 ` Ben Hutchings
@ 2015-09-28 11:23 ` Lee Jones
0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2015-09-28 11:23 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML
On Mon, 28 Sep 2015, Ben Hutchings wrote:
> On Mon, 2015-09-28 at 11:34 +0100, Lee Jones wrote:
> > The subsystem is missing from the subject line.
> >
> > On Mon, 28 Sep 2015, Ben Hutchings wrote:
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix). A load average of ~1 on a system
> > > that
> > > should be idle is somewhat alarming.
> > >
> > > Change the sleep to be interruptible, but still ignore signals.
> > >
> > > A better fix might be to replace this loop with a delayed work
> > > item.
> > >
> > > References: https://bugs.debian.org/765717
> > > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> >
> > How was this patch made? Where's the diff etc?
>
> With quilt.
Old Skool! ;)
> > Why was this patch sent to me?
>
> I think I must have added you previously as MFD maintainer, but as this
> doesn't touch rtsx_pcr or rtsx_usb it's not really in your area. Sorry
> to bother you.
No worries.
> > > ---
> > > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > > @@ -706,7 +706,8 @@ poll_again:
> > > if (host->eject)
> > > break;
> > >
> > > - msleep(1000);
> > > + if (msleep_interruptible(1000))
> > > + flush_signals(current);
> > > }
> > >
> > > complete(&host->detect_ms_exit);
> >
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-09-28 0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
2015-09-28 10:34 ` Lee Jones
@ 2015-10-08 3:37 ` Roger Tseng
2015-10-08 7:19 ` Lee Jones
2 siblings, 0 replies; 12+ messages in thread
From: Roger Tseng @ 2015-10-08 3:37 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Maxim Levitsky, LKML, Lee Jones
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1105 bytes --]
On Mon, 2015-09-28 at 01:34 +0100, Ben Hutchings wrote:
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix). A load average of ~1 on a system that
> should be idle is somewhat alarming.
>
> Change the sleep to be interruptible, but still ignore signals.
>
> A better fix might be to replace this loop with a delayed work item.
The change should be OK providing it does the same delay. You can add my
ack.
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
> if (host->eject)
> break;
>
> - msleep(1000);
> + if (msleep_interruptible(1000))
> + flush_signals(current);
> }
>
> complete(&host->detect_ms_exit);
--
Best regards,
Roger Tseng
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-09-28 0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
2015-09-28 10:34 ` Lee Jones
2015-10-08 3:37 ` Roger Tseng
@ 2015-10-08 7:19 ` Lee Jones
2015-10-08 19:35 ` Ben Hutchings
2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2015-10-08 7:19 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML
On Mon, 28 Sep 2015, Ben Hutchings wrote:
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix). A load average of ~1 on a system that
> should be idle is somewhat alarming.
>
> Change the sleep to be interruptible, but still ignore signals.
>
> A better fix might be to replace this loop with a delayed work item.
>
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Any chance you can use Git instead of Quilt? Failing that, is there a
way to tell Quilt to supply a diffstat in the patch?
> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
> if (host->eject)
> break;
>
> - msleep(1000);
> + if (msleep_interruptible(1000))
> + flush_signals(current);
> }
>
> complete(&host->detect_ms_exit);
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-10-08 7:19 ` Lee Jones
@ 2015-10-08 19:35 ` Ben Hutchings
2015-10-09 7:18 ` Lee Jones
0 siblings, 1 reply; 12+ messages in thread
From: Ben Hutchings @ 2015-10-08 19:35 UTC (permalink / raw)
To: Lee Jones; +Cc: Maxim Levitsky, Roger Tseng, LKML
[-- Attachment #1.1: Type: text/plain, Size: 1432 bytes --]
On Thu, 2015-10-08 at 08:19 +0100, Lee Jones wrote:
> On Mon, 28 Sep 2015, Ben Hutchings wrote:
>
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix). A load average of ~1 on a system that
> > should be idle is somewhat alarming.
> >
> > Change the sleep to be interruptible, but still ignore signals.
> >
> > A better fix might be to replace this loop with a delayed work item.
> >
> > References: https://bugs.debian.org/765717
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
>
> Any chance you can use Git instead of Quilt? Failing that, is there a
> way to tell Quilt to supply a diffstat in the patch?
Why does it matter? 'git am' is happy to apply it. But in case it
really does make a difference, I've attached the git-format-patch
version.
Ben.
> > ---
> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> > > > > > > > if (host->eject)
> > > > > > > > > > break;
> >
> > -> > > > > > msleep(1000);
> > +> > > > > > if (msleep_interruptible(1000))
> > +> > > > > > > > flush_signals(current);
> > > > > > }
> >
> > > > > > complete(&host->detect_ms_exit);
>
>
>
--
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
[-- Attachment #1.2: 0001-rtsx_usb_ms-Use-msleep_interruptible-in-polling-loop.patch --]
[-- Type: text/x-patch, Size: 1170 bytes --]
From 34dca6b208a1108a9499412f584468b31ee025e0 Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sun, 26 Oct 2014 03:39:42 +0000
Subject: [PATCH] rtsx_usb_ms: Use msleep_interruptible() in polling loop
rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix). A load average of ~1 on a system that
should be idle is somewhat alarming.
Change the sleep to be interruptible, but still ignore signals.
A better fix might be to replace this loop with a delayed work item.
References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/memstick/host/rtsx_usb_ms.c b/drivers/memstick/host/rtsx_usb_ms.c
index 1105db2..645dede 100644
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
if (host->eject)
break;
- msleep(1000);
+ if (msleep_interruptible(1000))
+ flush_signals(current);
}
complete(&host->detect_ms_exit);
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2015-10-08 19:35 ` Ben Hutchings
@ 2015-10-09 7:18 ` Lee Jones
0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2015-10-09 7:18 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML
On Thu, 08 Oct 2015, Ben Hutchings wrote:
> On Thu, 2015-10-08 at 08:19 +0100, Lee Jones wrote:
> > On Mon, 28 Sep 2015, Ben Hutchings wrote:
> >
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix). A load average of ~1 on a system that
> > > should be idle is somewhat alarming.
> > >
> > > Change the sleep to be interruptible, but still ignore signals.
> > >
> > > A better fix might be to replace this loop with a delayed work item.
> > >
> > > References: https://bugs.debian.org/765717
> > > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> >
> > Any chance you can use Git instead of Quilt? Failing that, is there a
> > way to tell Quilt to supply a diffstat in the patch?
>
> Why does it matter?
To this patch? It probably doesn't.
In general? It absolutely helps with patch review -- it's the second
thing I look at. Diffstats are especially helpful if/when patches
cross subsystem boundaries or when multiple files a touched. Until I
scroll down I have no idea if this is just a memstick patch (which I
can see at the bottom of my screen) or in fact amends 5 subsystems
and requires special handling.
> 'git am' is happy to apply it. But in case it
> really does make a difference, I've attached the git-format-patch
> version.
I meant more 'from now on', rather than that patch being a special
case. Ultimately it's your decision. I just think it makes things
that little bit easier for the reviewer, as I'm sure you can
appreciate.
> > > ---
> > > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > > @@ -706,7 +706,8 @@ poll_again:
> > > > > > > > > if (host->eject)
> > > > > > > > > > > break;
> > >
> > > -> > > > > > msleep(1000);
> > > +> > > > > > if (msleep_interruptible(1000))
> > > +> > > > > > > > flush_signals(current);
> > > > > > > }
> > >
> > > > > > > complete(&host->detect_ms_exit);
> >
> >
> >
> From 34dca6b208a1108a9499412f584468b31ee025e0 Mon Sep 17 00:00:00 2001
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Sun, 26 Oct 2014 03:39:42 +0000
> Subject: [PATCH] rtsx_usb_ms: Use msleep_interruptible() in polling loop
>
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix). A load average of ~1 on a system that
> should be idle is somewhat alarming.
>
> Change the sleep to be interruptible, but still ignore signals.
>
> A better fix might be to replace this loop with a delayed work item.
>
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/memstick/host/rtsx_usb_ms.c b/drivers/memstick/host/rtsx_usb_ms.c
> index 1105db2..645dede 100644
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
> if (host->eject)
> break;
>
> - msleep(1000);
> + if (msleep_interruptible(1000))
> + flush_signals(current);
> }
>
> complete(&host->detect_ms_exit);
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
@ 2016-05-02 20:17 Oleksandr Natalenko
2016-05-02 20:56 ` Andrew Morton
0 siblings, 1 reply; 12+ messages in thread
From: Oleksandr Natalenko @ 2016-05-02 20:17 UTC (permalink / raw)
To: Ben Hutchings
Cc: Andrew Morton, Lee Jones, Wolfram Sang, Roger Tseng, linux-kernel
This patch has already been posted to LKML by Ben Hutchings ~6 months
ago, but AFAIK no further action were performed. However, this patch
really fixes weird loadavg with RTS5129 card reader, so I would wonder
if this could be merged. AFAIK, it has been applied to some distros'
kernels, e.g., Ubuntu.
Original Ben's message goes below.
rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix). A load average of ~1 on a system that
should be idle is somewhat alarming.
Change the sleep to be interruptible, but still ignore signals.
A better fix might be to replace this loop with a delayed work item.
References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
---
drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/memstick/host/rtsx_usb_ms.c
b/drivers/memstick/host/rtsx_usb_ms.c
index 1105db2..645dede 100644
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
if (host->eject)
break;
- msleep(1000);
+ if (msleep_interruptible(1000))
+ flush_signals(current);
}
complete(&host->detect_ms_exit);
--
2.8.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2016-05-02 20:17 Oleksandr Natalenko
@ 2016-05-02 20:56 ` Andrew Morton
2016-05-03 13:40 ` Oleg Nesterov
0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2016-05-02 20:56 UTC (permalink / raw)
To: Oleksandr Natalenko
Cc: Ben Hutchings, Lee Jones, Wolfram Sang, Roger Tseng, linux-kernel,
Oleg Nesterov
On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko <oleksandr@natalenko.name> wrote:
> This patch has already been posted to LKML by Ben Hutchings ~6 months
> ago, but AFAIK no further action were performed. However, this patch
> really fixes weird loadavg with RTS5129 card reader, so I would wonder
> if this could be merged. AFAIK, it has been applied to some distros'
> kernels, e.g., Ubuntu.
>
> Original Ben's message goes below.
>
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix). A load average of ~1 on a system that
> should be idle is somewhat alarming.
>
> Change the sleep to be interruptible, but still ignore signals.
>
> A better fix might be to replace this loop with a delayed work item.
>
hm.
> index 1105db2..645dede 100644
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
> if (host->eject)
> break;
>
> - msleep(1000);
> + if (msleep_interruptible(1000))
> + flush_signals(current);
> }
>
> complete(&host->detect_ms_exit);
flush_signals() is a bit scary. If this was a userspace task and it
had (say) SIGINT pending then it would be very rude for a device driver
to rub that out.
But this isn't a userspace task - it's a kthread. So I don't *think*
it can get any signals anyway?
And looking at Oleg's 9e7c8f8c62c1e1cda203b it appears that
flush_signals() is for flushing signals of a userspace task, not a
kthread? Despite the comment "Flush all pending signals for this
kthread".
Confused. It's been a while since I looked at this stuff and people
have mucked with it. Oleg, can you please sort me out?
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2016-05-02 20:56 ` Andrew Morton
@ 2016-05-03 13:40 ` Oleg Nesterov
2016-05-03 15:22 ` Ben Hutchings
0 siblings, 1 reply; 12+ messages in thread
From: Oleg Nesterov @ 2016-05-03 13:40 UTC (permalink / raw)
To: Andrew Morton
Cc: Oleksandr Natalenko, Ben Hutchings, Lee Jones, Wolfram Sang,
Roger Tseng, linux-kernel
On 05/02, Andrew Morton wrote:
>
> On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko <oleksandr@natalenko.name> wrote:
>
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix).
We have TASK_NOLOAD/TASK_IDLE, you can just use schedule_timeout_idle(HZ).
but msleep_interruptible(1000) is fine too.
> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> > if (host->eject)
> > break;
> >
> > - msleep(1000);
> > + if (msleep_interruptible(1000))
> > + flush_signals(current);
> > }
> >
> > complete(&host->detect_ms_exit);
>
> flush_signals() is a bit scary.
...
> But this isn't a userspace task - it's a kthread. So I don't *think*
> it can get any signals anyway?
Agreed, it is not needed and only adds some confusion, so I think
rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch should be
updated.
A kernel thread ignores all signals unless it does allow_signal(), so
you can safely remove flush_signals().
Oleg.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
2016-05-03 13:40 ` Oleg Nesterov
@ 2016-05-03 15:22 ` Ben Hutchings
0 siblings, 0 replies; 12+ messages in thread
From: Ben Hutchings @ 2016-05-03 15:22 UTC (permalink / raw)
To: Oleg Nesterov, Andrew Morton
Cc: Oleksandr Natalenko, Lee Jones, Wolfram Sang, Roger Tseng,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 726 bytes --]
On Tue, 2016-05-03 at 15:40 +0200, Oleg Nesterov wrote:
> On 05/02, Andrew Morton wrote:
> >
> >
> > On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko wrote:
> >
> > >
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix).
> We have TASK_NOLOAD/TASK_IDLE, you can just use schedule_timeout_idle(HZ).
[...]
I wasn't aware of that function... ah, that would be because it's new
in 4.6. It seems much clearer to use that than to use
msleep_interruptible() and ignore the result.
Ben.
--
Ben Hutchings
In a hierarchy, every employee tends to rise to his level of incompetence.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2016-05-03 15:23 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-28 0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
2015-09-28 10:34 ` Lee Jones
2015-09-28 11:10 ` Ben Hutchings
2015-09-28 11:23 ` Lee Jones
2015-10-08 3:37 ` Roger Tseng
2015-10-08 7:19 ` Lee Jones
2015-10-08 19:35 ` Ben Hutchings
2015-10-09 7:18 ` Lee Jones
-- strict thread matches above, loose matches on Subject: below --
2016-05-02 20:17 Oleksandr Natalenko
2016-05-02 20:56 ` Andrew Morton
2016-05-03 13:40 ` Oleg Nesterov
2016-05-03 15:22 ` Ben Hutchings
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).