[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] Re: [PATCH][RFC] Use bio markers for request callback
- From: Jens Axboe <jens axboe oracle com>
- To: Hannes Reinecke <hare suse de>
- Cc: device-mapper development <dm-devel redhat com>, michaelc cs wisc edu, linux-scsi vger kernel org
- Subject: [dm-devel] Re: [PATCH][RFC] Use bio markers for request callback
- Date: Tue, 11 Sep 2007 13:11:34 +0200
On Tue, Sep 11 2007, Hannes Reinecke wrote:
> Hi all,
>
> this is a proposal for a different implementation of request callbacks. The
> existing ->endio callback of a request is actually a destructor function,
> to be called to terminate a request and free all structures.
>
> However, on certain occasions (like request-based multipathing) it is
> desirable to have a callback function for a request which is called right
> after the request is finished, ie in end_that_request_first() before any
> bio->bi_endio callback is called.
>
> So a simple solution for this is to clone the request and add a new
> 'marker' bio in front of the bio list of the request. This callback will be
> attached a structure in bi_private which keeps a pointer to the cloned and
> the original request, thus serving as a callback for the request itself.
>
> Proposed patch attached. As usual comments are welcome.
Honestly, I think this approach is a much worse design than the NEC
callback option. Exporting __make_request() (which is an INTERNAL
function) aside, this looks like one big hack with pseudo bio attached
to front of list, the enable/disable elevator stuff (does that even work
on stacked devices?).
--
Jens Axboe
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]