patches/glibc/ports-2.13/490-alpha_alpha-add-fdatasync-support.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Sep 21 22:42:35 2011 +0200 (2011-09-21)
changeset 2677 7df89370f805
permissions -rw-r--r--
kernel/linux: add alternate download locations

Since kernel.org is dead, and there is no announced or known estimated
time or return to normality, it is impossible to download any kernel at
this time.

Add a known-working mirror.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2438
     1
2009-07-25  Aurelien Jarno  <aurelien@aurel32.net>
yann@2438
     2
yann@2438
     3
	* sysdeps/unix/sysv/linux/kernel-features.h: define 
yann@2438
     4
	__ASSUME_FDATASYNC. 
yann@2438
     5
	* sysdeps/unix/sysv/linux/fdatasync.c: New file.
yann@2438
     6
	* sysdeps/unix/sysv/linux/Makefile: compile fdatasync.c with
yann@2438
     7
	-fexceptions.
yann@2438
     8
	* sysdeps/unix/sysv/linux/syscalls.list: Remove fdatasync.
yann@2438
     9
yann@2438
    10
 sysdeps/unix/sysv/linux/Makefile          |    1 
yann@2438
    11
 sysdeps/unix/sysv/linux/fdatasync.c       |   69 ++++++++++++++++++++++++++++++
yann@2438
    12
 sysdeps/unix/sysv/linux/kernel-features.h |    6 ++
yann@2438
    13
 sysdeps/unix/sysv/linux/syscalls.list     |    1 
yann@2438
    14
 4 files changed, 76 insertions(+), 1 deletion(-)
yann@2438
    15
yann@2438
    16
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/Makefile glibc-2.13/sysdeps/unix/sysv/linux/Makefile
yann@2438
    17
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/Makefile	2009-03-02 17:15:13.000000000 +0100
yann@2438
    18
+++ glibc-2.13/sysdeps/unix/sysv/linux/Makefile	2009-11-13 00:51:04.000000000 +0100
yann@2438
    19
@@ -20,6 +20,7 @@
yann@2438
    20
 		   setfsuid setfsgid makedev epoll_pwait signalfd \
yann@2438
    21
 		   eventfd eventfd_read eventfd_write prlimit
yann@2438
    22
 
yann@2438
    23
+CFLAGS-fdatasync.c = -fexceptions
yann@2438
    24
 CFLAGS-gethostid.c = -fexceptions
yann@2438
    25
 
yann@2438
    26
 sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
yann@2438
    27
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/fdatasync.c glibc-2.13/sysdeps/unix/sysv/linux/fdatasync.c
yann@2438
    28
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/fdatasync.c	1970-01-01 01:00:00.000000000 +0100
yann@2438
    29
+++ glibc-2.13/sysdeps/unix/sysv/linux/fdatasync.c	2009-11-13 00:51:04.000000000 +0100
yann@2438
    30
@@ -0,0 +1,69 @@
yann@2438
    31
+/* fdatasync -- synchronize at least the data part of a file with 
yann@2438
    32
+   the underlying media. Linux version. 
yann@2438
    33
+
yann@2438
    34
+   Copyright (C) 2007 Free Software Foundation, Inc.
yann@2438
    35
+   This file is part of the GNU C Library.
yann@2438
    36
+
yann@2438
    37
+   The GNU C Library is free software; you can redistribute it and/or
yann@2438
    38
+   modify it under the terms of the GNU Lesser General Public
yann@2438
    39
+   License as published by the Free Software Foundation; either
yann@2438
    40
+   version 2.1 of the License, or (at your option) any later version.
yann@2438
    41
+
yann@2438
    42
+   The GNU C Library is distributed in the hope that it will be useful,
yann@2438
    43
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@2438
    44
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@2438
    45
+   Lesser General Public License for more details.
yann@2438
    46
+
yann@2438
    47
+   You should have received a copy of the GNU Lesser General Public
yann@2438
    48
+   License along with the GNU C Library; if not, write to the Free
yann@2438
    49
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@2438
    50
+   02111-1307 USA.  */
yann@2438
    51
+
yann@2438
    52
+#include <errno.h>
yann@2438
    53
+#include <unistd.h>
yann@2438
    54
+
yann@2438
    55
+#include <sysdep-cancel.h>
yann@2438
    56
+#include <sys/syscall.h>
yann@2438
    57
+#include <bp-checks.h>
yann@2438
    58
+
yann@2438
    59
+#include <kernel-features.h>
yann@2438
    60
