svn commit: r359604 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux

Mark Johnston markj at FreeBSD.org
Fri Apr 3 16:29:00 UTC 2020


Author: markj
Date: Fri Apr  3 16:28:39 2020
New Revision: 359604
URL: https://svnweb.freebsd.org/changeset/base/359604

Log:
  MFC r355754, r355807 (trasz):
  Add sync_file_range(2) implementation to linux(4).

Modified:
  stable/12/sys/amd64/linux/linux_dummy.c
  stable/12/sys/amd64/linux32/linux32_dummy.c
  stable/12/sys/arm64/linux/linux_dummy.c
  stable/12/sys/compat/linux/linux_file.c
  stable/12/sys/compat/linux/linux_file.h
  stable/12/sys/i386/linux/linux_dummy.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_dummy.c	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/amd64/linux/linux_dummy.c	Fri Apr  3 16:28:39 2020	(r359604)
@@ -100,7 +100,6 @@ DUMMY(unshare);
 /* Linux 2.6.17: */
 DUMMY(splice);
 DUMMY(tee);
-DUMMY(sync_file_range);
 DUMMY(vmsplice);
 /* Linux 2.6.18: */
 DUMMY(move_pages);

Modified: stable/12/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_dummy.c	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/amd64/linux32/linux32_dummy.c	Fri Apr  3 16:28:39 2020	(r359604)
@@ -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: */

Modified: stable/12/sys/arm64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_dummy.c	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/arm64/linux/linux_dummy.c	Fri Apr  3 16:28:39 2020	(r359604)
@@ -102,7 +102,6 @@ DUMMY(unshare);
 /* Linux 2.6.17: */
 DUMMY(splice);
 DUMMY(tee);
-DUMMY(sync_file_range);
 DUMMY(vmsplice);
 /* Linux 2.6.18: */
 DUMMY(move_pages);

Modified: stable/12/sys/compat/linux/linux_file.c
==============================================================================
--- stable/12/sys/compat/linux/linux_file.c	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/compat/linux/linux_file.c	Fri Apr  3 16:28:39 2020	(r359604)
@@ -997,10 +997,22 @@ linux_linkat(struct thread *td, struct linux_linkat_ar
 }
 
 int
-linux_fdatasync(td, uap)
-	struct thread *td;
-	struct linux_fdatasync_args *uap;
+linux_fdatasync(struct thread *td, struct linux_fdatasync_args *uap)
 {
+
+	return (kern_fsync(td, uap->fd, false));
+}
+
+int
+linux_sync_file_range(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));
 }

Modified: stable/12/sys/compat/linux/linux_file.h
==============================================================================
--- stable/12/sys/compat/linux/linux_file.h	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/compat/linux/linux_file.h	Fri Apr  3 16:28:39 2020	(r359604)
@@ -127,4 +127,11 @@
 #define	LINUX_F_UNLCK		2
 #endif
 
+/*
+ * 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_ */

Modified: stable/12/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/i386/linux/linux_dummy.c	Fri Apr  3 16:19:07 2020	(r359603)
+++ stable/12/sys/i386/linux/linux_dummy.c	Fri Apr  3 16:28:39 2020	(r359604)
@@ -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: */


More information about the svn-src-stable-12 mailing list