#include "zfcp_ext.h"
 #include "zfcp_dbf.h"
 
-#define ZFCP_REQ_AUTO_CLEANUP  0x00000002
-
 static void zfcp_fsf_request_timeout_handler(unsigned long data)
 {
        struct zfcp_adapter *adapter = (struct zfcp_adapter *) data;
 }
 
 static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_adapter *adapter,
-                                               u32 fsf_cmd, int req_flags,
-                                               mempool_t *pool)
+                                               u32 fsf_cmd, mempool_t *pool)
 {
        struct qdio_buffer_element *sbale;
        struct zfcp_qdio_queue *req_q = &adapter->req_q;
                return ERR_PTR(-EIO);
        }
 
-       if (likely(req_flags & ZFCP_REQ_AUTO_CLEANUP))
-               req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
-
        return req;
 }
 
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
 
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_UNSOLICITED_STATUS, 0,
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_UNSOLICITED_STATUS,
                                  adapter->pool.status_read_req);
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND,
-                                 0, adapter->pool.scsi_abort);
+                                 adapter->pool.scsi_abort);
        if (IS_ERR(req)) {
                req = NULL;
                goto out;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
 
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_GENERIC,
-                                 ZFCP_REQ_AUTO_CLEANUP, pool);
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_GENERIC, pool);
+
        if (IS_ERR(req)) {
                ret = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        ret = zfcp_fsf_setup_ct_els_sbals(req, ct->req, ct->resp,
                                          FSF_MAX_SBALS_PER_REQ);
        if (ret)
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_ELS,
-                                 ZFCP_REQ_AUTO_CLEANUP, NULL);
+
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_ELS, NULL);
+
        if (IS_ERR(req)) {
                ret = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        ret = zfcp_fsf_setup_ct_els_sbals(req, els->req, els->resp, 2);
 
        if (ret)
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
-       req = zfcp_fsf_req_create(adapter,
-                                 FSF_QTCB_EXCHANGE_CONFIG_DATA,
-                                 ZFCP_REQ_AUTO_CLEANUP,
+
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out_unlock;
 
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA,
-                                 0, NULL);
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA, NULL);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out_unlock;
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
+
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out_unlock;
 
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, 0,
-                                 NULL);
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, NULL);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out_unlock;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
 
-       req = zfcp_fsf_req_create(adapter,
-                                 FSF_QTCB_OPEN_PORT_WITH_DID,
-                                 ZFCP_REQ_AUTO_CLEANUP,
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_PORT_WITH_DID,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
         sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
         sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
                goto out;
 
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
 
-       req = zfcp_fsf_req_create(adapter,
-                                 FSF_QTCB_OPEN_PORT_WITH_DID,
-                                 ZFCP_REQ_AUTO_CLEANUP,
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_PORT_WITH_DID,
                                  adapter->pool.erp_req);
+
        if (unlikely(IS_ERR(req))) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
                goto out;
 
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (unlikely(IS_ERR(req))) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
                goto out;
 
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PHYSICAL_PORT,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
                goto out;
 
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_LUN,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
         sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
         sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
+
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_LUN,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.erp_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        sbale = zfcp_qdio_sbale_req(req);
        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
                atomic_inc(&adapter->qdio_outb_full);
                goto out;
        }
+
        req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND,
-                                 ZFCP_REQ_AUTO_CLEANUP,
                                  adapter->pool.scsi_req);
+
        if (IS_ERR(req)) {
                retval = PTR_ERR(req);
                goto out;
        }
 
+       req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
        zfcp_unit_get(unit);
        req->unit = unit;
        req->data = scsi_cmnd;
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
-       req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, 0,
+
+       req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND,
                                  adapter->pool.scsi_req);
+
        if (IS_ERR(req)) {
                req = NULL;
                goto out;
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;
 
-       req = zfcp_fsf_req_create(adapter, fsf_cfdc->command, 0, NULL);
+       req = zfcp_fsf_req_create(adapter, fsf_cfdc->command, NULL);
        if (IS_ERR(req)) {
                retval = -EPERM;
                goto out;