diff options
-rw-r--r-- | sys/amd64/linux/linux_dummy.c | 1 | ||||
-rw-r--r-- | sys/amd64/linux32/linux32_dummy.c | 1 | ||||
-rw-r--r-- | sys/arm64/linux/linux_dummy.c | 1 | ||||
-rw-r--r-- | sys/compat/linux/linux_file.c | 16 | ||||
-rw-r--r-- | sys/compat/linux/linux_file.h | 7 | ||||
-rw-r--r-- | sys/i386/linux/linux_dummy.c | 1 |
6 files changed, 23 insertions, 4 deletions
diff --git a/sys/amd64/linux/linux_dummy.c b/sys/amd64/linux/linux_dummy.c index 8384e6376bb9..32922da113c6 100644 --- a/sys/amd64/linux/linux_dummy.c +++ b/sys/amd64/linux/linux_dummy.c @@ -99,7 +99,6 @@ DUMMY(migrate_pages); DUMMY(unshare); /* Linux 2.6.17: */ DUMMY(splice); -DUMMY(sync_file_range); DUMMY(tee); DUMMY(vmsplice); /* Linux 2.6.18: */ diff --git a/sys/amd64/linux32/linux32_dummy.c b/sys/amd64/linux32/linux32_dummy.c index 23fba4f72a00..1f8f5aa1c24f 100644 --- a/sys/amd64/linux32/linux32_dummy.c +++ b/sys/amd64/linux32/linux32_dummy.c @@ -105,7 +105,6 @@ DUMMY(migrate_pages); DUMMY(unshare); /* Linux 2.6.17: */ DUMMY(splice); -DUMMY(sync_file_range); DUMMY(tee); DUMMY(vmsplice); /* Linux 2.6.18: */ diff --git a/sys/arm64/linux/linux_dummy.c b/sys/arm64/linux/linux_dummy.c index 73cadbcf7e42..ca43f5d35a05 100644 --- a/sys/arm64/linux/linux_dummy.c +++ b/sys/arm64/linux/linux_dummy.c @@ -101,7 +101,6 @@ DUMMY(migrate_pages); DUMMY(unshare); /* Linux 2.6.17: */ DUMMY(splice); -DUMMY(sync_file_range); DUMMY(tee); DUMMY(vmsplice); /* Linux 2.6.18: */ diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c index 57723e1aafd7..20d58ea58346 100644 --- a/sys/compat/linux/linux_file.c +++ b/sys/compat/linux/linux_file.c @@ -908,6 +908,22 @@ linux_fdatasync(td, uap) } int +linux_sync_file_range(td, uap) + struct thread *td; + struct linux_sync_file_range_args *uap; +{ + + if (uap->offset < 0 || uap->nbytes < 0 || + (uap->flags & ~(LINUX_SYNC_FILE_RANGE_WAIT_BEFORE | + LINUX_SYNC_FILE_RANGE_WRITE | + LINUX_SYNC_FILE_RANGE_WAIT_AFTER)) != 0) { + return (EINVAL); + } + + return (kern_fsync(td, uap->fd, false)); +} + +int linux_pread(struct thread *td, struct linux_pread_args *uap) { struct vnode *vp; diff --git a/sys/compat/linux/linux_file.h b/sys/compat/linux/linux_file.h index 8742fa27b278..40384c52a066 100644 --- a/sys/compat/linux/linux_file.h +++ b/sys/compat/linux/linux_file.h @@ -134,4 +134,11 @@ #define LINUX_RENAME_EXCHANGE 0x00000002 #define LINUX_RENAME_WHITEOUT 0x00000004 +/* + * sync_file_range flags + */ +#define LINUX_SYNC_FILE_RANGE_WAIT_BEFORE 1 +#define LINUX_SYNC_FILE_RANGE_WRITE 2 +#define LINUX_SYNC_FILE_RANGE_WAIT_AFTER 4 + #endif /* !_LINUX_FILE_H_ */ diff --git a/sys/i386/linux/linux_dummy.c b/sys/i386/linux/linux_dummy.c index f916992e48c4..4ed88cef9e82 100644 --- a/sys/i386/linux/linux_dummy.c +++ b/sys/i386/linux/linux_dummy.c @@ -101,7 +101,6 @@ DUMMY(migrate_pages); DUMMY(unshare); /* Linux 2.6.17: */ DUMMY(splice); -DUMMY(sync_file_range); DUMMY(tee); DUMMY(vmsplice); /* Linux 2.6.18: */ |