linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / s390 / scsi / zfcp_aux.c
index 395cfc6..95b92f3 100644 (file)
@@ -829,6 +829,18 @@ zfcp_unit_dequeue(struct zfcp_unit *unit)
        device_unregister(&unit->sysfs_device);
 }
 
+static void *
+zfcp_mempool_alloc(gfp_t gfp_mask, void *size)
+{
+       return kmalloc((size_t) size, gfp_mask);
+}
+
+static void
+zfcp_mempool_free(void *element, void *size)
+{
+       kfree(element);
+}
+
 /*
  * Allocates a combined QTCB/fsf_req buffer for erp actions and fcp/SCSI
  * commands.
@@ -841,39 +853,51 @@ static int
 zfcp_allocate_low_mem_buffers(struct zfcp_adapter *adapter)
 {
        adapter->pool.fsf_req_erp =
-               mempool_create_kmalloc_pool(ZFCP_POOL_FSF_REQ_ERP_NR,
-                               sizeof(struct zfcp_fsf_req_pool_element));
-       if (!adapter->pool.fsf_req_erp)
+               mempool_create(ZFCP_POOL_FSF_REQ_ERP_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free, (void *)
+                              sizeof(struct zfcp_fsf_req_pool_element));
+
+       if (NULL == adapter->pool.fsf_req_erp)
                return -ENOMEM;
 
        adapter->pool.fsf_req_scsi =
-               mempool_create_kmalloc_pool(ZFCP_POOL_FSF_REQ_SCSI_NR,
-                               sizeof(struct zfcp_fsf_req_pool_element));
-       if (!adapter->pool.fsf_req_scsi)
+               mempool_create(ZFCP_POOL_FSF_REQ_SCSI_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free, (void *)
+                              sizeof(struct zfcp_fsf_req_pool_element));
+
+       if (NULL == adapter->pool.fsf_req_scsi)
                return -ENOMEM;
 
        adapter->pool.fsf_req_abort =
-               mempool_create_kmalloc_pool(ZFCP_POOL_FSF_REQ_ABORT_NR,
-                               sizeof(struct zfcp_fsf_req_pool_element));
-       if (!adapter->pool.fsf_req_abort)
+               mempool_create(ZFCP_POOL_FSF_REQ_ABORT_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free, (void *)
+                              sizeof(struct zfcp_fsf_req_pool_element));
+
+       if (NULL == adapter->pool.fsf_req_abort)
                return -ENOMEM;
 
        adapter->pool.fsf_req_status_read =
-               mempool_create_kmalloc_pool(ZFCP_POOL_STATUS_READ_NR,
-                                           sizeof(struct zfcp_fsf_req));
-       if (!adapter->pool.fsf_req_status_read)
+               mempool_create(ZFCP_POOL_STATUS_READ_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free,
+                              (void *) sizeof(struct zfcp_fsf_req));
+
+       if (NULL == adapter->pool.fsf_req_status_read)
                return -ENOMEM;
 
        adapter->pool.data_status_read =
-               mempool_create_kmalloc_pool(ZFCP_POOL_STATUS_READ_NR,
-                                       sizeof(struct fsf_status_read_buffer));
-       if (!adapter->pool.data_status_read)
+               mempool_create(ZFCP_POOL_STATUS_READ_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free,
+                              (void *) sizeof(struct fsf_status_read_buffer));
+
+       if (NULL == adapter->pool.data_status_read)
                return -ENOMEM;
 
        adapter->pool.data_gid_pn =
-               mempool_create_kmalloc_pool(ZFCP_POOL_DATA_GID_PN_NR,
-                                           sizeof(struct zfcp_gid_pn_data));
-       if (!adapter->pool.data_gid_pn)
+               mempool_create(ZFCP_POOL_DATA_GID_PN_NR,
+                              zfcp_mempool_alloc, zfcp_mempool_free, (void *)
+                              sizeof(struct zfcp_gid_pn_data));
+
+       if (NULL == adapter->pool.data_gid_pn)
                return -ENOMEM;
 
        return 0;