MAXCMDSN: Stop sending new PDUs to the target when maxcmdsn is reached
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
+8
-3
@@ -204,8 +204,8 @@ iscsi_which_events(struct iscsi_context *iscsi)
|
|||||||
{
|
{
|
||||||
int events = iscsi->is_connected ? POLLIN : POLLOUT;
|
int events = iscsi->is_connected ? POLLIN : POLLOUT;
|
||||||
|
|
||||||
if (iscsi->outqueue) {
|
if (iscsi->outqueue && iscsi->outqueue->cmdsn <= iscsi->maxcmdsn) {
|
||||||
events |= POLLOUT;
|
events |= POLLOUT;
|
||||||
}
|
}
|
||||||
return events;
|
return events;
|
||||||
}
|
}
|
||||||
@@ -338,9 +338,14 @@ iscsi_write_to_socket(struct iscsi_context *iscsi)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (iscsi->outqueue != NULL) {
|
while (iscsi->outqueue) {
|
||||||
ssize_t total;
|
ssize_t total;
|
||||||
|
|
||||||
|
if (iscsi->outqueue->cmdsn > iscsi->maxcmdsn) {
|
||||||
|
/* stop sending. maxcmdsn is reached */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
total = iscsi->outqueue->outdata.size;
|
total = iscsi->outqueue->outdata.size;
|
||||||
total = (total + 3) & 0xfffffffc;
|
total = (total + 3) & 0xfffffffc;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user