Skip to content

Commit

Permalink
commit: Switch commit_run() to byte-based
Browse files Browse the repository at this point in the history
We are gradually converting to byte-based interfaces, as they are
easier to reason about than sector-based.  Change the internal
loop iteration of committing to track by bytes instead of sectors
(although we are still guaranteed that we iterate by steps that
are sector-aligned).

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
ebblake authored and kevmw committed Jul 10, 2017
1 parent d8a9858 commit 317a667
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions block/commit.c
Expand Up @@ -143,17 +143,16 @@ static void coroutine_fn commit_run(void *opaque)
{
CommitBlockJob *s = opaque;
CommitCompleteData *data;
int64_t sector_num, end;
int64_t offset;
uint64_t delay_ns = 0;
int ret = 0;
int n = 0;
int n = 0; /* sectors */
void *buf = NULL;
int bytes_written = 0;
int64_t base_len;

ret = s->common.len = blk_getlength(s->top);


if (s->common.len < 0) {
goto out;
}
Expand All @@ -170,10 +169,9 @@ static void coroutine_fn commit_run(void *opaque)
}
}

end = s->common.len >> BDRV_SECTOR_BITS;
buf = blk_blockalign(s->top, COMMIT_BUFFER_SIZE);

for (sector_num = 0; sector_num < end; sector_num += n) {
for (offset = 0; offset < s->common.len; offset += n * BDRV_SECTOR_SIZE) {
bool copy;

/* Note that even when no rate limit is applied we need to yield
Expand All @@ -185,15 +183,13 @@ static void coroutine_fn commit_run(void *opaque)
}
/* Copy if allocated above the base */
ret = bdrv_is_allocated_above(blk_bs(s->top), blk_bs(s->base),
sector_num,
offset / BDRV_SECTOR_SIZE,
COMMIT_BUFFER_SIZE / BDRV_SECTOR_SIZE,
&n);
copy = (ret == 1);
trace_commit_one_iteration(s, sector_num * BDRV_SECTOR_SIZE,
n * BDRV_SECTOR_SIZE, ret);
trace_commit_one_iteration(s, offset, n * BDRV_SECTOR_SIZE, ret);
if (copy) {
ret = commit_populate(s->top, s->base,
sector_num * BDRV_SECTOR_SIZE,
ret = commit_populate(s->top, s->base, offset,
n * BDRV_SECTOR_SIZE, buf);
bytes_written += n * BDRV_SECTOR_SIZE;
}
Expand Down

0 comments on commit 317a667

Please sign in to comment.