dif: Merge _dif_sgl_advance and _dif_sgl_fast_forward

_dif_sgl_fast_forward covers _dif_sgl_advance. Hence this patch
merges two into _dif_sgl_fast_forward and renames it to
_dif_sgl_advance.

Change-Id: I4949f3028b08cec8df8c9037c983d840d0a1eaaa
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/456184
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Shuhei Matsumoto 2019-05-29 18:11:16 +09:00 committed by Jim Harris
parent efa4259f82
commit 9e68223c81

View File

@ -63,15 +63,18 @@ _dif_sgl_init(struct _dif_sgl *s, struct iovec *iovs, int iovcnt)
s->total_size = 0;
}
static inline void
static void
_dif_sgl_advance(struct _dif_sgl *s, uint32_t step)
{
s->iov_offset += step;
if (s->iov_offset == s->iov->iov_len) {
while (s->iovcnt != 0) {
if (s->iov_offset < s->iov->iov_len) {
break;
}
s->iov_offset -= s->iov->iov_len;
s->iov++;
assert(s->iovcnt > 0);
s->iovcnt--;
s->iov_offset = 0;
}
}
@ -86,20 +89,6 @@ _dif_sgl_get_buf(struct _dif_sgl *s, void **_buf, uint32_t *_buf_len)
}
}
static void
_dif_sgl_fast_forward(struct _dif_sgl *s, uint32_t offset)
{
s->iov_offset += offset;
while (s->iovcnt != 0) {
if (s->iov_offset < s->iov->iov_len) {
break;
}
s->iov_offset -= s->iov->iov_len;
s->iov++;
s->iovcnt--;
}
}
static inline bool
_dif_sgl_append(struct _dif_sgl *s, uint8_t *data, uint32_t data_len)
@ -878,7 +867,7 @@ _dif_inject_error(struct _dif_sgl *sgl,
uint32_t offset_in_block, buf_len;
void *buf;
_dif_sgl_fast_forward(sgl, block_size * inject_offset_blocks);
_dif_sgl_advance(sgl, block_size * inject_offset_blocks);
offset_in_block = 0;
@ -1361,10 +1350,10 @@ dif_set_md_interleave_iovs_split(struct iovec *iovs, int iovcnt,
offset_blocks = data_offset / data_block_size;
head_unalign = data_offset % data_block_size;
_dif_sgl_fast_forward(&buf_sgl, offset_blocks * ctx->block_size);
_dif_sgl_advance(&buf_sgl, offset_blocks * ctx->block_size);
while (offset_blocks < num_blocks) {
_dif_sgl_fast_forward(&buf_sgl, head_unalign);
_dif_sgl_advance(&buf_sgl, head_unalign);
remaining = data_block_size - head_unalign;
while (remaining != 0) {
@ -1377,7 +1366,7 @@ dif_set_md_interleave_iovs_split(struct iovec *iovs, int iovcnt,
_dif_sgl_advance(&buf_sgl, buf_len);
remaining -= buf_len;
}
_dif_sgl_fast_forward(&buf_sgl, ctx->md_size);
_dif_sgl_advance(&buf_sgl, ctx->md_size);
offset_blocks++;
head_unalign = 0;
@ -1483,7 +1472,7 @@ dif_generate_stream_split(struct iovec *iovs, int iovcnt,
return -ERANGE;
}
_dif_sgl_fast_forward(&sgl, offset);
_dif_sgl_advance(&sgl, offset);
for (i = 0; i < num_blocks; i++) {
_dif_generate_split(&sgl, offset_blocks + i, ctx);