From 27bb2cbc2ed6e5f3309a4abb1d7f74e3c4a21830 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Wed, 20 Jun 2018 10:54:04 +0200 Subject: [PATCH] vfs_default: fix async fsync idle/busy time profiling Signed-off-by: Ralph Boehme Reviewed-by: Stefan Metzmacher --- source3/include/smbprofile.h | 2 +- source3/modules/vfs_default.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h index 327c16ac2d9..e33f77e70e3 100644 --- a/source3/include/smbprofile.h +++ b/source3/include/smbprofile.h @@ -63,7 +63,7 @@ struct tevent_context; SMBPROFILE_STATS_BYTES(syscall_recvfile) \ SMBPROFILE_STATS_BASIC(syscall_rename) \ SMBPROFILE_STATS_BASIC(syscall_rename_at) \ - SMBPROFILE_STATS_BASIC(syscall_asys_fsync) \ + SMBPROFILE_STATS_BYTES(syscall_asys_fsync) \ SMBPROFILE_STATS_BASIC(syscall_stat) \ SMBPROFILE_STATS_BASIC(syscall_fstat) \ SMBPROFILE_STATS_BASIC(syscall_lstat) \ diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index cbe505dd1d1..f078cef9422 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -886,7 +886,7 @@ struct vfswrap_fsync_state { int fd; struct vfs_aio_state vfs_aio_state; - SMBPROFILE_BASIC_ASYNC_STATE(profile_basic); + SMBPROFILE_BYTES_ASYNC_STATE(profile_bytes); }; static void vfs_fsync_do(void *private_data); @@ -909,8 +909,9 @@ static struct tevent_req *vfswrap_fsync_send(struct vfs_handle_struct *handle, state->ret = -1; state->fd = fsp->fh->fd; - SMBPROFILE_BASIC_ASYNC_START(syscall_asys_fsync, profile_p, - state->profile_basic); + SMBPROFILE_BYTES_ASYNC_START(syscall_asys_fsync, profile_p, + state->profile_bytes, 0); + SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->profile_bytes); subreq = pthreadpool_tevent_job_send( state, ev, handle->conn->sconn->pool, vfs_fsync_do, state); @@ -931,6 +932,8 @@ static void vfs_fsync_do(void *private_data) struct timespec start_time; struct timespec end_time; + SMBPROFILE_BYTES_ASYNC_SET_BUSY(state->profile_bytes); + PROFILE_TIMESTAMP(&start_time); do { @@ -944,6 +947,8 @@ static void vfs_fsync_do(void *private_data) PROFILE_TIMESTAMP(&end_time); state->vfs_aio_state.duration = nsec_time_diff(&end_time, &start_time); + + SMBPROFILE_BYTES_ASYNC_SET_IDLE(state->profile_bytes); } static int vfs_fsync_state_destructor(struct vfswrap_fsync_state *state) @@ -961,7 +966,7 @@ static void vfs_fsync_done(struct tevent_req *subreq) ret = pthreadpool_tevent_job_recv(subreq); TALLOC_FREE(subreq); - SMBPROFILE_BASIC_ASYNC_END(state->profile_basic); + SMBPROFILE_BYTES_ASYNC_END(state->profile_bytes); talloc_set_destructor(state, NULL); if (tevent_req_error(req, ret)) { return; -- 2.47.3