nvmet-file: fix nvmet_file_flush() always returning an error
Presently, nvmet_file_flush() always returns a call to errno_to_nvme_status() but that helper doesn't take into account the case when errno=0. So nvmet_file_flush() always returns an error code. All other callers of errno_to_nvme_status() check for success before calling it. To fix this, ensure errno_to_nvme_status() returns success if the errno is zero. This should prevent future mistakes like this from happening. Fixes: c6aa3542e010 ("nvmet: add error log support for file backend") Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
This commit is contained in:
parent
86b9a63e59
commit
cfc1a1af56
@ -46,6 +46,9 @@ inline u16 errno_to_nvme_status(struct nvmet_req *req, int errno)
|
|||||||
u16 status;
|
u16 status;
|
||||||
|
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
|
case 0:
|
||||||
|
status = NVME_SC_SUCCESS;
|
||||||
|
break;
|
||||||
case -ENOSPC:
|
case -ENOSPC:
|
||||||
req->error_loc = offsetof(struct nvme_rw_command, length);
|
req->error_loc = offsetof(struct nvme_rw_command, length);
|
||||||
status = NVME_SC_CAP_EXCEEDED | NVME_SC_DNR;
|
status = NVME_SC_CAP_EXCEEDED | NVME_SC_DNR;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user