From f12a32e6f02c058c4996a138f16828f772059116 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 9 Apr 2011 11:07:18 -0400 Subject: [PATCH] Make ppc sync_file_range cancelable. --- ChangeLog | 5 +++++ .../unix/sysv/linux/powerpc/powerpc64/sync_file_range.c | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index a798904..5549869 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-04-08 Andreas Schwab + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c: + Make cancelable. + 2011-04-09 Ulrich Drepper [BZ #12655] diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c index 1ca4ce6..ccbca4d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c @@ -1,5 +1,5 @@ /* Selective file content synch'ing. - Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ #include #include -#include +#include #include @@ -29,7 +29,17 @@ int sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) { - return INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + if (SINGLE_THREAD_P) + return INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + + int result; + int oldtype = LIBC_CANCEL_ASYNC (); + + result = INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to); + + LIBC_CANCEL_RESET (oldtype); + + return result; } #else int -- 2.7.4