linux/arch/x86/include/asm
Sage Weil b7ed78f565 introduce sys_syncfs to sync a single file system
It is frequently useful to sync a single file system, instead of all
mounted file systems via sync(2):

 - On machines with many mounts, it is not at all uncommon for some of
   them to hang (e.g. unresponsive NFS server).  sync(2) will get stuck on
   those and may never get to the one you do care about (e.g., /).
 - Some applications write lots of data to the file system and then
   want to make sure it is flushed to disk.  Calling fsync(2) on each
   file introduces unnecessary ordering constraints that result in a large
   amount of sub-optimal writeback/flush/commit behavior by the file
   system.

There are currently two ways (that I know of) to sync a single super_block:

 - BLKFLSBUF ioctl on the block device: That also invalidates the bdev
   mapping, which isn't usually desirable, and doesn't work for non-block
   file systems.
 - 'mount -o remount,rw' will call sync_filesystem as an artifact of the
   current implemention.  Relying on this little-known side effect for
   something like data safety sounds foolish.

Both of these approaches require root privileges, which some applications
do not have (nor should they need?) given that sync(2) is an unprivileged
operation.

This patch introduces a new system call syncfs(2) that takes an fd and
syncs only the file system it references.  Maybe someday we can

 $ sync /some/path

and not get

 sync: ignoring all arguments

The syscall is motivated by comments by Al and Christoph at the last LSF.
syncfs(2) seems like an appropriate name given statfs(2).

