]> err.no Git - linux-2.6/blobdiff - drivers/scsi/iscsi_tcp.c
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
[linux-2.6] / drivers / scsi / iscsi_tcp.c
index d07d309ac02640abe1958f26e009c4efceb4dca4..2068b66822b7e9f871687db92a9d8ede0576f172 100644 (file)
@@ -244,12 +244,10 @@ iscsi_ctask_cleanup(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
        if (sc->sc_data_direction == DMA_TO_DEVICE) {
                struct iscsi_data_task *dtask, *n;
                /* WRITE: cleanup Data-Out's if any */
-               spin_lock(&conn->lock);
                list_for_each_entry_safe(dtask, n, &ctask->dataqueue, item) {
                        list_del(&dtask->item);
                        mempool_free(dtask, ctask->datapool);
                }
-               spin_unlock(&conn->lock);
        }
        ctask->xmstate = XMSTATE_IDLE;
        ctask->r2t = NULL;
@@ -2453,8 +2451,6 @@ iscsi_conn_create(struct iscsi_cls_session *cls_session, uint32_t conn_idx)
        conn->data_size = DEFAULT_MAX_RECV_DATA_SEGMENT_LENGTH;
        conn->max_recv_dlength = DEFAULT_MAX_RECV_DATA_SEGMENT_LENGTH;
 
-       spin_lock_init(&conn->lock);
-
        /* initialize general xmit PDU commands queue */
        conn->xmitqueue = kfifo_alloc(session->cmds_max * sizeof(void*),
                                        GFP_KERNEL, NULL);
@@ -3204,8 +3200,8 @@ iscsi_r2tpool_alloc(struct iscsi_session *session)
                 * Data-Out PDU's within R2T-sequence can be quite big;
                 * using mempool
                 */
-               ctask->datapool = mempool_create(ISCSI_DTASK_DEFAULT_MAX,
-                        mempool_alloc_slab, mempool_free_slab, taskcache);
+               ctask->datapool = mempool_create_slab_pool(ISCSI_DTASK_DEFAULT_MAX,
+                                                          taskcache);
                if (ctask->datapool == NULL) {
                        kfifo_free(ctask->r2tqueue);
                        iscsi_pool_free(&ctask->r2tpool, (void**)ctask->r2ts);
@@ -3271,7 +3267,7 @@ iscsi_session_create(struct scsi_transport_template *scsit,
        session = iscsi_hostdata(shost->hostdata);
        memset(session, 0, sizeof(struct iscsi_session));
        session->host = shost;
-       session->state = ISCSI_STATE_LOGGED_IN;
+       session->state = ISCSI_STATE_FREE;
        session->mgmtpool_max = ISCSI_MGMT_CMDS_MAX;
        session->cmds_max = ISCSI_XMIT_CMDS_MAX;
        session->cmdsn = initial_cmdsn;
@@ -3320,8 +3316,8 @@ iscsi_session_create(struct scsi_transport_template *scsit,
 r2tpool_alloc_fail:
        for (cmd_i = 0; cmd_i < session->mgmtpool_max; cmd_i++)
                kfree(session->mgmt_cmds[cmd_i]->data);
-       iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds);
 immdata_alloc_fail:
+       iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds);
 mgmtpool_alloc_fail:
        iscsi_pool_free(&session->cmdpool, (void**)session->cmds);
 cmdpool_alloc_fail:
@@ -3643,7 +3639,7 @@ iscsi_tcp_init(void)
 
        taskcache = kmem_cache_create("iscsi_taskcache",
                        sizeof(struct iscsi_data_task), 0,
-                       SLAB_HWCACHE_ALIGN | SLAB_NO_REAP, NULL, NULL);
+                       SLAB_HWCACHE_ALIGN, NULL, NULL);
        if (!taskcache)
                return -ENOMEM;