--- linux-2.6.27-rc5.work/drivers/scsi/libiscsi.c 2008-08-28 17:52:02.000000000 -0500 +++ linux-2.6.27-rc5/drivers/scsi/libiscsi.c 2008-11-30 21:46:55.000000000 -0600 @@ -494,12 +494,6 @@ __iscsi_conn_send_pdu(struct iscsi_conn if (!__kfifo_get(session->cmdpool.queue, (void*)&task, sizeof(void*))) return NULL; - - if ((hdr->opcode == (ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE)) && - hdr->ttt == RESERVED_ITT) { - conn->ping_task = task; - conn->last_ping = jiffies; - } } /* * released in complete pdu for task we expect a response for, and @@ -674,6 +668,11 @@ static void iscsi_send_nopout(struct isc task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0); if (!task) iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n"); + else if (!rhdr) { + /* only track our nops */ + conn->ping_task = task; + conn->last_ping = jiffies; + } } static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr,