diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-03-30 01:27:12 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-03-30 01:27:12 -0400 |
| commit | c2a9838452a4d71f76103c18c926468a9ea05713 (patch) | |
| tree | fb576ef0004322e030cd406307169536cfb34bb8 | |
| parent | d89b9f50291a214f9d670594c9fc35483b6d87a4 (diff) | |
| parent | da5dadb4f11660ca67580cd4a7420161266d6254 (diff) | |
Merge tag 'for-4.16/dm-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
Pull device mapper fixes from Mike Snitzer:
- Fix a DM multipath regression introduced in a v4.16-rc6 commit:
restore support for loading, and attaching, scsi_dh modules during
multipath table load. Otherwise some users may find themselves unable
to boot, as was reported today:
https://marc.info/?l=linux-scsi&m=152231276114962&w=2
- Fix a DM core ioctl permission check regression introduced in a
v4.16-rc5 commit.
* tag 'for-4.16/dm-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
dm: fix dropped return code from dm_get_bdev_for_ioctl
dm mpath: fix support for loading scsi_dh modules during table load
| -rw-r--r-- | drivers/md/dm-mpath.c | 2 | ||||
| -rw-r--r-- | drivers/md/dm.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c index a05a560d3cba..a6b7baf31cdd 100644 --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c | |||
| @@ -887,7 +887,7 @@ static struct pgpath *parse_path(struct dm_arg_set *as, struct path_selector *ps | |||
| 887 | 887 | ||
| 888 | q = bdev_get_queue(p->path.dev->bdev); | 888 | q = bdev_get_queue(p->path.dev->bdev); |
| 889 | attached_handler_name = scsi_dh_attached_handler_name(q, GFP_KERNEL); | 889 | attached_handler_name = scsi_dh_attached_handler_name(q, GFP_KERNEL); |
| 890 | if (attached_handler_name) { | 890 | if (attached_handler_name || m->hw_handler_name) { |
| 891 | INIT_DELAYED_WORK(&p->activate_path, activate_path_work); | 891 | INIT_DELAYED_WORK(&p->activate_path, activate_path_work); |
| 892 | r = setup_scsi_dh(p->path.dev->bdev, m, attached_handler_name, &ti->error); | 892 | r = setup_scsi_dh(p->path.dev->bdev, m, attached_handler_name, &ti->error); |
| 893 | if (r) { | 893 | if (r) { |
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 45328d8b2859..353ea0ede091 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
| @@ -466,7 +466,7 @@ static int dm_get_bdev_for_ioctl(struct mapped_device *md, | |||
| 466 | { | 466 | { |
| 467 | struct dm_target *tgt; | 467 | struct dm_target *tgt; |
| 468 | struct dm_table *map; | 468 | struct dm_table *map; |
| 469 | int srcu_idx, r; | 469 | int srcu_idx, r, r2; |
| 470 | 470 | ||
| 471 | retry: | 471 | retry: |
| 472 | r = -ENOTTY; | 472 | r = -ENOTTY; |
| @@ -492,9 +492,11 @@ retry: | |||
| 492 | goto out; | 492 | goto out; |
| 493 | 493 | ||
| 494 | bdgrab(*bdev); | 494 | bdgrab(*bdev); |
| 495 | r = blkdev_get(*bdev, *mode, _dm_claim_ptr); | 495 | r2 = blkdev_get(*bdev, *mode, _dm_claim_ptr); |
| 496 | if (r < 0) | 496 | if (r2 < 0) { |
| 497 | r = r2; | ||
| 497 | goto out; | 498 | goto out; |
| 499 | } | ||
| 498 | 500 | ||
| 499 | dm_put_live_table(md, srcu_idx); | 501 | dm_put_live_table(md, srcu_idx); |
| 500 | return r; | 502 | return r; |
