summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2016-06-24 17:09:35 -0400
committerMike Snitzer <snitzer@redhat.com>2016-07-20 23:49:50 -0400
commitf8df1fdf18839cb4ef2035310bb9b6ec02025598 (patch)
treeb355c0f0596d6850ba68ca542014c17c2a6181b3
parent84b22f8378cf493524043a0a8dd567c58c64546f (diff)
dm error: add DAX support
Allow the error target to replace an existing DAX-enabled target. Signed-off-by: Mike Snitzer <snitzer@redhat.com>
-rw-r--r--drivers/md/dm-table.c3
-rw-r--r--drivers/md/dm-target.c9
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index ee6f37eafbc3..3e407a9cde1f 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -922,7 +922,8 @@ static int dm_table_determine_type(struct dm_table *t)
922 if (bio_based) { 922 if (bio_based) {
923 /* We must use this table as bio-based */ 923 /* We must use this table as bio-based */
924 t->type = DM_TYPE_BIO_BASED; 924 t->type = DM_TYPE_BIO_BASED;
925 if (dm_table_supports_dax(t)) 925 if (dm_table_supports_dax(t) ||
926 (list_empty(devices) && live_md_type == DM_TYPE_DAX_BIO_BASED))
926 t->type = DM_TYPE_DAX_BIO_BASED; 927 t->type = DM_TYPE_DAX_BIO_BASED;
927 return 0; 928 return 0;
928 } 929 }
diff --git a/drivers/md/dm-target.c b/drivers/md/dm-target.c
index 5c826b450aad..6eecd6b36f76 100644
--- a/drivers/md/dm-target.c
+++ b/drivers/md/dm-target.c
@@ -148,9 +148,15 @@ static void io_err_release_clone_rq(struct request *clone)
148{ 148{
149} 149}
150 150
151static long io_err_direct_access(struct dm_target *ti, sector_t sector,
152 void __pmem **kaddr, pfn_t *pfn, long size)
153{
154 return -EIO;
155}
156
151static struct target_type error_target = { 157static struct target_type error_target = {
152 .name = "error", 158 .name = "error",
153 .version = {1, 4, 0}, 159 .version = {1, 5, 0},
154 .features = DM_TARGET_WILDCARD, 160 .features = DM_TARGET_WILDCARD,
155 .ctr = io_err_ctr, 161 .ctr = io_err_ctr,
156 .dtr = io_err_dtr, 162 .dtr = io_err_dtr,
@@ -158,6 +164,7 @@ static struct target_type error_target = {
158 .map_rq = io_err_map_rq, 164 .map_rq = io_err_map_rq,
159 .clone_and_map_rq = io_err_clone_and_map_rq, 165 .clone_and_map_rq = io_err_clone_and_map_rq,
160 .release_clone_rq = io_err_release_clone_rq, 166 .release_clone_rq = io_err_release_clone_rq,
167 .direct_access = io_err_direct_access,
161}; 168};
162 169
163int __init dm_target_init(void) 170int __init dm_target_init(void)