diff options
author | Erez Zilber <erezz@voltaire.com> | 2007-04-01 12:53:43 +0200 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-04-05 09:46:04 -0700 |
commit | 1d426d6418d1914b592c9c307c02e488d9182fa8 (patch) | |
tree | 488d9f534a5496975a36b33237f05b127c42ec23 /drivers/infiniband/ulp/iser/iscsi_iser.h | |
parent | 58e949139014a852a83b5ef071136b1f50c86ad1 (diff) | |
download | lwn-1d426d6418d1914b592c9c307c02e488d9182fa8.tar.gz lwn-1d426d6418d1914b592c9c307c02e488d9182fa8.zip |
IB/iser: Don't defer connection failure notification to workqueue
When a connection is terminated asynchronously from the iSCSI layer's
perspective, iSER needs to notify the iSCSI layer that the connection
has failed. This is done using a workqueue (switched to from the iSER
tasklet context). Meanwhile, the connection object (that holds the
work struct) is released. If the workqueue function wasn't called
yet, it will be called later with a NULL pointer, which will crash the
kernel.
The context switch (tasklet to workqueue) is not required, and
everything can be done from the iSER tasklet. This eliminates the NULL
work struct bug (and simplifies the code).
Signed-off-by: Erez Zilber <erezz@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/ulp/iser/iscsi_iser.h')
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index cae8c96a55f8..8960196ffb0f 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h @@ -245,7 +245,6 @@ struct iser_conn { wait_queue_head_t wait; /* waitq for conn/disconn */ atomic_t post_recv_buf_count; /* posted rx count */ atomic_t post_send_buf_count; /* posted tx count */ - struct work_struct comperror_work; /* conn term sleepable ctx*/ char name[ISER_OBJECT_NAME_SIZE]; struct iser_page_vec *page_vec; /* represents SG to fmr maps* * maps serialized as tx is*/ |