• David Woodhouse's avatar
    Introduce fixed sys_sync_file_range2() syscall, implement on PowerPC and ARM · edd5cd4a
    David Woodhouse authored
    Not all the world is an i386.  Many architectures need 64-bit arguments to be
    aligned in suitable pairs of registers, and the original
    sys_sync_file_range(int, loff_t, loff_t, int) was therefore wasting an
    argument register for padding after the first integer.  Since we don't
    normally have more than 6 arguments for system calls, that left no room for
    the final argument on some architectures.
    
    Fix this by introducing sys_sync_file_range2(int, int, loff_t, loff_t) which
    all fits nicely.  In fact, ARM already had that, but called it
    sys_arm_sync_file_range.  Move it to fs/sync.c and rename it, then implement
    the needed compatibility routine.  And stop the missing syscall check from
    bitching about the absence of sys_sync_file_range() if we've implemented
    sys_sync_file_range2() instead.
    
    Tested on PPC32 and with 32-bit and 64-bit userspace on PPC64.
    Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
    Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    edd5cd4a
unistd.h 10.3 KB