]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Fix O_APPEND for Linux 3.15 and older kernels
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 27 Apr 2022 19:56:17 +0000 (12:56 -0700)
committerGitHub <noreply@github.com>
Wed, 27 Apr 2022 19:56:17 +0000 (12:56 -0700)
When using a Linux kernel which predates the iov_iter interface the
O_APPEND flag should be applied in zpl_aio_write() via the call to
generic_write_checks().  The updated pos variable  was incorrectly
ignored resulting in the current offset being used.

This issue should only realistically impact the RHEL/CentOS 7.x
kernels which are based on Linux 3.10.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #13370
Closes #13377

module/os/linux/zfs/zpl_file.c

index 78cf7e7ef10ed54f3b8606c1955553d94ea105e9..2d7864ddb3c250c562a0bae5bf2f76355f1b8d2e 100644 (file)
@@ -417,6 +417,8 @@ zpl_aio_write(struct kiocb *kiocb, const struct iovec *iov,
        if (ret)
                return (ret);
 
+       kiocb->ki_pos = pos;
+
        zfs_uio_t uio;
        zfs_uio_iovec_init(&uio, iov, nr_segs, kiocb->ki_pos, UIO_USERSPACE,
            count, 0);