From: Ralph Boehme Date: Sun, 24 Nov 2024 07:10:25 +0000 (+0100) Subject: vfs_aio_fork: implement POSIX append-IO X-Git-Tag: tdb-1.4.13~220 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5f265cb77d732d4d1527d092a056dfaf48362888;p=thirdparty%2Fsamba.git vfs_aio_fork: implement POSIX append-IO Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c index 87dcbdd6270..61ba71b5c59 100644 --- a/source3/modules/vfs_aio_fork.c +++ b/source3/modules/vfs_aio_fork.c @@ -98,6 +98,7 @@ fail: enum cmd_type { READ_CMD, + PWRITE_CMD, WRITE_CMD, FSYNC_CMD }; @@ -110,8 +111,11 @@ static const char *cmd_type_str(enum cmd_type cmd) case READ_CMD: result = "READ"; break; + case PWRITE_CMD: + result = "PWRITE"; + break; case WRITE_CMD: - result = "WRITE"; + result = "PRITE"; break; case FSYNC_CMD: result = "FSYNC"; @@ -353,11 +357,15 @@ static void aio_child_loop(int sockfd, struct mmap_area *map) #endif #endif break; - case WRITE_CMD: + case PWRITE_CMD: ret_struct.size = sys_pwrite_full( fd, discard_const(map->ptr), cmd_struct.n, cmd_struct.offset); break; + case WRITE_CMD: + ret_struct.size = sys_write_full( + fd, discard_const(map->ptr), cmd_struct.n); + break; case FSYNC_CMD: ret_struct.size = fsync(fd); break; @@ -709,7 +717,11 @@ static struct tevent_req *aio_fork_pwrite_send( ZERO_STRUCT(cmd); cmd.n = n; cmd.offset = offset; - cmd.cmd = WRITE_CMD; + if (fsp->fsp_flags.posix_append) { + cmd.cmd = WRITE_CMD; + } else { + cmd.cmd = PWRITE_CMD; + } cmd.erratic_testing_mode = config->erratic_testing_mode; DEBUG(10, ("sending fd %d to child %d\n", fsp_get_io_fd(fsp),