linux-stable-rt/arch/i386/kernel
Andrew Morton f79e2abb9b [PATCH] sys_sync_file_range()
Remove the recently-added LINUX_FADV_ASYNC_WRITE and LINUX_FADV_WRITE_WAIT
fadvise() additions, do it in a new sys_sync_file_range() syscall instead.
Reasons:

- It's more flexible.  Things which would require two or three syscalls with
  fadvise() can be done in a single syscall.

- Using fadvise() in this manner is something not covered by POSIX.

The patch wires up the syscall for x86.

The sycall is implemented in the new fs/sync.c.  The intention is that we can
move sys_fsync(), sys_fdatasync() and perhaps sys_sync() into there later.

Documentation for the syscall is in fs/sync.c.

A test app (sync_file_range.c) is in
http://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz.

The available-to-GPL-modules do_sync_file_range() is for knfsd: "A COMMIT can
say NFS_DATA_SYNC or NFS_FILE_SYNC.  I can skip the ->fsync call for
NFS_DATA_SYNC which is hopefully the more common."

Note: the `async' writeout mode SYNC_FILE_RANGE_WRITE will turn synchronous if
the queue is congested.  This is trivial to fix: add a new flag bit, set
wbc->nonblocking.  But I'm not sure that we want to expose implementation
details down to that level.

Note: it's notable that we can sync an fd which wasn't opened for writing.
Same with fsync() and fdatasync()).

Note: the code takes some care to handle attempts to sync file contents
outside the 16TB offset on 32-bit machines.  It makes such attempts appear to
succeed, for best 32-bit/64-bit compatibility.  Perhaps it should make such
requests fail...

Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Ulrich Drepper <drepper@redhat.com>
Cc: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-31 12:18:54 -08:00
..
acpi [PATCH] EFI: keep physical table addresses in efi structure 2006-03-26 08:56:54 -08:00
cpu [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
timers [PATCH] PM-Timer: don't use workaround if chipset is not buggy 2006-03-27 08:44:37 -08:00
.gitignore
Makefile
alternative.c
apic.c [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
apm.c [PATCH] kill include/linux/platform.h, default_idle() cleanup 2006-03-24 07:33:21 -08:00
asm-offsets.c
bootflag.c
cpuid.c
crash.c
crash_dump.c
dmi_scan.c [PATCH] EFI fixes 2006-03-26 08:56:54 -08:00
doublefault.c
early_printk.c
efi.c [PATCH] fix array overrun in efi.c 2006-03-26 08:56:57 -08:00
efi_stub.S
entry.S
head.S [PATCH] i386: cleanup after cpu_gdt_descr conversion to per-cpu data 2006-03-23 07:38:06 -08:00
i386_ksyms.c
i387.c
i8237.c
i8259.c
init_task.c
io_apic.c [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
ioport.c
irq.c
kprobes.c [PATCH] kprobes: fix broken fault handling for i386 2006-03-26 08:57:04 -08:00
ldt.c
machine_kexec.c
mca.c
microcode.c [PATCH] arch/i386/kernel/microcode.c: remove the obsolete microcode_ioctl 2006-03-28 09:16:06 -08:00
module.c
mpparse.c [PATCH] x86: deterine xapic using apic version 2006-03-23 07:38:06 -08:00
msr.c
nmi.c [PATCH] fix signed vs unsigned in nmi watchdog 2006-03-28 09:16:08 -08:00
numaq.c
pci-dma.c
process.c [PATCH] kretprobe instance recycled by parent process 2006-03-26 08:57:04 -08:00
ptrace.c
quirks.c
reboot.c
reboot_fixups.c
relocate_kernel.S
scx200.c
semaphore.c
setup.c [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
sigframe.h
signal.c [PATCH] swsusp: finally solve mysqld problem 2006-03-23 07:38:08 -08:00
smp.c
smpboot.c [PATCH] sched: new sched domain for representing multi-core 2006-03-27 08:44:43 -08:00
srat.c
summit.c
sys_i386.c
syscall_table.S [PATCH] sys_sync_file_range() 2006-03-31 12:18:54 -08:00
sysenter.c
time.c
time_hpet.c
topology.c [PATCH] x86 topology: don;t create a control file for BSP that cannot be removed 2006-03-23 07:38:07 -08:00
trampoline.S
traps.c [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
vm86.c
vmlinux.lds.S Merge master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild 2006-03-25 08:48:48 -08:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
vsyscall-sysenter.S
vsyscall.S
vsyscall.lds.S