Part of the: https://sourceforge.net/p/smbnetfs/patches/3/ --- src/samba.h 2018-01-04 20:59:38.000000000 +0000 +++ src/samba.h 2018-01-31 14:48:19.375119000 +0000 @@ -16,6 +16,6 @@ samba_fd samba_open (const char *url, int flags, mode_t mode); samba_fd samba_creat (const char *url, mode_t mode); -ssize_t samba_read (samba_fd fd, off_t offset, void *buf, size_t bufsize); -ssize_t samba_write (samba_fd fd, off_t offset, void *buf, size_t bufsize); +ssize_t samba_read (samba_fd fd, off_t offset, char *buf, size_t bufsize); +ssize_t samba_write (samba_fd fd, off_t offset, const char *buf, size_t bufsize); int samba_close (samba_fd fd); int samba_unlink (const char *url); --- src/samba.c 2018-01-04 20:59:38.000000000 +0000 +++ src/samba.c 2018-01-31 14:49:26.546183000 +0000 @@ -255,5 +255,5 @@ } -ssize_t samba_read(samba_fd fd, off_t offset, void *buf, size_t bufsize){ +ssize_t samba_read(samba_fd fd, off_t offset, char *buf, size_t bufsize){ ssize_t result = 0; @@ -278,5 +278,5 @@ } -ssize_t samba_write(samba_fd fd, off_t offset, void *buf, size_t bufsize){ +ssize_t samba_write(samba_fd fd, off_t offset, const char *buf, size_t bufsize){ ssize_t result = 0; Constify the writing and reduce the number of calls to time(). -mi --- src/smb_conn.h 2018-01-04 20:59:38 +++ src/smb_conn.h 2018-01-31 14:55:24 @@ -46,5 +46,5 @@ ssize_t smb_conn_write(struct smb_conn_ctx *ctx, smb_conn_fd fd, off_t offset, - void *buf, size_t bufsize); + const void *buf, size_t bufsize); int smb_conn_close(struct smb_conn_ctx *ctx, smb_conn_fd fd); --- src/smb_conn.c 2018-01-04 20:59:38 +++ src/smb_conn.c 2018-01-31 14:54:37 @@ -630,6 +630,5 @@ pthread_mutex_lock(&ctx->mutex); - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_query( ctx, OPEN, @@ -676,6 +675,5 @@ pthread_mutex_lock(&ctx->mutex); - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_query( ctx, CREAT, @@ -719,6 +717,5 @@ pthread_mutex_lock(&ctx->mutex); if ((file->reopen_cmd == OPEN) && (file->ctx == ctx)){ - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_fd_query( ctx, READ, file, @@ -740,5 +737,5 @@ ssize_t smb_conn_write(struct smb_conn_ctx *ctx, smb_conn_fd fd, off_t offset, - void *buf, size_t bufsize){ + const void *buf, size_t bufsize){ int error; @@ -762,6 +759,5 @@ pthread_mutex_lock(&ctx->mutex); if ((file->reopen_cmd == OPEN) && (file->ctx == ctx)){ - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); memcpy(ctx->shmem_ptr, buf, bufsize); msync(ctx->shmem_ptr, bufsize, MS_SYNC); @@ -886,6 +882,5 @@ pthread_mutex_lock(&ctx->mutex); - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_query( ctx, OPENDIR, @@ -964,6 +959,5 @@ pthread_mutex_lock(&ctx->mutex); if ((file->reopen_cmd == OPENDIR) && (file->ctx == ctx)){ - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); /* we cant reopen directory with non-zero offset, so use */ @@ -1104,6 +1098,5 @@ pthread_mutex_lock(&ctx->mutex); if ((file->reopen_cmd == OPEN) && (file->ctx == ctx)){ - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_fd_query( ctx, FSTAT, file, @@ -1141,6 +1134,5 @@ pthread_mutex_lock(&ctx->mutex); if ((file->reopen_cmd == OPEN) && (file->ctx == ctx)){ - ctx->access_time = time(NULL); - file->access_time = time(NULL); + ctx->access_time = file->access_time = time(NULL); error = smb_conn_process_fd_query( ctx, FTRUNCATE, file,