diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 19:36:31 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 19:36:31 -0500 |
commit | 802ea9d8645d33d24b7b4cd4537c14f3e698bde0 (patch) | |
tree | 9a51a21025fa9a38263aa44883ea2b6af823ea05 /drivers/md/dm-raid.c | |
parent | 8494bcf5b7c4b2416687e233dd34d4c6b6fe5653 (diff) | |
parent | a4afe76b2b922e6197944d7be0be7a18b53175ae (diff) |
Merge tag 'dm-3.20-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
Pull device mapper changes from Mike Snitzer:
- The most significant change this cycle is request-based DM now
supports stacking ontop of blk-mq devices. This blk-mq support
changes the model request-based DM uses for cloning a request to
relying on calling blk_get_request() directly from the underlying
blk-mq device.
An early consumer of this code is Intel's emerging NVMe hardware;
thanks to Keith Busch for working on, and pushing for, these changes.
- A few other small fixes and cleanups across other DM targets.
* tag 'dm-3.20-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
dm: inherit QUEUE_FLAG_SG_GAPS flags from underlying queues
dm snapshot: remove unnecessary NULL checks before vfree() calls
dm mpath: simplify failure path of dm_multipath_init()
dm thin metadata: remove unused dm_pool_get_data_block_size()
dm ioctl: fix stale comment above dm_get_inactive_table()
dm crypt: update url in CONFIG_DM_CRYPT help text
dm bufio: fix time comparison to use time_after_eq()
dm: use time_in_range() and time_after()
dm raid: fix a couple integer overflows
dm table: train hybrid target type detection to select blk-mq if appropriate
dm: allocate requests in target when stacking on blk-mq devices
dm: prepare for allocating blk-mq clone requests in target
dm: submit stacked requests in irq enabled context
dm: split request structure out from dm_rq_target_io structure
dm: remove exports for request-based interfaces without external callers
Diffstat (limited to 'drivers/md/dm-raid.c')
-rw-r--r-- | drivers/md/dm-raid.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 777d9ba2acad..88e4c7f24986 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c | |||
@@ -1237,7 +1237,7 @@ static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) | |||
1237 | argv++; | 1237 | argv++; |
1238 | 1238 | ||
1239 | /* Skip over RAID params for now and find out # of devices */ | 1239 | /* Skip over RAID params for now and find out # of devices */ |
1240 | if (num_raid_params + 1 > argc) { | 1240 | if (num_raid_params >= argc) { |
1241 | ti->error = "Arguments do not agree with counts given"; | 1241 | ti->error = "Arguments do not agree with counts given"; |
1242 | return -EINVAL; | 1242 | return -EINVAL; |
1243 | } | 1243 | } |
@@ -1248,6 +1248,12 @@ static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) | |||
1248 | return -EINVAL; | 1248 | return -EINVAL; |
1249 | } | 1249 | } |
1250 | 1250 | ||
1251 | argc -= num_raid_params + 1; /* +1: we already have num_raid_devs */ | ||
1252 | if (argc != (num_raid_devs * 2)) { | ||
1253 | ti->error = "Supplied RAID devices does not match the count given"; | ||
1254 | return -EINVAL; | ||
1255 | } | ||
1256 | |||
1251 | rs = context_alloc(ti, rt, (unsigned)num_raid_devs); | 1257 | rs = context_alloc(ti, rt, (unsigned)num_raid_devs); |
1252 | if (IS_ERR(rs)) | 1258 | if (IS_ERR(rs)) |
1253 | return PTR_ERR(rs); | 1259 | return PTR_ERR(rs); |
@@ -1256,16 +1262,8 @@ static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) | |||
1256 | if (ret) | 1262 | if (ret) |
1257 | goto bad; | 1263 | goto bad; |
1258 | 1264 | ||
1259 | ret = -EINVAL; | ||
1260 | |||
1261 | argc -= num_raid_params + 1; /* +1: we already have num_raid_devs */ | ||
1262 | argv += num_raid_params + 1; | 1265 | argv += num_raid_params + 1; |
1263 | 1266 | ||
1264 | if (argc != (num_raid_devs * 2)) { | ||
1265 | ti->error = "Supplied RAID devices does not match the count given"; | ||
1266 | goto bad; | ||
1267 | } | ||
1268 | |||
1269 | ret = dev_parms(rs, argv); | 1267 | ret = dev_parms(rs, argv); |
1270 | if (ret) | 1268 | if (ret) |
1271 | goto bad; | 1269 | goto bad; |