Tejun Heo
5f820f648c
poll: allow f_op->poll to sleep
...
f_op->poll is the only vfs operation which is not allowed to sleep. It's
because poll and select implementation used task state to synchronize
against wake ups, which doesn't have to be the case anymore as wait/wake
interface can now use custom wake up functions. The non-sleep restriction
can be a bit tricky because ->poll is not called from an atomic context
and the result of accidentally sleeping in ->poll only shows up as
temporary busy looping when the timing is right or rather wrong.
This patch converts poll/select to use custom wake up function and use
separate triggered variable to synchronize against wake up events. The
only added overhead is an extra function call during wake up and
negligible.
This patch removes the one non-sleep exception from vfs locking rules and
is beneficial to userland filesystem implementations like FUSE, 9p or
peculiar fs like spufs as it's very difficult for those to implement
non-sleeping poll method.
While at it, make the following cosmetic changes to make poll.h and
select.c checkpatch friendly.
* s/type * symbol/type *symbol/ : three places in poll.h
* remove blank line before EXPORT_SYMBOL() : two places in select.c
Oleg: spotted missing barrier in poll_schedule_timeout()
Davide: spotted missing write barrier in pollwake()
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Eric Van Hensbergen <ericvh@gmail.com>
Cc: Ron Minnich <rminnich@sandia.gov>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Brad Boyer <flar@allandria.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Roland McGrath <roland@redhat.com>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-01-06 15:59:12 -08:00
..
ABI
mm: show node to memory section relationship with symlinks in sysfs
2009-01-06 15:59:00 -08:00
accounting
.gitignore updates
2008-10-30 11:38:45 -07:00
acpi
ACPI: update debug parameter documentation
2008-11-07 21:45:29 -05:00
aoe
arm
Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
2008-12-29 18:08:11 +00:00
auxdisplay
.gitignore updates
2008-10-30 11:38:45 -07:00
blackfin
Blackfin arch: add supporting for kgdb
2008-10-13 14:07:19 +08:00
block
Documentation: remove reference to ll_rw_blk.c and moved drivers/block/elevator.c
2008-12-29 08:28:43 +01:00
blockdev
Create/use more directory structure in the Documentation/ tree.
2008-11-14 17:28:53 +00:00
cdrom
doc/cdrom: Trvial documentation error, file not present
2008-10-10 08:22:44 +02:00
cgroups
freezer_cg: disable writing freezer.state of root cgroup
2008-11-12 17:17:16 -08:00
connector
.gitignore updates
2008-10-30 11:38:45 -07:00
console
controllers
sched: add hierarchical accounting to cpu accounting controller
2008-11-11 12:13:28 +01:00
cpu-freq
doc: Update sh cpufreq documentation.
2008-12-22 18:44:47 +09:00
cpuidle
cris
fix random typos
2008-10-16 11:21:30 -07:00
crypto
development-process
Add the development process document
2008-10-16 11:51:30 -06:00
device-mapper
DocBook
WAN: syncppp.c is no longer used by any kernel code. Remove it.
2008-11-22 02:49:48 +01:00
driver-model
dvb
V4L/DVB (9812): [PATCH] short help for Technisat cards to select the right configuration
2008-12-30 09:38:35 -02:00
early-userspace
fault-injection
fb
[ARM] pxafb: add support for overlay1 and overlay2 as framebuffer devices
2008-12-29 18:00:04 +08:00
filesystems
poll: allow f_op->poll to sleep
2009-01-06 15:59:12 -08:00
firmware_class
frv
hwmon
adt7462: new hwmon driver
2008-11-12 17:17:17 -08:00
i2c
i2c: The i2c mailing list is moving
2008-10-30 15:55:47 +01:00
i2o
ia64
.gitignore updates
2008-10-30 11:38:45 -07:00
ide
infiniband
input
Input: fix the example of an input device driver
2008-11-11 11:41:49 -05:00
ioctl
UBI: document UBI ioctls
2008-12-09 15:59:07 +02:00
isdn
Rationalise Randy's address a bit
2008-10-30 11:38:47 -07:00
ja_JP
HOWTO: Sync patch for jp_JP/HOWTO
2008-10-29 15:03:50 -07:00
kbuild
kbuild: document environment variables
2009-01-02 20:43:25 +01:00
kdump
powerpc: Support for relocatable kdump kernel
2008-10-22 15:01:22 +11:00
ko_KR
laptops
Merge branch 'linus' into test
2008-10-23 00:11:07 -04:00
lguest
lguest: move the initial guest page table creation code to the host
2008-12-30 09:26:11 +10:30
m68k
make
mips
mn10300
mtd
[MTD] [NAND] nand_ecc.c: rewrite for improved performance
2008-08-16 10:55:33 +01:00
namespaces
netlabel
networking
dccp ccid-2: Phase out the use of boolean Ack Vector sysctl
2008-12-08 01:19:06 -08:00
parisc
PCI
Create/use more directory structure in the Documentation/ tree.
2008-11-14 17:28:53 +00:00
pcmcia
.gitignore updates
2008-10-30 11:38:45 -07:00
power
pm: document use of RTC in pm_trace
2008-10-16 11:21:29 -07:00
powerpc
gianfar: Convert gianfar to an of_platform_driver
2008-12-16 15:29:15 -08:00
prctl
RCU
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
s390
[S390] cio: Exorcise cio_msg= from documentation.
2008-10-10 21:33:49 +02:00
scheduler
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:27:58 -08:00
scsi
[SCSI] cxgb3i: Add cxgb3i iSCSI driver.
2008-12-30 10:45:33 -06:00
serial
Create/use more directory structure in the Documentation/ tree.
2008-11-14 17:28:53 +00:00
sh
sh: Kill off remaining CONFIG_SH_KGDB bits.
2008-12-22 18:44:05 +09:00
sound
Merge branch 'topic/oxygen' into to-push
2008-12-25 11:40:30 +01:00
sparc
sparc: Remove Documentation/sparc/sbus_drivers.txt
2008-08-29 02:15:25 -07:00
spi
spi documentation: use __initdata on struct
2008-12-01 19:55:24 -08:00
sysctl
mm: add dirty_background_bytes and dirty_bytes sysctls
2009-01-06 15:59:03 -08:00
telephony
remove mention of CONFIG_KMOD from documentation
2008-07-22 19:24:29 +10:00
thermal
timers
hpet: /dev/hpet - fixes and cleanup
2008-07-31 18:45:41 +02:00
tracers
tracing, doc: update mmiotrace documentation
2008-11-23 20:33:24 +01:00
uml
usb
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream
2009-01-02 13:17:13 +00:00
video4linux
V4L/DVB (10157): Add USB ID for the Sil4701 radio from DealExtreme
2009-01-02 17:13:56 -02:00
vm
mm: remove try_to_munlock from vmscan
2009-01-06 15:59:03 -08:00
w1
hdq: documentation for OMAP HDQ
2008-11-12 17:17:18 -08:00
watchdog
.gitignore updates
2008-10-30 11:38:45 -07:00
x86
Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core
2008-12-23 16:27:23 +01:00
zh_CN
00-INDEX
Merge branch 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs
2008-11-15 11:51:03 -08:00
applying-patches.txt
atomic_ops.txt
basic_profiling.txt
binfmt_misc.txt
braille-console.txt
bt8xxgpio.txt
gpio: add bt8xxgpio driver
2008-07-25 10:53:30 -07:00
BUG-HUNTING
c2port.txt
Add c2 port support
2008-11-12 17:17:18 -08:00
cachetlb.txt
Changes
CodingStyle
documentation: update CodingStyle tips for Emacs users
2008-07-25 10:53:29 -07:00
cpu-hotplug.txt
x86: use possible_cpus=NUM to extend the possible cpus allowed
2008-12-18 12:08:05 +01:00
cpu-load.txt
cpusets.txt
container freezer: document the cgroup freezer subsystem.
2008-10-20 08:52:34 -07:00
cputopology.txt
sysfs: add documentation to cputopology.txt for system cpumasks
2008-12-19 17:47:12 +10:30
credentials.txt
CRED: Documentation
2008-11-14 10:39:26 +11:00
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
dell_rbu.txt
devices.txt
USB: add USB test and measurement class driver
2008-10-17 14:40:51 -07:00
DMA-API.txt
DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling
2008-12-01 19:55:24 -08:00
DMA-attributes.txt
powerpc/cell: Add DMA_ATTR_WEAK_ORDERING dma attribute and use in Cell IOMMU code
2008-07-22 10:39:36 +10:00
DMA-ISA-LPC.txt
DMA-mapping.txt
Documentation/DMA-mapping.txt: update for pci_dma_mapping_error() changes
2008-09-23 08:09:14 -07:00
dontdiff
dontdiff: more updates to be closer to gitignore
2008-10-16 11:21:31 -07:00
edac.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
eisa.txt
email-clients.txt
Documentation/email-clients.txt: add some info about gmail
2008-11-06 15:41:19 -08:00
exception.txt
feature-removal-schedule.txt
remove ide-scsi
2009-01-02 16:12:51 +01:00
ftrace.txt
ftrace: improve documentation
2008-11-28 13:15:14 +01:00
gpio.txt
gpiolib: request/free hooks
2008-10-16 11:21:40 -07:00
highuid.txt
HOWTO
Remove Andrew Morton's http://www.zip.com.au/~akpm/
2008-10-16 11:21:32 -07:00
hw_random.txt
ics932s401
ics932s401: new clock generator chip driver
2008-11-12 17:17:18 -08:00
initrd.txt
Intel-IOMMU.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
io-mapping.txt
io mapping: improve documentation
2008-11-03 18:21:44 +01:00
IO-mapping.txt
io_ordering.txt
iostats.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
IPMI.txt
IRQ-affinity.txt
IRQ.txt
irqflags-tracing.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
sched: add kernel doc for the completion, fix kernel-doc-nano-HOWTO.txt
2008-08-26 10:26:54 +02:00
kernel-docs.txt
kernel-parameters.txt
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
2008-12-28 12:33:21 -08:00
keys-request-key.txt
keys.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
kobject.txt
kobject: Fix kobject_rename and !CONFIG_SYSFS
2008-10-16 09:24:52 -07:00
kprobes.txt
kref.txt
ldm.txt
leds-class.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
local_ops.txt
documentation: local_ops fix on_each_cpu
2008-12-01 13:51:26 +01:00
lockdep-design.txt
lockstat.txt
lockstat: contend with points
2008-10-20 15:43:10 +02:00
logo.gif
logo.txt
magic-number.txt
Makefile
docsrc: build Documentation/ sources
2008-08-12 16:07:30 -07:00
ManagementStyle
docs: fix ManagementStyle book name
2008-10-30 11:38:46 -07:00
markers.txt
markers: comment marker_synchronize_unregister() on data dependency
2008-11-28 16:47:41 +01:00
mca.txt
md.txt
md: Tidy up rdev_size_store a bit:
2008-07-21 14:22:18 +10:00
memory-barriers.txt
memory-hotplug.txt
mm: show node to memory section relationship with symlinks in sysfs
2009-01-06 15:59:00 -08:00
memory.txt
mono.txt
mutex-design.txt
nmi_watchdog.txt
x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2
2008-10-30 19:07:04 +01:00
nommu-mmap.txt
numastat.txt
oops-tracing.txt
parport-lowlevel.txt
parport.txt
pi-futex.txt
pnp.txt
preempt-locking.txt
printk-formats.txt
DOC: add printk-formats.txt
2008-11-12 17:17:17 -08:00
prio_tree.txt
rbtree.txt
rfkill.txt
rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input
2008-10-31 19:00:09 -04:00
robust-futex-ABI.txt
robust-futexes.txt
rt-mutex-design.txt
rt-mutex.txt
rtc.txt
SAK.txt
Remove Andrew Morton's old email accounts
2008-10-16 11:21:32 -07:00
SecurityBugs
SELinux.txt
selinux: add support for installing a dummy policy (v2)
2008-08-27 08:54:08 +10:00
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
SM501.txt
Smack.txt
sparse.txt
kbuild: sparse needs CF not CHECKFLAGS
2008-07-25 22:12:39 +02:00
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
Update stable tree documentation
2008-10-29 15:03:49 -07:00
SubmitChecklist
documentation: explain memory barriers
2008-10-16 11:21:32 -07:00
SubmittingDrivers
Remove Andrew Morton's old email accounts
2008-10-16 11:21:32 -07:00
SubmittingPatches
Merge branch 'docs' of git://git.lwn.net/linux-2.6
2008-10-16 12:18:16 -07:00
svga.txt
sysfs-rules.txt
sysfs-rules.txt: reword API stability statement
2008-07-21 21:54:59 -07:00
sysrq.txt
Merge branch 'v28-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:19:56 -07:00
tracepoints.txt
tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt
2008-11-29 15:13:42 +01:00
unaligned-memory-access.txt
introduce HAVE_EFFICIENT_UNALIGNED_ACCESS Kconfig symbol
2008-07-25 10:53:27 -07:00
unicode.txt
unshare.txt
VGA-softcursor.txt
video-output.txt
volatile-considered-harmful.txt
Documentation cleanup: trivial misspelling, punctuation, and grammar corrections.
2008-07-26 12:00:06 -07:00
voyager.txt
zorro.txt