Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64deb6ef authored by Christof Schmitt's avatar Christof Schmitt Committed by James Bottomley
Browse files

[SCSI] zfcp: Use status_read_buf_num provided by FCP channel



The FCP channel provides the number of status read buffers to issue.
Use the provided number instead of the hardcoded number in zfcp.

Reviewed-by: default avatarSwen Schillig <swen@vnet.ibm.com>
Signed-off-by: default avatarChristof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 6b9e1520
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -425,7 +425,8 @@ int zfcp_status_read_refill(struct zfcp_adapter *adapter)
{
	while (atomic_read(&adapter->stat_miss) > 0)
		if (zfcp_fsf_status_read(adapter->qdio)) {
			if (atomic_read(&adapter->stat_miss) >= 16) {
			if (atomic_read(&adapter->stat_miss) >=
			    adapter->stat_read_buf_num) {
				zfcp_erp_adapter_reopen(adapter, 0, "axsref1",
							NULL);
				return 1;
+1 −0
Original line number Diff line number Diff line
@@ -164,6 +164,7 @@ struct zfcp_adapter {
						      stack abort/command
						      completion races */
	atomic_t		stat_miss;	   /* # missing status reads*/
	unsigned int		stat_read_buf_num;
	struct work_struct	stat_work;
	atomic_t		status;	           /* status of this adapter */
	struct list_head	erp_ready_head;	   /* error recovery for this
+1 −1
Original line number Diff line number Diff line
@@ -714,7 +714,7 @@ static int zfcp_erp_adapter_strategy_open_fsf(struct zfcp_erp_action *act)
	if (zfcp_erp_adapter_strategy_open_fsf_xport(act) == ZFCP_ERP_FAILED)
		return ZFCP_ERP_FAILED;

	atomic_set(&act->adapter->stat_miss, 16);
	atomic_set(&act->adapter->stat_miss, act->adapter->stat_read_buf_num);
	if (zfcp_status_read_refill(act->adapter))
		return ZFCP_ERP_FAILED;

+1 −0
Original line number Diff line number Diff line
@@ -496,6 +496,7 @@ static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req)

	adapter->hydra_version = bottom->adapter_type;
	adapter->timer_ticks = bottom->timer_interval;
	adapter->stat_read_buf_num = max(bottom->status_read_buf_num, (u16)16);

	if (fc_host_permanent_port_name(shost) == -1)
		fc_host_permanent_port_name(shost) = fc_host_port_name(shost);
+1 −1
Original line number Diff line number Diff line
@@ -366,7 +366,7 @@ struct fsf_qtcb_bottom_config {
	u32 adapter_type;
	u8 res0;
	u8 peer_d_id[3];
	u8 res1[2];
	u16 status_read_buf_num;
	u16 timer_interval;
	u8 res2[9];
	u8 s_id[3];