Re: [PATCH v10 4/7] dm: enable synchronous dax

From: Pankaj Gupta
Date: Mon Jun 10 2019 - 01:12:51 EST



> On Tue, May 21, 2019 at 6:43 AM Pankaj Gupta <pagupta@xxxxxxxxxx> wrote:
> >
> > This patch sets dax device 'DAXDEV_SYNC' flag if all the target
> > devices of device mapper support synchrononous DAX. If device
> > mapper consists of both synchronous and asynchronous dax devices,
> > we don't set 'DAXDEV_SYNC' flag.
> >
> > Signed-off-by: Pankaj Gupta <pagupta@xxxxxxxxxx>
> > ---
> > drivers/md/dm-table.c | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
> > index cde3b49b2a91..1cce626ff576 100644
> > --- a/drivers/md/dm-table.c
> > +++ b/drivers/md/dm-table.c
> > @@ -886,10 +886,17 @@ static int device_supports_dax(struct dm_target *ti,
> > struct dm_dev *dev,
> > return bdev_dax_supported(dev->bdev, PAGE_SIZE);
> > }
> >
> > +static int device_synchronous(struct dm_target *ti, struct dm_dev *dev,
> > + sector_t start, sector_t len, void *data)
> > +{
> > + return dax_synchronous(dev->dax_dev);
> > +}
> > +
> > static bool dm_table_supports_dax(struct dm_table *t)
> > {
> > struct dm_target *ti;
> > unsigned i;
> > + bool dax_sync = true;
> >
> > /* Ensure that all targets support DAX. */
> > for (i = 0; i < dm_table_get_num_targets(t); i++) {
> > @@ -901,7 +908,14 @@ static bool dm_table_supports_dax(struct dm_table *t)
> > if (!ti->type->iterate_devices ||
> > !ti->type->iterate_devices(ti, device_supports_dax,
> > NULL))
> > return false;
> > +
> > + /* Check devices support synchronous DAX */
> > + if (dax_sync &&
> > + !ti->type->iterate_devices(ti, device_synchronous,
> > NULL))
> > + dax_sync = false;
>
> Looks like this needs to be rebased on the current state of v5.2-rc,
> and then we can nudge Mike for an ack.

Sorry! for late reply due to vacations. I will rebase the series on v5.2-rc4 and
send a v11.

Thanks,
Pankaj
Yes,
>