vfs_default: fix async fsync idle/busy time profiling
authorRalph Boehme <slow@samba.org>
Wed, 20 Jun 2018 08:54:04 +0000 (10:54 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 24 Jul 2018 22:23:13 +0000 (00:23 +0200)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/include/smbprofile.h
source3/modules/vfs_default.c

index 327c16ac2d93162b0935709b17a56d89a17c658f..e33f77e70e353359d0a958aebff0706d77df2773 100644 (file)
@@ -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) \
index cbe505dd1d1fd06655629442e34d84a36f1925f9..f078cef9422a92743954f29adcdf15ed3e95d8fe 100644 (file)
@@ -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;