diff options
Diffstat (limited to 'drivers/scsi/device_handler')
| -rw-r--r-- | drivers/scsi/device_handler/scsi_dh_alua.c | 24 | ||||
| -rw-r--r-- | drivers/scsi/device_handler/scsi_dh_emc.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/device_handler/scsi_dh_hp_sw.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/device_handler/scsi_dh_rdac.c | 2 | 
4 files changed, 17 insertions, 13 deletions
| diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 7bb20684e9fa..d704752b6332 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -95,7 +95,7 @@ struct alua_port_group {  struct alua_dh_data {  	struct list_head	node; -	struct alua_port_group	*pg; +	struct alua_port_group __rcu *pg;  	int			group_id;  	spinlock_t		pg_lock;  	struct scsi_device	*sdev; @@ -154,7 +154,8 @@ static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff,  	return scsi_execute_req_flags(sdev, cdb, DMA_FROM_DEVICE,  				      buff, bufflen, sshdr,  				      ALUA_FAILOVER_TIMEOUT * HZ, -				      ALUA_FAILOVER_RETRIES, NULL, req_flags); +				      ALUA_FAILOVER_RETRIES, NULL, +				      req_flags, 0);  }  /* @@ -187,7 +188,8 @@ static int submit_stpg(struct scsi_device *sdev, int group_id,  	return scsi_execute_req_flags(sdev, cdb, DMA_TO_DEVICE,  				      stpg_data, stpg_len,  				      sshdr, ALUA_FAILOVER_TIMEOUT * HZ, -				      ALUA_FAILOVER_RETRIES, NULL, req_flags); +				      ALUA_FAILOVER_RETRIES, NULL, +				      req_flags, 0);  }  static struct alua_port_group *alua_find_get_pg(char *id_str, size_t id_size, @@ -369,7 +371,7 @@ static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h,  	/* Check for existing port group references */  	spin_lock(&h->pg_lock); -	old_pg = h->pg; +	old_pg = rcu_dereference_protected(h->pg, lockdep_is_held(&h->pg_lock));  	if (old_pg != pg) {  		/* port group has changed. Update to new port group */  		if (h->pg) { @@ -388,7 +390,9 @@ static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h,  		list_add_rcu(&h->node, &pg->dh_list);  	spin_unlock_irqrestore(&pg->lock, flags); -	alua_rtpg_queue(h->pg, sdev, NULL, true); +	alua_rtpg_queue(rcu_dereference_protected(h->pg, +						  lockdep_is_held(&h->pg_lock)), +			sdev, NULL, true);  	spin_unlock(&h->pg_lock);  	if (old_pg) @@ -940,7 +944,7 @@ static int alua_initialize(struct scsi_device *sdev, struct alua_dh_data *h)  static int alua_set_params(struct scsi_device *sdev, const char *params)  {  	struct alua_dh_data *h = sdev->handler_data; -	struct alua_port_group __rcu *pg = NULL; +	struct alua_port_group *pg = NULL;  	unsigned int optimize = 0, argc;  	const char *p = params;  	int result = SCSI_DH_OK; @@ -987,7 +991,7 @@ static int alua_activate(struct scsi_device *sdev,  	struct alua_dh_data *h = sdev->handler_data;  	int err = SCSI_DH_OK;  	struct alua_queue_data *qdata; -	struct alua_port_group __rcu *pg; +	struct alua_port_group *pg;  	qdata = kzalloc(sizeof(*qdata), GFP_KERNEL);  	if (!qdata) { @@ -1051,7 +1055,7 @@ static void alua_check(struct scsi_device *sdev, bool force)  static int alua_prep_fn(struct scsi_device *sdev, struct request *req)  {  	struct alua_dh_data *h = sdev->handler_data; -	struct alua_port_group __rcu *pg; +	struct alua_port_group *pg;  	unsigned char state = SCSI_ACCESS_STATE_OPTIMAL;  	int ret = BLKPREP_OK; @@ -1066,7 +1070,7 @@ static int alua_prep_fn(struct scsi_device *sdev, struct request *req)  		 state != SCSI_ACCESS_STATE_ACTIVE &&  		 state != SCSI_ACCESS_STATE_LBA) {  		ret = BLKPREP_KILL; -		req->cmd_flags |= REQ_QUIET; +		req->rq_flags |= RQF_QUIET;  	}  	return ret; @@ -1121,7 +1125,7 @@ static void alua_bus_detach(struct scsi_device *sdev)  	struct alua_port_group *pg;  	spin_lock(&h->pg_lock); -	pg = h->pg; +	pg = rcu_dereference_protected(h->pg, lockdep_is_held(&h->pg_lock));  	rcu_assign_pointer(h->pg, NULL);  	h->sdev = NULL;  	spin_unlock(&h->pg_lock); diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c index 375d81850f15..5b80746980b8 100644 --- a/drivers/scsi/device_handler/scsi_dh_emc.c +++ b/drivers/scsi/device_handler/scsi_dh_emc.c @@ -452,7 +452,7 @@ static int clariion_prep_fn(struct scsi_device *sdev, struct request *req)  	if (h->lun_state != CLARIION_LUN_OWNED) {  		ret = BLKPREP_KILL; -		req->cmd_flags |= REQ_QUIET; +		req->rq_flags |= RQF_QUIET;  	}  	return ret; diff --git a/drivers/scsi/device_handler/scsi_dh_hp_sw.c b/drivers/scsi/device_handler/scsi_dh_hp_sw.c index 9406d5f4a3d3..308e87195dc1 100644 --- a/drivers/scsi/device_handler/scsi_dh_hp_sw.c +++ b/drivers/scsi/device_handler/scsi_dh_hp_sw.c @@ -266,7 +266,7 @@ static int hp_sw_prep_fn(struct scsi_device *sdev, struct request *req)  	if (h->path_state != HP_SW_PATH_ACTIVE) {  		ret = BLKPREP_KILL; -		req->cmd_flags |= REQ_QUIET; +		req->rq_flags |= RQF_QUIET;  	}  	return ret; diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index 06fbd0b0c68a..00d9c326158e 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c @@ -724,7 +724,7 @@ static int rdac_prep_fn(struct scsi_device *sdev, struct request *req)  	if (h->state != RDAC_STATE_ACTIVE) {  		ret = BLKPREP_KILL; -		req->cmd_flags |= REQ_QUIET; +		req->rq_flags |= RQF_QUIET;  	}  	return ret; |