lib/ftl: allocate ftl_io inside ftl_io_user_init
On the user IO path, the flow always follows the same procedure: allocate ftl_io and initialize it using ftl_io_user_init. There's no point in separating these two actions. Change-Id: I578347ccc7c85e5945368dd6bf76c58985af3939 Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455523 Reviewed-by: Wojciech Malikowski <wojciech.malikowski@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
cee780d504
commit
8e6a5601e4
@ -1629,12 +1629,11 @@ spdk_ftl_write(struct spdk_ftl_dev *dev, struct spdk_io_channel *ch, uint64_t lb
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
io = ftl_io_alloc(ch);
|
||||
io = ftl_io_user_init(ch, lba, lba_cnt, iov, iov_cnt, cb_fn, cb_arg, FTL_IO_WRITE);
|
||||
if (!io) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ftl_io_user_init(dev, io, lba, lba_cnt, iov, iov_cnt, cb_fn, cb_arg, FTL_IO_WRITE);
|
||||
ftl_io_write(io);
|
||||
|
||||
return 0;
|
||||
@ -1682,12 +1681,11 @@ spdk_ftl_read(struct spdk_ftl_dev *dev, struct spdk_io_channel *ch, uint64_t lba
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
io = ftl_io_alloc(ch);
|
||||
io = ftl_io_user_init(ch, lba, lba_cnt, iov, iov_cnt, cb_fn, cb_arg, FTL_IO_READ);
|
||||
if (!io) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ftl_io_user_init(dev, io, lba, lba_cnt, iov, iov_cnt, cb_fn, cb_arg, FTL_IO_READ);
|
||||
ftl_io_read(io);
|
||||
return 0;
|
||||
}
|
||||
|
@ -273,13 +273,17 @@ ftl_io_erase_init(struct ftl_band *band, size_t lbk_cnt, spdk_ftl_fn cb)
|
||||
return io;
|
||||
}
|
||||
|
||||
void
|
||||
ftl_io_user_init(struct spdk_ftl_dev *dev, struct ftl_io *io, uint64_t lba, size_t lbk_cnt,
|
||||
struct iovec *iov, size_t iov_cnt,
|
||||
spdk_ftl_fn cb_fn, void *cb_arg, int type)
|
||||
struct ftl_io *
|
||||
ftl_io_user_init(struct spdk_io_channel *_ioch, uint64_t lba, size_t lbk_cnt, struct iovec *iov,
|
||||
size_t iov_cnt, spdk_ftl_fn cb_fn, void *cb_arg, int type)
|
||||
{
|
||||
if (io->flags & FTL_IO_INITIALIZED) {
|
||||
return;
|
||||
struct ftl_io_channel *ioch = spdk_io_channel_get_ctx(_ioch);
|
||||
struct spdk_ftl_dev *dev = ioch->dev;
|
||||
struct ftl_io *io;
|
||||
|
||||
io = ftl_io_alloc(_ioch);
|
||||
if (spdk_unlikely(!io)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ftl_io_init(io, dev, cb_fn, cb_arg, 0, type);
|
||||
@ -295,6 +299,8 @@ ftl_io_user_init(struct spdk_ftl_dev *dev, struct ftl_io *io, uint64_t lba, size
|
||||
}
|
||||
|
||||
ftl_trace_lba_io_init(io->dev, io);
|
||||
|
||||
return io;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -275,13 +275,12 @@ void ftl_io_advance(struct ftl_io *io, size_t lbk_cnt);
|
||||
size_t ftl_iovec_num_lbks(struct iovec *iov, size_t iov_cnt);
|
||||
void *ftl_io_iovec_addr(struct ftl_io *io);
|
||||
size_t ftl_io_iovec_len_left(struct ftl_io *io);
|
||||
struct ftl_io *ftl_io_init_internal(const struct ftl_io_init_opts *opts);
|
||||
struct ftl_io *ftl_io_rwb_init(struct spdk_ftl_dev *dev, struct ftl_band *band,
|
||||
struct ftl_rwb_batch *entry, spdk_ftl_fn cb);
|
||||
struct ftl_io *ftl_io_erase_init(struct ftl_band *band, size_t lbk_cnt, spdk_ftl_fn cb);
|
||||
void ftl_io_user_init(struct spdk_ftl_dev *dev, struct ftl_io *io, uint64_t lba, size_t lbk_cnt,
|
||||
struct iovec *iov, size_t iov_cnt,
|
||||
spdk_ftl_fn fn, void *cb_arg, int type);
|
||||
struct ftl_io *ftl_io_user_init(struct spdk_io_channel *ioch, uint64_t lba, size_t lbk_cnt,
|
||||
struct iovec *iov, size_t iov_cnt, spdk_ftl_fn cb_fn,
|
||||
void *cb_arg, int type);
|
||||
void *ftl_io_get_md(const struct ftl_io *io);
|
||||
void ftl_io_complete(struct ftl_io *io);
|
||||
void ftl_io_shrink_iovec(struct ftl_io *io, size_t lbk_cnt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user