Message ID | 1463227273-27523-5-git-send-email-den@openvz.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05/14/2016 06:01 AM, Denis V. Lunev wrote: > Signed-off-by: Denis V. Lunev <den@openvz.org> > CC: Kevin Wolf <kwolf@redhat.com> > --- > block/qcow2.c | 5 +++++ > trace-events | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/block/qcow2.c b/block/qcow2.c > index 9a54bbd..97bf870 100644 > --- a/block/qcow2.c > +++ b/block/qcow2.c > @@ -2435,6 +2435,9 @@ static coroutine_fn int qcow2_co_write_zeroes(BlockDriverState *bs, > int head = sector_num % s->cluster_sectors; > int tail = (sector_num + nb_sectors) % s->cluster_sectors; > > + trace_qcow2_write_zeroes_start_req(qemu_coroutine_self(), sector_num, > + nb_sectors); > + Can we trace these by byte locations rather than by sector count? Ultimately, I think we want to move write_zeroes to a byte-based interface, even if we still assert internally that it is at least sector-aligned.
On 05/16/2016 07:32 PM, Eric Blake wrote: > On 05/14/2016 06:01 AM, Denis V. Lunev wrote: >> Signed-off-by: Denis V. Lunev <den@openvz.org> >> CC: Kevin Wolf <kwolf@redhat.com> >> --- >> block/qcow2.c | 5 +++++ >> trace-events | 2 ++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/block/qcow2.c b/block/qcow2.c >> index 9a54bbd..97bf870 100644 >> --- a/block/qcow2.c >> +++ b/block/qcow2.c >> @@ -2435,6 +2435,9 @@ static coroutine_fn int qcow2_co_write_zeroes(BlockDriverState *bs, >> int head = sector_num % s->cluster_sectors; >> int tail = (sector_num + nb_sectors) % s->cluster_sectors; >> >> + trace_qcow2_write_zeroes_start_req(qemu_coroutine_self(), sector_num, >> + nb_sectors); >> + > Can we trace these by byte locations rather than by sector count? > Ultimately, I think we want to move write_zeroes to a byte-based > interface, even if we still assert internally that it is at least > sector-aligned. > we can, but this patches traces for qcow2_co_writev static coroutine_fn int qcow2_co_writev(BlockDriverState *bs, int64_t sector_num, int remaining_sectors, QEMUIOVector *qiov) { [...] trace_qcow2_writev_start_req(qemu_coroutine_self(), sector_num, remaining_sectors); Thus I'd better either stick to this implementation or change all tracepoints in QEMU code.
diff --git a/block/qcow2.c b/block/qcow2.c index 9a54bbd..97bf870 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2435,6 +2435,9 @@ static coroutine_fn int qcow2_co_write_zeroes(BlockDriverState *bs, int head = sector_num % s->cluster_sectors; int tail = (sector_num + nb_sectors) % s->cluster_sectors; + trace_qcow2_write_zeroes_start_req(qemu_coroutine_self(), sector_num, + nb_sectors); + if (head != 0 || tail != 0) { int64_t cl_start = sector_num - head; @@ -2457,6 +2460,8 @@ static coroutine_fn int qcow2_co_write_zeroes(BlockDriverState *bs, qemu_co_mutex_lock(&s->lock); } + trace_qcow2_write_zeroes(qemu_coroutine_self(), sector_num, nb_sectors); + /* Whatever is left can use real zero clusters */ ret = qcow2_zero_clusters(bs, sector_num << BDRV_SECTOR_BITS, nb_sectors); qemu_co_mutex_unlock(&s->lock); diff --git a/trace-events b/trace-events index 4fce005..627f34f 100644 --- a/trace-events +++ b/trace-events @@ -612,6 +612,8 @@ qcow2_writev_done_req(void *co, int ret) "co %p ret %d" qcow2_writev_start_part(void *co) "co %p" qcow2_writev_done_part(void *co, int cur_nr_sectors) "co %p cur_nr_sectors %d" qcow2_writev_data(void *co, uint64_t offset) "co %p offset %" PRIx64 +qcow2_write_zeroes_start_req(void *co, int64_t sector, int nb_sectors) "co %p sector %" PRIx64 " nb_sectors %d" +qcow2_write_zeroes(void *co, int64_t sector, int nb_sectors) "co %p sector %" PRIx64 " nb_sectors %d" # block/qcow2-cluster.c qcow2_alloc_clusters_offset(void *co, uint64_t offset, int num) "co %p offset %" PRIx64 " num %d"
Signed-off-by: Denis V. Lunev <den@openvz.org> CC: Kevin Wolf <kwolf@redhat.com> --- block/qcow2.c | 5 +++++ trace-events | 2 ++ 2 files changed, 7 insertions(+)