diff options
author | Mike Snitzer <snitzer@redhat.com> | 2016-06-24 17:09:35 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2016-07-20 23:49:50 -0400 |
commit | f8df1fdf18839cb4ef2035310bb9b6ec02025598 (patch) | |
tree | b355c0f0596d6850ba68ca542014c17c2a6181b3 | |
parent | 84b22f8378cf493524043a0a8dd567c58c64546f (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.c | 3 | ||||
-rw-r--r-- | drivers/md/dm-target.c | 9 |
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 | ||
151 | static 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 | |||
151 | static struct target_type error_target = { | 157 | static 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 | ||
163 | int __init dm_target_init(void) | 170 | int __init dm_target_init(void) |