A similar ioctl was also proposed a while back, see
	http://marc.info/?l=linux-fsdevel&m=127970513829285&w=2

Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-21 00:40:29 -04:00
..
uv x86, UV: Initialize the broadcast assist unit base destination node id properly 2011-03-09 16:36:16 +01:00
visws
xen x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
a.out-core.h
a.out.h
acpi.h Merge branch 'x86-trampoline-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-16 10:10:02 -07:00
aes.h
agp.h
alternative-asm.h
alternative.h Merge branches 'x86-alternatives-for-linus', 'x86-fpu-for-linus', 'x86-hwmon-for-linus', 'x86-paravirt-for-linus', 'core-locking-for-linus' and 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-01-06 11:11:50 -08:00
amd_iommu_proto.h
amd_iommu_types.h
amd_iommu.h
amd_nb.h Merge branch 'linus' into x86/urgent 2011-03-18 10:39:00 +01:00
apb_timer.h
apic.h Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-15 20:01:36 -07:00
apicdef.h x86: Move ioapic_irq_destination_types to apicdef.h 2011-02-23 11:38:44 +01:00
apm.h
arch_hweight.h
asm-offsets.h
asm.h
atomic64_32.h
atomic64_64.h
atomic.h
auxvec.h
bios_ebda.h
bitops.h
bitsperlong.h
boot.h x86: support XZ-compressed kernel 2011-01-13 08:03:25 -08:00
bootparam.h x86: Add device tree support 2011-02-23 22:27:52 +01:00
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
calgary.h
calling.h
ce4100.h x86: ce4100: Set pci ops via callback instead of module init 2011-03-14 15:13:23 +01:00
checksum_32.h
checksum_64.h
checksum.h
cmpxchg_32.h
cmpxchg_64.h
cmpxchg.h
compat.h
cpu.h x86: Fix mwait_usable section mismatch 2011-02-14 12:08:28 +01:00
cpufeature.h perf, x86: Add support for AMD family 15h core counters 2011-02-16 13:30:53 +01:00
cpumask.h
cputime.h
current.h
debugreg.h x86: Use this_cpu_ops to optimize code 2010-12-30 12:20:28 +01:00
delay.h
desc_defs.h
desc.h
device.h
div64.h
dma-mapping.h
dma.h
dmi.h
dwarf2.h
e820.h x86: e820: Remove conditional early mapping in parse_e820_ext 2011-02-23 22:27:52 +01:00
edac.h
efi.h
elf.h
emergency-restart.h
entry_arch.h x86: Allocate 32 tlb_invalidate_interrupt handler stubs 2011-02-14 13:03:08 +01:00
errno.h
fb.h
fcntl.h
fixmap.h x86: Fix Moorestown VRTC fixmap placement 2011-01-11 12:46:16 +01:00
floppy.h
frame.h x86: Use {push,pop}_cfi in more places 2011-02-28 18:06:22 +01:00
ftrace.h
futex.h futex: Sanitize futex ops argument types 2011-03-11 12:23:31 +01:00
gart.h
genapic.h
geode.h
gpio.h x86/gpio: Implement x86 gpio_to_irq convert function 2011-01-11 12:46:15 +01:00
hardirq.h
highmem.h
hpet.h
hugetlb.h
hw_breakpoint.h
hw_irq.h x86: Allocate 32 tlb_invalidate_interrupt handler stubs 2011-02-14 13:03:08 +01:00
hypertransport.h
hyperv.h
hypervisor.h xen: HVM X2APIC support 2011-01-07 10:03:50 -05:00
i387.h
i8253.h
i8259.h
ia32_unistd.h
ia32.h
idle.h
inat_types.h
inat.h
init.h x86: Rename e820_table_* to pgt_buf_* 2011-02-24 14:52:18 +01:00
insn.h
inst.h
intel_scu_ipc.h
io_apic.h x86: ioapic: Move trigger defines to io_apic.h 2011-02-23 19:58:09 +01:00
io.h
ioctl.h
ioctls.h
iomap.h
iommu_table.h
iommu.h
ipcbuf.h
ipi.h x86: Make default_send_IPI_mask_sequence/allbutself_logical() 32bit only 2011-01-28 14:54:05 +01:00
irq_controller.h x86: dtb: Add irq domain abstraction 2011-02-23 22:27:53 +01:00
irq_regs.h
irq_remapping.h
irq_vectors.h x86: Work around old gas bug 2011-03-03 12:47:08 +01:00
irq.h x86: Add device tree support 2011-02-23 22:27:52 +01:00
irqflags.h
ist.h
jump_label.h x86: Fix jump label with RO/NX module protection crash 2011-01-23 16:12:45 +01:00
Kbuild
kdebug.h x86, dumpstack: Correct stack dump info when frame pointer is available 2011-03-18 10:51:42 +01:00
kexec.h
kgdb.h
kmap_types.h
kmemcheck.h
kprobes.h
kvm_emulate.h KVM: emulator: Fix io permission checking for 64bit guest 2011-03-17 13:08:33 -03:00
kvm_host.h KVM: MMU: cleanup pte write path 2011-03-17 13:08:35 -03:00
kvm_para.h KVM: x86: Add missing inline tag to kvm_read_and_reset_pf_reason 2011-01-12 11:23:27 +02:00
kvm.h
ldt.h
lguest_hcall.h
lguest.h
linkage.h
local64.h
local.h
mach_timer.h
mach_traps.h x86, NMI: Add NMI symbol constants and rename memory parity to PCI SERR 2011-01-07 15:08:51 +01:00
math_emu.h
mc146818rtc.h
mca_dma.h
mca.h
mce.h x86, hwmon: Add core threshold notification to therm_throt.c 2011-01-03 08:30:30 -08:00
memblock.h
microcode.h x86, microcode, AMD: Cleanup code a bit 2010-11-10 14:54:54 +01:00
mman.h
mmconfig.h
mmu_context.h x86, mm: avoid possible bogus tlb entries by clearing prev mm_cpumask after switching mm 2011-02-03 13:32:39 -08:00
mmu.h
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h x86: Fix APIC ID sizing bug on larger systems, clean up MAX_APICS confusion 2011-01-05 14:09:23 +01:00
mpspec.h x86: Unify cpu/apicid <-> NUMA node mapping between 32 and 64bit 2011-01-28 14:54:09 +01:00
mrst-vrtc.h x86: mrst: Add vrtc driver which serves as a wall clock device 2010-11-11 11:34:27 +01:00
mrst.h x86: mrst: Add vrtc driver which serves as a wall clock device 2010-11-11 11:34:27 +01:00
msgbuf.h
mshyperv.h
msidef.h
msr-index.h KVM: x86: handle guest access to BBL_CR_CTL3 MSR 2011-03-17 13:08:27 -03:00
msr.h
mtrr.h
mutex_32.h
mutex_64.h
mutex.h
mwait.h
nmi.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
nops.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
numa_32.h x86: Rename incorrectly named parameter of numa_cpu_node() 2011-01-31 18:22:25 +01:00
numa_64.h x86-64, NUMA: Unify emulated distance mapping 2011-02-16 17:11:10 +01:00
numa.h x86-64, NUMA: Factor out memblk handling into numa_{add|register}_memblk() 2011-02-16 17:11:07 +01:00
numaq.h
olpc_ofw.h x86: OLPC: Make OLPC=n build again 2011-02-23 11:54:02 +01:00
olpc.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
page_32_types.h
page_32.h
page_64_types.h
page_64.h
page_types.h x86-64, NUMA: Revert NUMA affine page table allocation 2011-03-04 10:26:36 +01:00
page.h
param.h
paravirt_types.h thp: add pmd paravirt ops 2011-01-13 17:32:39 -08:00
paravirt.h thp: fix PARAVIRT x86 32bit noPAE 2011-01-26 10:49:57 +10:00
parport.h
pat.h
pci_64.h
pci_x86.h
pci-direct.h
pci-functions.h
pci.h x86: Add NX protection for kernel data 2010-11-18 12:52:04 +01:00
percpu.h Merge branch 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2011-03-16 08:22:41 -07:00
perf_event_p4.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
perf_event.h perf, arch: Cleanup perf-pmu init vs lockup-detector 2010-11-26 15:14:56 +01:00
pgalloc.h
pgtable_32_types.h
pgtable_32.h
pgtable_64_types.h
pgtable_64.h thp: add x86 32bit support 2011-01-13 17:32:44 -08:00
pgtable_types.h thp: add pmd_modify 2011-01-13 17:32:44 -08:00
pgtable-2level_types.h
pgtable-2level.h thp: add x86 32bit support 2011-01-13 17:32:44 -08:00
pgtable-3level_types.h
pgtable-3level.h x86: Flush TLB if PGD entry is changed in i386 PAE mode 2011-03-18 11:44:01 +01:00
pgtable.h thp: don't allow transparent hugepage support without PSE 2011-01-13 17:32:45 -08:00
poll.h
posix_types_32.h
posix_types_64.h
posix_types.h
prctl.h
processor-cyrix.h
processor-flags.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
processor.h x86: Move llc_shared_map out of cpu_info 2011-01-26 08:44:49 +01:00
prom.h x86: dt: Cleanup local apic setup 2011-02-25 16:18:52 +01:00
proto.h
ptrace-abi.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
ptrace.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
pvclock-abi.h
pvclock.h x86/pvclock: Zero last_value on resume 2010-11-28 09:33:20 +01:00
reboot_fixups.h
reboot.h x86, reboot: Move the real-mode reboot code to an assembly file 2011-02-17 21:05:34 -08:00
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h rwsem: Move duplicate function prototypes to linux/rwsem.h 2011-01-27 12:30:39 +01:00
scatterlist.h
seccomp_32.h
seccomp_64.h
seccomp.h
sections.h
segment.h x86: Make the GDT_ENTRY() macro in <asm/segment.h> safe for assembly 2011-02-17 21:05:13 -08:00
sembuf.h
serial.h
setup_arch.h
setup.h x86: Add CE4100 platform support 2010-11-12 00:45:41 +01:00
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
sigframe.h
siginfo.h
signal.h
smp.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-15 19:49:10 -07:00
smpboot_hooks.h x86: Use u32 instead of long to set reset vector back to 0 2011-02-28 16:22:18 +01:00
socket.h
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h
srat.h
stackprotector.h
stacktrace.h x86, dumpstack: Correct stack dump info when frame pointer is available 2011-03-18 10:51:42 +01:00
stat.h
statfs.h
string_32.h
string_64.h
string.h
suspend_32.h
suspend_64.h
suspend.h
svm.h KVM: SVM: copy instruction bytes from VMCB 2011-01-12 11:31:07 +02:00
swab.h
swiotlb.h
sync_bitops.h
sys_ia32.h
syscall.h
syscalls.h
system.h x86, system.h: Drop unused __SAVE/__RESTORE macros 2011-02-20 13:38:47 +01:00
tce.h
termbits.h
termios.h
thread_info.h
time.h
timer.h x86, nmi_watchdog: Remove all stub function calls from old nmi_watchdog 2010-11-18 09:08:23 +01:00
timex.h
tlb.h
tlbflush.h
topology.h x86-64, NUMA: Implement generic node distance handling 2011-02-16 17:11:09 +01:00
trampoline.h x86, trampoline: Use the unified trampoline setup for ACPI wakeup 2011-02-17 21:05:06 -08:00
traps.h KVM: Handle async PF in a guest. 2011-01-12 11:23:16 +02:00
tsc.h x86: Fix common misspellings 2011-03-18 10:39:30 +01:00
types.h
uaccess_32.h
uaccess_64.h
uaccess.h
ucontext.h
unaligned.h
unistd_32.h introduce sys_syncfs to sync a single file system 2011-03-21 00:40:29 -04:00
unistd_64.h introduce sys_syncfs to sync a single file system 2011-03-21 00:40:29 -04:00
unistd.h
user32.h
user_32.h
user_64.h
user.h
vdso.h
vga.h
vgtod.h
virtext.h
vm86.h
vmx.h KVM: VMX: Add definitions for more vm entry/exit control bits 2011-01-12 11:31:08 +02:00
vsyscall.h
x86_init.h x86/platform: Add a wallclock_init func to x86_init.timers ops 2011-02-14 18:20:43 +01:00
xcr.h
xor_32.h
xor_64.h
xor.h
xsave.h