bdev/crypto: add crypto_io_fail()
There are lots of places when we need to abort accel sequence and complete bdev_io with a failed status, so move that code to a dedicated function. Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I5f6f4146c736d9c8e04b5667117d6e7ed824a654 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17088 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
This commit is contained in:
parent
454ee6be5e
commit
12492cb927
@ -76,6 +76,17 @@ static void vbdev_crypto_examine(struct spdk_bdev *bdev);
|
||||
static int vbdev_crypto_claim(const char *bdev_name);
|
||||
static void vbdev_crypto_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io);
|
||||
|
||||
static void
|
||||
crypto_io_fail(struct crypto_bdev_io *crypto_io)
|
||||
{
|
||||
struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(crypto_io);
|
||||
|
||||
/* This function can only be used to fail an IO that hasn't been sent to the base bdev,
|
||||
* otherwise accel sequence might have already been executed/aborted. */
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
}
|
||||
|
||||
static void
|
||||
crypto_write(struct crypto_io_channel *crypto_ch, struct spdk_bdev_io *bdev_io)
|
||||
{
|
||||
@ -101,8 +112,7 @@ crypto_write(struct crypto_io_channel *crypto_ch, struct spdk_bdev_io *bdev_io)
|
||||
vbdev_crypto_queue_io(bdev_io, CRYPTO_IO_ENCRYPT_DONE);
|
||||
} else {
|
||||
SPDK_ERRLOG("Failed to submit bdev_io!\n");
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -155,8 +165,7 @@ crypto_encrypt(struct crypto_io_channel *crypto_ch, struct spdk_bdev_io *bdev_io
|
||||
vbdev_crypto_queue_io(bdev_io, CRYPTO_IO_NEW);
|
||||
} else {
|
||||
SPDK_ERRLOG("Failed to submit bdev_io!\n");
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
|
||||
return;
|
||||
@ -219,8 +228,7 @@ vbdev_crypto_queue_io(struct spdk_bdev_io *bdev_io, enum crypto_io_resubmit_stat
|
||||
&crypto_io->bdev_io_wait);
|
||||
if (rc != 0) {
|
||||
SPDK_ERRLOG("Queue io failed in vbdev_crypto_queue_io, rc=%d.\n", rc);
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,8 +254,7 @@ crypto_read(struct crypto_io_channel *crypto_ch, struct spdk_bdev_io *bdev_io)
|
||||
vbdev_crypto_queue_io(bdev_io, CRYPTO_IO_DECRYPT_DONE);
|
||||
} else {
|
||||
SPDK_ERRLOG("Failed to submit bdev_io!\n");
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -266,8 +273,7 @@ crypto_read_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io,
|
||||
int rc;
|
||||
|
||||
if (!success) {
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -283,8 +289,7 @@ crypto_read_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io,
|
||||
vbdev_crypto_queue_io(bdev_io, CRYPTO_IO_NEW);
|
||||
} else {
|
||||
SPDK_ERRLOG("Failed to submit bdev_io!\n");
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
|
||||
return;
|
||||
@ -351,8 +356,8 @@ vbdev_crypto_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bde
|
||||
case SPDK_BDEV_IO_TYPE_WRITE_ZEROES:
|
||||
default:
|
||||
SPDK_ERRLOG("crypto: unknown I/O type %d\n", bdev_io->type);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
return;
|
||||
rc = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (rc != 0) {
|
||||
@ -361,8 +366,7 @@ vbdev_crypto_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bde
|
||||
vbdev_crypto_queue_io(bdev_io, CRYPTO_IO_NEW);
|
||||
} else {
|
||||
SPDK_ERRLOG("Failed to submit bdev_io!\n");
|
||||
spdk_accel_sequence_abort(crypto_io->seq);
|
||||
spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
|
||||
crypto_io_fail(crypto_io);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user