FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Device-mapper Development

 
 
LinkBack Thread Tools
 
Old 05-04-2010, 03:37 AM
Mike Anderson
 
Default blk: Do not abort requests if queue is stopped

If the queue is stopped it could be an indication that other recovery is
happening in this case skip the blk_abort_request.

Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
Cc: Jens Axobe <jens.axboe@oracle.com>
---
block/blk-timeout.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/block/blk-timeout.c b/block/blk-timeout.c
index 1ba7e0a..89fbe0a 100644
--- a/block/blk-timeout.c
+++ b/block/blk-timeout.c
@@ -224,7 +224,8 @@ void blk_abort_queue(struct request_queue *q)
list_splice_init(&q->timeout_list, &list);

list_for_each_entry_safe(rq, tmp, &list, timeout_list)
- blk_abort_request(rq);
+ if (!blk_queue_stopped(q))
+ blk_abort_request(rq);

/*
* Occasionally, blk_abort_request() will return without
--
1.6.6.1

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 05-04-2010, 10:40 AM
Hannes Reinecke
 
Default blk: Do not abort requests if queue is stopped

Mike Anderson wrote:
> If the queue is stopped it could be an indication that other recovery is
> happening in this case skip the blk_abort_request.
>
> Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
> Cc: Jens Axobe <jens.axboe@oracle.com>
Acked-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 05-04-2010, 10:45 AM
Jens Axboe
 
Default blk: Do not abort requests if queue is stopped

On Mon, May 03 2010, Mike Anderson wrote:
> If the queue is stopped it could be an indication that other recovery is
> happening in this case skip the blk_abort_request.
>
> Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
> Cc: Jens Axobe <jens.axboe@oracle.com>
> ---
> block/blk-timeout.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/block/blk-timeout.c b/block/blk-timeout.c
> index 1ba7e0a..89fbe0a 100644
> --- a/block/blk-timeout.c
> +++ b/block/blk-timeout.c
> @@ -224,7 +224,8 @@ void blk_abort_queue(struct request_queue *q)
> list_splice_init(&q->timeout_list, &list);
>
> list_for_each_entry_safe(rq, tmp, &list, timeout_list)
> - blk_abort_request(rq);
> + if (!blk_queue_stopped(q))
> + blk_abort_request(rq);
>
> /*
> * Occasionally, blk_abort_request() will return without

That seems like a bit of a mixup, what ties a stopped queue to recovery?
To take one example, the cciss driver stops the queue when it can't
queue more at the hw level and starts it on completion to queue more. If
recovery triggers when the hw queue has been filled, then timeouts will
fail?

It would be better to mark the queue as already doing abort. That state
could be in the queue, or it could be at the driver level.

--
Jens Axboe

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 05-05-2010, 04:52 AM
Mike Anderson
 
Default blk: Do not abort requests if queue is stopped

Jens Axboe <jens.axboe@oracle.com> wrote:
> On Mon, May 03 2010, Mike Anderson wrote:
> > If the queue is stopped it could be an indication that other recovery is
> > happening in this case skip the blk_abort_request.
> >
> > Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
> > Cc: Jens Axobe <jens.axboe@oracle.com>
> > ---
> > block/blk-timeout.c | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> > diff --git a/block/blk-timeout.c b/block/blk-timeout.c
> > index 1ba7e0a..89fbe0a 100644
> > --- a/block/blk-timeout.c
> > +++ b/block/blk-timeout.c
> > @@ -224,7 +224,8 @@ void blk_abort_queue(struct request_queue *q)
> > list_splice_init(&q->timeout_list, &list);
> >
> > list_for_each_entry_safe(rq, tmp, &list, timeout_list)
> > - blk_abort_request(rq);
> > + if (!blk_queue_stopped(q))
> > + blk_abort_request(rq);
> >
> > /*
> > * Occasionally, blk_abort_request() will return without
>
> That seems like a bit of a mixup, what ties a stopped queue to recovery?

This was coding to SCSI behavior again. I tried to reduce the case of
waking the eh if the transport moved the target into a blocked state. It
might be redundant as FC has eh blocking and timer_reset. iSCSI has
blocking but not eh blocking.

> To take one example, the cciss driver stops the queue when it can't
> queue more at the hw level and starts it on completion to queue more. If
> recovery triggers when the hw queue has been filled, then timeouts will
> fail?
>
> It would be better to mark the queue as already doing abort. That state
> could be in the queue, or it could be at the driver level.

ok. I will look into this.

-andmike
--
Michael Anderson
andmike@linux.vnet.ibm.com

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 05-05-2010, 06:13 PM
Mike Christie
 
Default blk: Do not abort requests if queue is stopped

On 05/04/2010 11:52 PM, Mike Anderson wrote:

Jens Axboe<jens.axboe@oracle.com> wrote:

On Mon, May 03 2010, Mike Anderson wrote:

If the queue is stopped it could be an indication that other recovery is
happening in this case skip the blk_abort_request.

Signed-off-by: Mike Anderson<andmike@linux.vnet.ibm.com>
Cc: Jens Axobe<jens.axboe@oracle.com>
---
block/blk-timeout.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/block/blk-timeout.c b/block/blk-timeout.c
index 1ba7e0a..89fbe0a 100644
--- a/block/blk-timeout.c
+++ b/block/blk-timeout.c
@@ -224,7 +224,8 @@ void blk_abort_queue(struct request_queue *q)
list_splice_init(&q->timeout_list,&list);

list_for_each_entry_safe(rq, tmp,&list, timeout_list)
- blk_abort_request(rq);
+ if (!blk_queue_stopped(q))
+ blk_abort_request(rq);

/*
* Occasionally, blk_abort_request() will return without


That seems like a bit of a mixup, what ties a stopped queue to recovery?


This was coding to SCSI behavior again. I tried to reduce the case of
waking the eh if the transport moved the target into a blocked state. It
might be redundant as FC has eh blocking and timer_reset. iSCSI has
blocking but not eh blocking.


All iscsi drivers should have blocking and timer reset now, so if a
transport problem casues a IO error to be sent to dm, then when
blk_abort_request is called that should prevent the scsi layer from
sending the whole host into recovery.



I do not remember the problem with the lack of eh blocking though. Did
we need that too?


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 05-05-2010, 06:18 PM
Mike Anderson
 
Default blk: Do not abort requests if queue is stopped

Mike Christie <michaelc@cs.wisc.edu> wrote:
> All iscsi drivers should have blocking and timer reset now, so if a
> transport problem casues a IO error to be sent to dm, then when
> blk_abort_request is called that should prevent the scsi layer from
> sending the whole host into recovery.
>
>
> I do not remember the problem with the lack of eh blocking though.
> Did we need that too?

My comment was not on need I was just comparing the transports.

-andmike
--
Michael Anderson
andmike@linux.vnet.ibm.com

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 

Thread Tools




All times are GMT. The time now is 10:38 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org