summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmir Goldstein <amir73il@gmail.com>2023-08-29 16:25:47 +0300
committerAmir Goldstein <amir73il@gmail.com>2023-10-31 00:12:54 +0200
commit5f034d34737e8c440bbbd13e5ef283793d841140 (patch)
tree9024df4e88278d2a611e3101abd9809f3303d293
parentdb5b5e83eee46ec5e3d685282c9e4f38946cb0ea (diff)
downloadlinux-5f034d34737e8c440bbbd13e5ef283793d841140.tar.gz
linux-5f034d34737e8c440bbbd13e5ef283793d841140.tar.bz2
linux-5f034d34737e8c440bbbd13e5ef283793d841140.zip
ovl: propagate IOCB_APPEND flag on writes to realfile
If ovl file is opened O_APPEND, the underlying realfile is also opened O_APPEND, so it makes sense to propagate the IOCB_APPEND flags on sync writes to realfile, just as we do with aio writes. Effectively, because sync ovl writes are protected by inode lock, this change only makes a difference if the realfile is written to (size extending writes) from underneath overlayfs. The behavior in this case is undefined, so it is ok if we change the behavior (to fail the ovl IOCB_APPEND write). Signed-off-by: Amir Goldstein <amir73il@gmail.com>
-rw-r--r--fs/overlayfs/file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 4dccef12a33a..32eb90713ff8 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -264,7 +264,7 @@ static void ovl_file_accessed(struct file *file)
}
#define OVL_IOCB_MASK \
- (IOCB_NOWAIT | IOCB_HIPRI | IOCB_DSYNC | IOCB_SYNC)
+ (IOCB_NOWAIT | IOCB_HIPRI | IOCB_DSYNC | IOCB_SYNC | IOCB_APPEND)
static rwf_t iocb_to_rw_flags(int flags)
{