Merge branch 'nvme-4.19' of git://git.infradead.org/nvme into for-linus
Pull NVMe fixes from Christoph. * 'nvme-4.19' of git://git.infradead.org/nvme: nvmet: free workqueue object if module init fails nvme-fcloop: Fix dropped LS's to removed target port nvme-pci: add a memory barrier to nvme_dbbuf_update_and_check_event
This commit is contained in:
commit
52bd456a66
@ -316,6 +316,14 @@ static bool nvme_dbbuf_update_and_check_event(u16 value, u32 *dbbuf_db,
|
||||
old_value = *dbbuf_db;
|
||||
*dbbuf_db = value;
|
||||
|
||||
/*
|
||||
* Ensure that the doorbell is updated before reading the event
|
||||
* index from memory. The controller needs to provide similar
|
||||
* ordering to ensure the envent index is updated before reading
|
||||
* the doorbell.
|
||||
*/
|
||||
mb();
|
||||
|
||||
if (!nvme_dbbuf_need_event(*dbbuf_ei, value, old_value))
|
||||
return false;
|
||||
}
|
||||
|
@ -1210,7 +1210,7 @@ static int __init nvmet_init(void)
|
||||
|
||||
error = nvmet_init_discovery();
|
||||
if (error)
|
||||
goto out;
|
||||
goto out_free_work_queue;
|
||||
|
||||
error = nvmet_init_configfs();
|
||||
if (error)
|
||||
@ -1219,6 +1219,8 @@ static int __init nvmet_init(void)
|
||||
|
||||
out_exit_discovery:
|
||||
nvmet_exit_discovery();
|
||||
out_free_work_queue:
|
||||
destroy_workqueue(buffered_io_wq);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
@ -311,7 +311,7 @@ fcloop_tgt_lsrqst_done_work(struct work_struct *work)
|
||||
struct fcloop_tport *tport = tls_req->tport;
|
||||
struct nvmefc_ls_req *lsreq = tls_req->lsreq;
|
||||
|
||||
if (tport->remoteport)
|
||||
if (!tport || tport->remoteport)
|
||||
lsreq->done(lsreq, tls_req->status);
|
||||
}
|
||||
|
||||
@ -329,6 +329,7 @@ fcloop_ls_req(struct nvme_fc_local_port *localport,
|
||||
|
||||
if (!rport->targetport) {
|
||||
tls_req->status = -ECONNREFUSED;
|
||||
tls_req->tport = NULL;
|
||||
schedule_work(&tls_req->work);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user