Messages in this thread | | | Date | Sat, 23 Aug 2014 17:34:37 +0200 | From | Richard Weinberger <> | Subject | Re: [PATCH] UML: UBD: Fix for processes stuck in D state forever in UserModeLinux |
| |
Hi!
Am 23.08.2014 15:47, schrieb Thorsten Knabe: > From: Thorsten Knabe <linux@thorsten-knabe.de> > > UML: UBD: Fix for processes stuck in D state forever in UserModeLinux. > > Starting with Linux 3.12 processes get stuck in D state forever in > UserModeLinux under sync heavy workloads. This bug was introduced by > commit 805f11a0d5 (um: ubd: Add REQ_FLUSH suppport). > Fix bug by adding a check if FLUSH request was successfully submitted to > the I/O thread and keeping the FLUSH request on the request queue on > submission failures. > > Fixes: 805f11a0d5 (um: ubd: Add REQ_FLUSH suppport) > Signed-off-by: Thorsten Knabe <linux@thorsten-knabe.de>
Thanks a lot for hunting this issue down.
> --- > Patch applies to 3.16.1. > > diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c > index 3716e69..b7d2840 100644 > --- a/arch/um/drivers/ubd_kern.c > +++ b/arch/um/drivers/ubd_kern.c > @@ -1277,7 +1277,7 @@ static void do_ubd_request(struct request_queue *q) > > while(1){ > struct ubd *dev = q->queuedata; > - if(dev->end_sg == 0){ > + if(dev->request == NULL){
Why do we need this specific change?
Thanks, //richard
| |