lkml.org 
[lkml]   [2019]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v11 4/7] dm: enable synchronous dax
    Date
     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@redhat.com>
    ---
    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 350cf0451456..c5160d846fe6 100644
    --- a/drivers/md/dm-table.c
    +++ b/drivers/md/dm-table.c
    @@ -890,10 +890,17 @@ static int device_supports_dax(struct dm_target *ti, struct dm_dev *dev,
    start, len);
    }

    +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);
    +}
    +
    bool dm_table_supports_dax(struct dm_table *t, int blocksize)
    {
    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++) {
    @@ -906,7 +913,14 @@ bool dm_table_supports_dax(struct dm_table *t, int blocksize)
    !ti->type->iterate_devices(ti, device_supports_dax,
    &blocksize))
    return false;
    +
    + /* Check devices support synchronous DAX */
    + if (dax_sync &&
    + !ti->type->iterate_devices(ti, device_synchronous, NULL))
    + dax_sync = false;
    }
    + if (dax_sync)
    + set_dax_synchronous(t->md->dax_dev);

    return true;
    }
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-06-10 11:12    [W:2.630 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site