diff options
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/recipes-devtools/dpkg/dpkg/glibc2.5-sync_file_range.patch | 86 | ||||
| -rw-r--r-- | meta/recipes-devtools/dpkg/dpkg_1.17.4.bb | 1 | 
2 files changed, 87 insertions, 0 deletions
| diff --git a/meta/recipes-devtools/dpkg/dpkg/glibc2.5-sync_file_range.patch b/meta/recipes-devtools/dpkg/dpkg/glibc2.5-sync_file_range.patch new file mode 100644 index 0000000000..d56b8a69a3 --- /dev/null +++ b/meta/recipes-devtools/dpkg/dpkg/glibc2.5-sync_file_range.patch @@ -0,0 +1,86 @@ +CentOS 5.8 kernels and headers support the sync_file_range() system call, +but glibc 2.5 doesn't provide the syscall stub.  It appears that this +problem is known but will never be fixed: + +  https://bugzilla.redhat.com/show_bug.cgi?id=518581 + +  Bug 518581 - [RHEL5] glibc misses sync_file_range syscall interface  + +  Status:       CLOSED CANTFIX  +  Last Closed:  2009-11-22 22:19:55 + +  Kirby Zhou 2009-08-20 23:37:55 EDT + +  Description of problem: + +  glibc misses sync_file_range syscall interface.  The header file and +  man page both say 'sync_file_range' should exist.  From man page, +  sync_file_range should exist sinc kernel-2.6.17 + +  Andreas Schwab 2009-08-21 03:24:24 EDT + +  It has only been added to glibc 2.6, and cannot be backported due to +  ABI breakage.  You can always fall back to syscall(3). + +  Ulrich Drepper 2009-11-22 22:19:55 EST + +  As comment #1 says, no chance to backport this. + +  See the syscall man page for instructions. + +  Jon E 2010-03-19 10:32:37 EDT + +  then why document it if it's broken and you're not going to fix it? +  .. might want to FTFM over at sync_file_range(2) - in the meantime - +  borrowing from glibc 2.6 .. any thoughts on this implementation for a +  hacky workaround for those still on your "ancient releases" .. (eg: +  RHEL5.3)?: + +  #ifdef ULI_WONT_FIX_THIS_IN_GLIBC2.5 +  #define NR_sync_file_range 277 +  int sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags) +  { +    return syscall (NR_sync_file_range, fd, +                           __LONG_LONG_PAIR ((long) (from >> 32), (long) from), +                           __LONG_LONG_PAIR ((long) (to >> 32), (long) to), +                           flags); +  } +  #endif + +  assuming of course that you're on an x86_64 and include/asm- +  x86_64/unistd.h has the correct entry + +  (fwiw - fio is starting to use this now) + +Rather than attempting to provide an implementation using syscall(), +we take the more conservative route and ignore header support for +sync_file_range() flags when the glibc version is <= 2.5. + +Upstream-Status: Inappropriate [everyone else builds on newer hosts :-)] + +Signed-off-by: Donn Seeley <donn.seeley@windriver.com> +Signed-off-by: Lei Liu <lei.liu2@windriver.com> +--- + src/archives.c |    4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/src/archives.c ++++ b/src/archives.c +@@ -75,7 +75,7 @@ +   /* Ignore the return code as it should be considered equivalent to an +    * asynchronous hint for the kernel, we are doing an fsync() later on +    * anyway. */ +-#if defined(SYNC_FILE_RANGE_WRITE) ++#if defined(SYNC_FILE_RANGE_WRITE) && __GLIBC_PREREQ(2, 6) +   sync_file_range(fd, 0, 0, SYNC_FILE_RANGE_WRITE); + #elif defined(HAVE_POSIX_FADVISE) +   posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED); +@@ -1179,7 +1179,7 @@ +   return 0; + } +  +-#if defined(SYNC_FILE_RANGE_WAIT_BEFORE) ++#if defined(SYNC_FILE_RANGE_WAIT_BEFORE) && __GLIBC_PREREQ(2, 6) + static void + tar_writeback_barrier(struct fileinlist *files, struct pkginfo *pkg) + { diff --git a/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb b/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb index b27e6f450e..5e407ba2b2 100644 --- a/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb +++ b/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb @@ -10,6 +10,7 @@ SRC_URI += "file://noman.patch \              file://fix-abs-redefine.patch \              file://arch_pm.patch \              file://dpkg-configure.service \ +            file://glibc2.5-sync_file_range.patch \             "  SRC_URI[md5sum] = "cc25086e1e3bd9512a95f14cfe9002e1" | 
