2008-10-24 07:45:31

by Nikanth K

[permalink] [raw]
Subject: Re: [dm-devel] [PATCH 10/13] dm: add core functions for request-based dm

On Fri, Sep 12, 2008 at 8:16 PM, Kiyoshi Ueda <[email protected]> wrote:
<snip>

> +static int dm_make_request(struct request_queue *q, struct bio *bio)
> +{
> + struct mapped_device *md = (struct mapped_device *)q->queuedata;
> +
> + if (unlikely(bio_barrier(bio))) {
> + bio_endio(bio, -EOPNOTSUPP);
> + return 0;
> + }
> +
<snip>

Why not add barrier support in the beginning itself, so that targets
can be developed with barriers in mind? At least can we make the target
to return error, instead of the core?

Thanks
Nikanth Karthikesan


2008-10-28 16:03:24

by Kiyoshi Ueda

[permalink] [raw]
Subject: Re: [dm-devel] [PATCH 10/13] dm: add core functions for request-based dm

Hi Nikanth,

On Fri, 24 Oct 2008 13:14:50 +0530, "Nikanth K" wrote:
> On Fri, Sep 12, 2008 at 8:16 PM, Kiyoshi Ueda wrote:
> <snip>
>
> > +static int dm_make_request(struct request_queue *q, struct bio *bio)
> > +{
> > + struct mapped_device *md = (struct mapped_device *)q->queuedata;
> > +
> > + if (unlikely(bio_barrier(bio))) {
> > + bio_endio(bio, -EOPNOTSUPP);
> > + return 0;
> > + }
> > +
> <snip>
>
> Why not add barrier support in the beginning itself, so that targets
> can be developed with barriers in mind? At least can we make the target
> to return error, instead of the core?

Currently, there is no barrier support in dm, not only request-based.
Barrier support is a different feature in the next step, I think.

As you noticed in the PATCH#11, current request-based dm has
the limitation that multiple targets are not supported, so it may
look barrier support in request-based dm is easy.
But we may be able to remove the limitation in the future, so
depending on it is not a good idea.

Thanks,
Kiyoshi Ueda