dm snap: add fake origin_direct_access
dax-capable mapped-device is marked as DM_TYPE_DAX_BIO_BASED, which supports both dax and bio-based operations. dm-snap needs to work with dax-capable device when bio-based operation is used. Add fake origin_direct_access() to origin device so that its origin device is also marked as DM_TYPE_DAX_BIO_BASED for dax-capable device. This allows to extend target's DM table. dm-snap works normally when bio-based operation is used. dm-snap does not support dax operation, and mount with dax option to a target device or snapshot device fails. Signed-off-by: Toshi Kani <toshi.kani@hpe.com> Cc: Mike Snitzer <snitzer@redhat.com> Cc: Alasdair Kergon <agk@redhat.com> Cc: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
beec25b457
commit
f6e629bd23
|
@ -2301,6 +2301,13 @@ static int origin_map(struct dm_target *ti, struct bio *bio)
|
||||||
return do_origin(o->dev, bio);
|
return do_origin(o->dev, bio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static long origin_direct_access(struct dm_target *ti, sector_t sector,
|
||||||
|
void __pmem **kaddr, pfn_t *pfn, long size)
|
||||||
|
{
|
||||||
|
DMWARN("device does not support dax.");
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the target "max_io_len" field to the minimum of all the snapshots'
|
* Set the target "max_io_len" field to the minimum of all the snapshots'
|
||||||
* chunk sizes.
|
* chunk sizes.
|
||||||
|
@ -2360,6 +2367,7 @@ static struct target_type origin_target = {
|
||||||
.postsuspend = origin_postsuspend,
|
.postsuspend = origin_postsuspend,
|
||||||
.status = origin_status,
|
.status = origin_status,
|
||||||
.iterate_devices = origin_iterate_devices,
|
.iterate_devices = origin_iterate_devices,
|
||||||
|
.direct_access = origin_direct_access,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct target_type snapshot_target = {
|
static struct target_type snapshot_target = {
|
||||||
|
|
Loading…
Reference in New Issue