+
yann@2438
    61
+#if defined __NR_fdatasync && !defined __ASSUME_FDATASYNC
yann@2438
    62
+static int __have_no_fdatasync;
yann@2438
    63
+#endif
yann@2438
    64
+
yann@2438
    65
+static int
yann@2438
    66
+do_fdatasync (int fd)
yann@2438
    67
+{
yann@2438
    68
+#ifdef __ASSUME_FDATASYNC
yann@2438
    69
+  return INLINE_SYSCALL (fdatasync, 1, fd);
yann@2438
    70
+#elif defined __NR_fdatasync
yann@2438
    71
+  if (!__builtin_expect (__have_no_fdatasync, 0))
yann@2438
    72
+    {
yann@2438
    73
+      int result = INLINE_SYSCALL (fdatasync, 1, fd);
yann@2438
    74
+      if (__builtin_expect (result, 0) != -1 || errno != ENOSYS)
yann@2438
    75
+	return result;
yann@2438
    76
+
yann@2438
    77
+      __have_no_fdatasync = 1;
yann@2438
    78
+    }
yann@2438
    79
+#endif
yann@2438
    80
+  return INLINE_SYSCALL (fsync, 1, fd);
yann@2438
    81
+}
yann@2438
    82
+
yann@2438
    83
+int
yann@2438
    84
+__fdatasync (int fd)
yann@2438
    85
+{
yann@2438
    86
+  if (SINGLE_THREAD_P)
yann@2438
    87
+    return do_fdatasync (fd);
yann@2438
    88
+
yann@2438
    89
+  int oldtype = LIBC_CANCEL_ASYNC ();
yann@2438
    90
+
yann@2438
    91
+  int result = do_fdatasync (fd);
yann@2438
    92
+
yann@2438
    93
+  LIBC_CANCEL_RESET (oldtype);
yann@2438
    94
+
yann@2438
    95
+  return result;
yann@2438
    96
+}
yann@2438
    97
+
yann@2438
    98
+weak_alias (__fdatasync, fdatasync)
yann@2438
    99
+
yann@2438
   100
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h
yann@2438
   101
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/kernel-features.h	2009-11-13 00:50:45.000000000 +0100
yann@2438
   102
+++ glibc-2.13/sysdeps/unix/sysv/linux/kernel-features.h	2009-11-13 00:51:04.000000000 +0100
yann@2438
   103
@@ -459,6 +459,12 @@
yann@2438
   104
 # define __ASSUME_FUTEX_LOCK_PI	1
yann@2438
   105
 #endif
yann@2438
   106
 
yann@2438
   107
+/* Support for fsyncdata syscall was added in 2.6.22 on alpha, but it
yann@2438
   108
+   was already present in 2.0 kernels on other architectures.  */
yann@2438
   109
+#if (!defined __alpha || __LINUX_KERNEL_VERSION >= 0x020616)
yann@2438
   110
+# define __ASSUME_FDATASYNC	1
yann@2438
   111
+#endif
yann@2438
   112
+
yann@2438
   113
 /* Support for utimensat syscall was added in 2.6.22, on SH
yann@2438
   114
    only after 2.6.22-rc1.  */
yann@2438
   115
 #if __LINUX_KERNEL_VERSION >= 0x020616 \
yann@2438
   116
diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/syscalls.list glibc-2.13/sysdeps/unix/sysv/linux/syscalls.list
yann@2438
   117
--- glibc-2.13.orig/sysdeps/unix/sysv/linux/syscalls.list	2008-08-02 01:29:08.000000000 +0200
yann@2438
   118
+++ glibc-2.13/sysdeps/unix/sysv/linux/syscalls.list	2009-11-13 00:51:04.000000000 +0100
yann@2438
   119
@@ -11,7 +11,6 @@
yann@2438
   120
 epoll_create1	EXTRA	epoll_create1	i:i	epoll_create1
yann@2438
   121
 epoll_ctl	EXTRA	epoll_ctl	i:iiip	epoll_ctl
yann@2438
   122
 epoll_wait	EXTRA	epoll_wait	Ci:ipii	epoll_wait
yann@2438
   123
-fdatasync	-	fdatasync	Ci:i	fdatasync
yann@2438
   124
 flock		-	flock		i:ii	__flock		flock
yann@2438
   125
 fork		-	fork		i:	__libc_fork	__fork fork
yann@2438
   126
 get_kernel_syms	EXTRA	get_kernel_syms	i:p	get_kernel_syms