Message ID | CACTTzNYAxtY-d8+8Vo=Y2WpuXVaSkJk9PC7DcHXKJuU=gqvXFw@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 2016-06-23 at 19:31 +0300, Yigal Korman wrote: > On Thu, Jun 23, 2016 at 2:54 AM, Toshi Kani <toshi.kani@hpe.com> wrote: > > > > > > Currently, presence of direct_access() in block_device_operations > > indicates support of DAX on its block device. Because > > block_device_operations is instantiated with 'const', this DAX > > capablity may not be enabled conditinally. > > > > In preparation for supporting DAX to device-mapper devices, add > > QUEUE_FLAG_DAX to request_queue flags to advertise their DAX > > support. This will allow to set the DAX capability based on how > > mapped device is composed. > > Hi Toshi, > This patch is very helpful! > I think QUEUE_FLAG_DAX can also help with identifying dax devices in > userspace. > Perhaps you'd be willing to squash the patch below with this one or > add it to your submission? Hi Yigal, Good idea. Mike can probably take it into his tree, but I will include it into the series if I needed to submit v3. Acked-by: Toshi Kani <toshi.kani@hpe.com> I have one minor comment below. > [PATCH] block: expose QUEUE_FLAG_DAX in sysfs > > There's currently no way to identify DAX enabled devices in userspace. > > Signed-off-by: Yigal Korman <yigal@plexistor.com> > --- > block/blk-sysfs.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c > index 9920596..d55126d 100644 > --- a/block/blk-sysfs.c > +++ b/block/blk-sysfs.c > @@ -379,6 +379,15 @@ static ssize_t queue_wc_store(struct > request_queue *q, const char *page, > return count; > } > > +static ssize_t queue_dax_show(struct request_queue *q, char *page) > +{ > + int bit; > + > + bit = test_bit(QUEUE_FLAG_DAX, &q->queue_flags); > + > + return queue_var_show(bit, page); This can be: return queue_var_show(blk_queue_dax(q), page); Thanks, -Toshi > +} > + > static struct queue_sysfs_entry queue_requests_entry = { > .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR }, > .show = queue_requests_show, > @@ -516,6 +525,11 @@ static struct queue_sysfs_entry queue_wc_entry = { > .store = queue_wc_store, > }; > > +static struct queue_sysfs_entry queue_dax_entry = { > + .attr = {.name = "dax", .mode = S_IRUGO }, > + .show = queue_dax_show, > +}; > + > static struct attribute *default_attrs[] = { > &queue_requests_entry.attr, > &queue_ra_entry.attr, > @@ -542,6 +556,7 @@ static struct attribute *default_attrs[] = { > &queue_random_entry.attr, > &queue_poll_entry.attr, > &queue_wc_entry.attr, > + &queue_dax_entry.attr, > NULL, > }; >
On Thu, Jun 23 2016 at 1:36pm -0400, Kani, Toshimitsu <toshi.kani@hpe.com> wrote: > On Thu, 2016-06-23 at 19:31 +0300, Yigal Korman wrote: > > On Thu, Jun 23, 2016 at 2:54 AM, Toshi Kani <toshi.kani@hpe.com> wrote: > > > > > > > > > Currently, presence of direct_access() in block_device_operations > > > indicates support of DAX on its block device. Because > > > block_device_operations is instantiated with 'const', this DAX > > > capablity may not be enabled conditinally. > > > > > > In preparation for supporting DAX to device-mapper devices, add > > > QUEUE_FLAG_DAX to request_queue flags to advertise their DAX > > > support. This will allow to set the DAX capability based on how > > > mapped device is composed. > > > > Hi Toshi, > > This patch is very helpful! > > I think QUEUE_FLAG_DAX can also help with identifying dax devices in > > userspace. > > Perhaps you'd be willing to squash the patch below with this one or > > add it to your submission? > > Hi Yigal, > > Good idea. Mike can probably take it into his tree, but I will include it > into the series if I needed to submit v3. > > Acked-by: Toshi Kani <toshi.kani@hpe.com> As you can see I sent out v3 of this set. Jens will need to pick up the "block:" patches but I'll pick up the DM patches once Jens does so.
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 9920596..d55126d 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -379,6 +379,15 @@ static ssize_t queue_wc_store(struct request_queue *q, const char *page, return count; } +static ssize_t queue_dax_show(struct request_queue *q, char *page) +{ + int bit; + + bit = test_bit(QUEUE_FLAG_DAX, &q->queue_flags); + + return queue_var_show(bit, page); +} + static struct queue_sysfs_entry queue_requests_entry = { .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR },