diff options
author | Christoph Hellwig <hch@lst.de> | 2015-08-27 08:16:54 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Odin.com> | 2015-08-28 16:14:54 -0400 |
commit | 1bab0de0274fbe8c8ac92179e6705584c55ed169 (patch) | |
tree | 3a2bbd51706e6ec0a279cbc0011d996de7320aa7 /include/scsi | |
parent | 36dd5acd196574d41de3e81d8264df475bbb7123 (diff) |
dm-mpath, scsi_dh: don't let dm detach device handlers
While allowing dm-mpath to attach device handlers is a functionality we need
for backwards compatibility reason there is no reason to reference count
them and detach them if dm-mpath stops using the device for some reason.
If the device handler works for the given device it can just stay attached,
and we can take the retain_hw_handler codepath.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Hannes Reinecke <hare@Suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/scsi_device.h | 1 | ||||
-rw-r--r-- | include/scsi/scsi_dh.h | 5 |
2 files changed, 0 insertions, 6 deletions
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 50c2a363bc8f..798d67994aeb 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
@@ -221,7 +221,6 @@ struct scsi_device_handler { | |||
221 | struct scsi_dh_data { | 221 | struct scsi_dh_data { |
222 | struct scsi_device_handler *scsi_dh; | 222 | struct scsi_device_handler *scsi_dh; |
223 | struct scsi_device *sdev; | 223 | struct scsi_device *sdev; |
224 | struct kref kref; | ||
225 | }; | 224 | }; |
226 | 225 | ||
227 | #define to_scsi_device(d) \ | 226 | #define to_scsi_device(d) \ |
diff --git a/include/scsi/scsi_dh.h b/include/scsi/scsi_dh.h index 620c723ee8ed..99c9196fe606 100644 --- a/include/scsi/scsi_dh.h +++ b/include/scsi/scsi_dh.h | |||
@@ -59,7 +59,6 @@ enum { | |||
59 | extern int scsi_dh_activate(struct request_queue *, activate_complete, void *); | 59 | extern int scsi_dh_activate(struct request_queue *, activate_complete, void *); |
60 | extern int scsi_dh_handler_exist(const char *); | 60 | extern int scsi_dh_handler_exist(const char *); |
61 | extern int scsi_dh_attach(struct request_queue *, const char *); | 61 | extern int scsi_dh_attach(struct request_queue *, const char *); |
62 | extern void scsi_dh_detach(struct request_queue *); | ||
63 | extern const char *scsi_dh_attached_handler_name(struct request_queue *, gfp_t); | 62 | extern const char *scsi_dh_attached_handler_name(struct request_queue *, gfp_t); |
64 | extern int scsi_dh_set_params(struct request_queue *, const char *); | 63 | extern int scsi_dh_set_params(struct request_queue *, const char *); |
65 | #else | 64 | #else |
@@ -77,10 +76,6 @@ static inline int scsi_dh_attach(struct request_queue *req, const char *name) | |||
77 | { | 76 | { |
78 | return SCSI_DH_NOSYS; | 77 | return SCSI_DH_NOSYS; |
79 | } | 78 | } |
80 | static inline void scsi_dh_detach(struct request_queue *q) | ||
81 | { | ||
82 | return; | ||
83 | } | ||
84 | static inline const char *scsi_dh_attached_handler_name(struct request_queue *q, | 79 | static inline const char *scsi_dh_attached_handler_name(struct request_queue *q, |
85 | gfp_t gfp) | 80 | gfp_t gfp) |
86 | { | 81 | { |