Commit df93ffcd authored by Mike Christie's avatar Mike Christie Committed by James Bottomley
Browse files

[SCSI] iscsi_tcp: fix setting of r2t

If we negotiate for X r2ts we have to use only X r2ts. We cannot
round up (we could send less though). It is ok to fail if it
is not something the driver can handle, so this patch just does
Signed-off-by: default avatarMike Christie <>
Signed-off-by: default avatarJames Bottomley <>
parent 11836572
...@@ -1774,12 +1774,12 @@ iscsi_conn_set_param(struct iscsi_cls_conn *cls_conn, enum iscsi_param param, ...@@ -1774,12 +1774,12 @@ iscsi_conn_set_param(struct iscsi_cls_conn *cls_conn, enum iscsi_param param,
break; break;
sscanf(buf, "%d", &value); sscanf(buf, "%d", &value);
if (session->max_r2t == roundup_pow_of_two(value)) if (value <= 0 || !is_power_of_2(value))
return -EINVAL;
if (session->max_r2t == value)
break; break;
iscsi_r2tpool_free(session); iscsi_r2tpool_free(session);
iscsi_set_param(cls_conn, param, buf, buflen); iscsi_set_param(cls_conn, param, buf, buflen);
if (session->max_r2t & (session->max_r2t - 1))
session->max_r2t = roundup_pow_of_two(session->max_r2t);
if (iscsi_r2tpool_alloc(session)) if (iscsi_r2tpool_alloc(session))
return -ENOMEM; return -ENOMEM;
break; break;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment