Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Feb 2012 19:11:55 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r231145 - in stable/9/sys: amd64/linux32 compat/linux i386/linux
Message-ID:  <201202071911.q17JBtxI003203@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Tue Feb  7 19:11:54 2012
New Revision: 231145
URL: http://svn.freebsd.org/changeset/base/231145

Log:
  MFC 228957:
  Implement linux_fadvise64() and linux_fadvise64_64() using
  kern_posix_fadvise().

Modified:
  stable/9/sys/amd64/linux32/linux.h
  stable/9/sys/amd64/linux32/linux32_dummy.c
  stable/9/sys/amd64/linux32/syscalls.master
  stable/9/sys/compat/linux/linux_file.c
  stable/9/sys/i386/linux/linux.h
  stable/9/sys/i386/linux/linux_dummy.c
  stable/9/sys/i386/linux/syscalls.master
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/amd64/include/xen/   (props changed)
  stable/9/sys/boot/   (props changed)
  stable/9/sys/boot/i386/efi/   (props changed)
  stable/9/sys/boot/ia64/efi/   (props changed)
  stable/9/sys/boot/ia64/ski/   (props changed)
  stable/9/sys/boot/powerpc/boot1.chrp/   (props changed)
  stable/9/sys/boot/powerpc/ofw/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)
  stable/9/sys/conf/   (props changed)
  stable/9/sys/contrib/dev/acpica/   (props changed)
  stable/9/sys/contrib/octeon-sdk/   (props changed)
  stable/9/sys/contrib/pf/   (props changed)
  stable/9/sys/contrib/x86emu/   (props changed)
  stable/9/sys/modules/sound/driver/emu10k1/   (props changed)
  stable/9/sys/modules/sound/driver/emu10kx/   (props changed)
  stable/9/sys/modules/sound/driver/maestro3/   (props changed)

Modified: stable/9/sys/amd64/linux32/linux.h
==============================================================================
--- stable/9/sys/amd64/linux32/linux.h	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/amd64/linux32/linux.h	Tue Feb  7 19:11:54 2012	(r231145)
@@ -597,6 +597,16 @@ int	linux_ioctl_unregister_handler(struc
 #define	LINUX_F_UNLCK		2
 
 /*
+ * posix_fadvise advice
+ */
+#define	LINUX_POSIX_FADV_NORMAL		0
+#define	LINUX_POSIX_FADV_RANDOM		1
+#define	LINUX_POSIX_FADV_SEQUENTIAL    	2
+#define	LINUX_POSIX_FADV_WILLNEED      	3
+#define	LINUX_POSIX_FADV_DONTNEED      	4
+#define	LINUX_POSIX_FADV_NOREUSE       	5
+
+/*
  * mount flags
  */
 #define	LINUX_MS_RDONLY		0x0001

Modified: stable/9/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/9/sys/amd64/linux32/linux32_dummy.c	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/amd64/linux32/linux32_dummy.c	Tue Feb  7 19:11:54 2012	(r231145)
@@ -59,7 +59,6 @@ DUMMY(setfsuid);
 DUMMY(setfsgid);
 DUMMY(pivot_root);
 DUMMY(mincore);
-DUMMY(fadvise64);
 DUMMY(ptrace);
 DUMMY(lookup_dcookie);
 DUMMY(epoll_create);
@@ -72,7 +71,6 @@ DUMMY(timer_gettime);
 DUMMY(timer_getoverrun);
 DUMMY(timer_delete);
 DUMMY(fstatfs64);
-DUMMY(fadvise64_64);
 DUMMY(mbind);
 DUMMY(get_mempolicy);
 DUMMY(set_mempolicy);

Modified: stable/9/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/9/sys/amd64/linux32/syscalls.master	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/amd64/linux32/syscalls.master	Tue Feb  7 19:11:54 2012	(r231145)
@@ -419,7 +419,8 @@
 247	AUE_NULL	UNIMPL	linux_io_getevents
 248	AUE_NULL	UNIMPL	linux_io_submit
 249	AUE_NULL	UNIMPL	linux_io_cancel
-250	AUE_NULL	STD	{ int linux_fadvise64(void); }
+250	AUE_NULL	STD	{ int linux_fadvise64(int fd, l_loff_t offset, \
+					l_size_t len, int advice); }
 251	AUE_NULL	UNIMPL
 252	AUE_EXIT	STD	{ int linux_exit_group(int error_code); }
 253	AUE_NULL	STD	{ int linux_lookup_dcookie(void); }
@@ -443,7 +444,9 @@
 270	AUE_NULL	STD	{ int linux_tgkill(int tgid, int pid, int sig); }
 271	AUE_UTIMES	STD	{ int linux_utimes(char *fname, \
 					struct l_timeval *tptr); }
-272	AUE_NULL	STD	{ int linux_fadvise64_64(void); }
+272	AUE_NULL	STD	{ int linux_fadvise64_64(int fd, \
+					l_loff_t offset, l_loff_t len, \
+					int advice); }
 273	AUE_NULL	UNIMPL
 274	AUE_NULL	STD	{ int linux_mbind(void); }
 275	AUE_NULL	STD	{ int linux_get_mempolicy(void); }

Modified: stable/9/sys/compat/linux/linux_file.c
==============================================================================
--- stable/9/sys/compat/linux/linux_file.c	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/compat/linux/linux_file.c	Tue Feb  7 19:11:54 2012	(r231145)
@@ -1530,3 +1530,48 @@ linux_lchown(struct thread *td, struct l
 	LFREEPATH(path);
 	return (error);
 }
+
+static int
+convert_fadvice(int advice)
+{
+	switch (advice) {
+	case LINUX_POSIX_FADV_NORMAL:
+		return (POSIX_FADV_NORMAL);
+	case LINUX_POSIX_FADV_RANDOM:
+		return (POSIX_FADV_RANDOM);
+	case LINUX_POSIX_FADV_SEQUENTIAL:
+		return (POSIX_FADV_SEQUENTIAL);
+	case LINUX_POSIX_FADV_WILLNEED:
+		return (POSIX_FADV_WILLNEED);
+	case LINUX_POSIX_FADV_DONTNEED:
+		return (POSIX_FADV_DONTNEED);
+	case LINUX_POSIX_FADV_NOREUSE:
+		return (POSIX_FADV_NOREUSE);
+	default:
+		return (-1);
+	}
+}
+
+int
+linux_fadvise64(struct thread *td, struct linux_fadvise64_args *args)
+{
+	int advice;
+
+	advice = convert_fadvice(args->advice);
+	if (advice == -1)
+		return (EINVAL);
+	return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
+	    advice));
+}
+
+int
+linux_fadvise64_64(struct thread *td, struct linux_fadvise64_64_args *args)
+{
+	int advice;
+
+	advice = convert_fadvice(args->advice);
+	if (advice == -1)
+		return (EINVAL);
+	return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
+	    advice));
+}

Modified: stable/9/sys/i386/linux/linux.h
==============================================================================
--- stable/9/sys/i386/linux/linux.h	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/i386/linux/linux.h	Tue Feb  7 19:11:54 2012	(r231145)
@@ -573,6 +573,16 @@ int	linux_ioctl_unregister_handler(struc
 #define	LINUX_F_UNLCK		2
 
 /*
+ * posix_fadvise advice
+ */
+#define	LINUX_POSIX_FADV_NORMAL		0
+#define	LINUX_POSIX_FADV_RANDOM		1
+#define	LINUX_POSIX_FADV_SEQUENTIAL    	2
+#define	LINUX_POSIX_FADV_WILLNEED      	3
+#define	LINUX_POSIX_FADV_DONTNEED      	4
+#define	LINUX_POSIX_FADV_NOREUSE       	5
+
+/*
  * mount flags
  */
 #define	LINUX_MS_RDONLY		0x0001

Modified: stable/9/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/9/sys/i386/linux/linux_dummy.c	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/i386/linux/linux_dummy.c	Tue Feb  7 19:11:54 2012	(r231145)
@@ -62,14 +62,12 @@ DUMMY(setfsuid);
 DUMMY(setfsgid);
 DUMMY(pivot_root);
 DUMMY(mincore);
-DUMMY(fadvise64);
 DUMMY(lookup_dcookie);
 DUMMY(epoll_create);
 DUMMY(epoll_ctl);
 DUMMY(epoll_wait);
 DUMMY(remap_file_pages);
 DUMMY(fstatfs64);
-DUMMY(fadvise64_64);
 DUMMY(mbind);
 DUMMY(get_mempolicy);
 DUMMY(set_mempolicy);

Modified: stable/9/sys/i386/linux/syscalls.master
==============================================================================
--- stable/9/sys/i386/linux/syscalls.master	Tue Feb  7 18:35:18 2012	(r231144)
+++ stable/9/sys/i386/linux/syscalls.master	Tue Feb  7 19:11:54 2012	(r231145)
@@ -421,7 +421,8 @@
 247	AUE_NULL	UNIMPL	linux_io_getevents
 248	AUE_NULL	UNIMPL	linux_io_submit
 249	AUE_NULL	UNIMPL	linux_io_cancel
-250	AUE_NULL	STD	{ int linux_fadvise64(void); }
+250	AUE_NULL	STD	{ int linux_fadvise64(int fd, l_loff_t offset, \
+					l_size_t len, int advice); }
 251	AUE_NULL	UNIMPL
 252	AUE_EXIT	STD	{ int linux_exit_group(int error_code); }
 253	AUE_NULL	STD	{ int linux_lookup_dcookie(void); }
@@ -447,7 +448,9 @@
 270	AUE_NULL	STD	{ int linux_tgkill(int tgid, int pid, int sig); }
 271	AUE_UTIMES	STD	{ int linux_utimes(char *fname, \
 					struct l_timeval *tptr); }
-272	AUE_NULL	STD	{ int linux_fadvise64_64(void); }
+272	AUE_NULL	STD	{ int linux_fadvise64_64(int fd, \
+					l_loff_t offset, l_loff_t len, \
+					int advice); }
 273	AUE_NULL	UNIMPL
 274	AUE_NULL	STD	{ int linux_mbind(void); }
 275	AUE_NULL	STD	{ int linux_get_mempolicy(void); }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202071911.q17JBtxI003203>