AOP_TRUNCATED_PAGE victims in read_pages() belong in the LRU
Nick Piggin rightly pointed out that the introduction of AOP_TRUNCATED_PAGE
to read_pages() was wrong to leave A_T_P victim pages in the page cache but
not put them in the LRU. Failing to do so hid them from the VM.
A_T_P just means that the aop method unlocked the page rather than
performing IO. It would be very rare that the page was truncated between
the unlock and testing A_T_P. So we leave the pages in the LRU for likely
reuse soon rather than backing them back out of the page cache. We do this
by matching the behaviour before the A_T_P introduction which added pages
to the LRU regardless of what ->readpage() did.
This doesn't include the unrelated cleanup in Nick's initial fix which
changed read_pages() to return void to match its only caller's behaviour of
ignoring errors.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Also revert patch "frv: ieee1394 is borken on frv", as it no longer is.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: David Howells <dhowells@redhat.com>
Cc: Jody McIntyre <scjody@modernduck.com>
Cc: Ben Collins <bcollins@ubuntu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Convert a few stragglers over to for_each_possible_cpu(), remove
for_each_cpu().
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
It's going away.
I wonder if this code really meant to iterate across not-present, not-online
CPUs.
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Fix various problems with nfs4 disabled. And various other things.
In file included from fs/nfs/inode.c:50:
fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
fs/nfs/internal.h: In function 'nfs4_path':
fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
fs/nfs/inode.c: In function 'init_once':
fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'open_states'
fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'delegation'
fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'delegation_state'
fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'rwsem'
distcc[26452] ERROR: compile fs/nfs/inode.c on g5/64 failed
make[1]: *** [fs/nfs/inode.o] Error 1
make: *** [fs/nfs/inode.o] Error 2
make: *** Waiting for unfinished jobs....
In file included from fs/nfs/nfs3xdr.c:26:
fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
fs/nfs/internal.h: In function 'nfs4_path':
fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
distcc[26486] ERROR: compile fs/nfs/nfs3xdr.c on g5/64 failed
make[1]: *** [fs/nfs/nfs3xdr.o] Error 1
make: *** [fs/nfs/nfs3xdr.o] Error 2
In file included from fs/nfs/nfs3proc.c:24:
fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
fs/nfs/internal.h: In function 'nfs4_path':
fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
distcc[26469] ERROR: compile fs/nfs/nfs3proc.c on bix/32 failed
make[1]: *** [fs/nfs/nfs3proc.o] Error 1
make: *** [fs/nfs/nfs3proc.o] Error 2
**FAILED**
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Andreas Gruenbacher <agruen@suse.de>
Cc: Andy Adamson <andros@citi.umich.edu>
Cc: Chuck Lever <cel@netapp.com>
Cc: David Howells <dhowells@redhat.com>
Cc: J. Bruce Fields <bfields@fieldses.org>
Cc: Manoj Naik <manoj@almaden.ibm.com>
Cc: Marc Eshel <eshel@almaden.ibm.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
In file included from sound/i2c/other/tea575x-tuner.c:30:
include/sound/tea575x-tuner.h:36: error: field 'vd' has incomplete type
include/sound/tea575x-tuner.h:37: error: field 'fops' has incomplete type
sound/i2c/other/tea575x-tuner.c:89: warning: 'struct inode' declared inside parameter list
sound/i2c/other/tea575x-tuner.c:89: warning: its scope is only this definition or declaration, which is probably not what you want
sound/i2c/other/tea575x-tuner.c: In function 'snd_tea575x_ioctl':
sound/i2c/other/tea575x-tuner.c:91: warning: implicit declaration of function 'video_devdata'
sound/i2c/other/tea575x-tuner.c:91: warning: initialization makes pointer from integer without a cast
sound/i2c/other/tea575x-tuner.c:92: warning: implicit declaration of function 'video_get_drvdata'
sound/i2c/other/tea575x-tuner.c:92: warning: initialization makes pointer from integer without a cast
sound/i2c/other/tea575x-tuner.c:96: warning: implicit declaration of function '_IOR'
sound/i2c/other/tea575x-tuner.c:96: error: syntax error before 'struct'
sound/i2c/other/tea575x-tuner.c:99: error: 'v' undeclared (first use in this function)
sound/i2c/other/tea575x-tuner.c:99: error: (Each undeclared identifier is reported only once
sound/i2c/other/tea575x-tuner.c:99: error: for each function it appears in.)
sound/i2c/other/tea575x-tuner.c:108: warning: implicit declaration of function 'copy_to_user'
sound/i2c/other/tea575x-tuner.c:112: warning: implicit declaration of function '_IOWR'
sound/i2c/other/tea575x-tuner.c:112: error: syntax error before 'struct'
sound/i2c/other/tea575x-tuner.c:115: warning: implicit declaration of function 'copy_from_user'
sound/i2c/other/tea575x-tuner.c: At top level:
sound/i2c/other/tea575x-tuner.c:129: error: syntax error before 'case'
sound/i2c/other/tea575x-tuner.c:146: warning: type defaults to 'int' in declaration of 'snd_tea575x_set_freq'
sound/i2c/other/tea575x-tuner.c:146: warning: parameter names (without types) in function declaration
sound/i2c/other/tea575x-tuner.c:146: error: conflicting types for 'snd_tea575x_set_freq'
sound/i2c/other/tea575x-tuner.c:62: error: previous definition of 'snd_tea575x_set_freq' was here
sound/i2c/other/tea575x-tuner.c:146: warning: data definition has no type or storage class
sound/i2c/other/tea575x-tuner.c:147: error: syntax error before 'return'
sound/i2c/other/tea575x-tuner.c:151: error: syntax error before '&' token
sound/i2c/other/tea575x-tuner.c:152: error: syntax error before '.' token
sound/i2c/other/tea575x-tuner.c:152: warning: type defaults to 'int' in declaration of 'strcpy'
sound/i2c/other/tea575x-tuner.c:152: warning: function declaration isn't a prototype
sound/i2c/other/tea575x-tuner.c:152: error: conflicting types for 'strcpy'
sound/i2c/other/tea575x-tuner.c:152: warning: data definition has no type or storage class
sound/i2c/other/tea575x-tuner.c: In function 'snd_tea575x_init':
sound/i2c/other/tea575x-tuner.c:194: warning: implicit declaration of function 'video_set_drvdata'
sound/i2c/other/tea575x-tuner.c:197: error: 'video_exclusive_open' undeclared (first use in this function)
sound/i2c/other/tea575x-tuner.c:198: error: 'video_exclusive_release' undeclared (first use in this function)
sound/i2c/other/tea575x-tuner.c:200: warning: implicit declaration of function 'video_register_device'
sound/i2c/other/tea575x-tuner.c:200: error: 'VFL_TYPE_RADIO' undeclared (first use in this function)
sound/i2c/other/tea575x-tuner.c: In function 'snd_tea575x_exit':
sound/i2c/other/tea575x-tuner.c:215: warning: implicit declaration of function 'video_unregister_device'
distcc[7333] ERROR: compile sound/i2c/other/tea575x-tuner.c on x/32 failed
make[1]: *** [sound/i2c/other/tea575x-tuner.o] Error 1
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/video/matrox/matroxfb_base.c: In function 'matroxfb_ioctl':
drivers/video/matrox/matroxfb_base.c:1140: error: 'VIDIOC_S_CTRL_OLD' undeclared (first use in this function)
drivers/video/matrox/matroxfb_base.c:1140: error: (Each undeclared identifier is reported only once drivers/video/matrox/matroxfb_base.c:1140: error: for each function it appears in.)
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Removed the switch..case block in blackbird_probe for setting encoder height
based on video standard. All blackbird devices can rely on tvnorm->id to
retrieve this information from the cx2388x video decoder - tuner_formats
should not be used to determine the encoding video standard.
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Most uses a tda988[5/6/7] IF demodulator as part of the device.
Having this as a separate stuff makes harder to configure it, since there
are some tda9887 options that are tuner-dependent and should be bound into
tuner-types structures.
This patch merges tda9887 module into tuner. More work is required to make
tuner-types to properly use it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
It's better to use explicit enums. It reduces the chance of someone
inserting new enums in the middle which would break things.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
CX2341X port was always set to 'memory', but 'streaming' is also possible
ivtv uses the memory (DMA) interface with the CX2341X, while pvrusb2 and
cx88-blackbird use the streaming interface. This setting is now selectable
by the driver.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
MPEG-1 always uses CBR, so make the BITRATE_MODE control inactive.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Put old MPEGCOMP API under #if __KERNEL__ and issue warnings when used.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Based on recent tests it turned out that some features are not implemented.
This has now been documented.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Replace hardcoded control description by the standard ones supplied
by v4l2-common.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Adds the cx2341x.c module that handles the programming of the Conexant
cx23415/6 MPEG encoder chip used by cx88-blackbird, pvrusb2 and ivtv.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Control processing is often duplicated in the various drivers. Unfortunately,
simple things like the names of controls are often different between drivers,
even though it is the same controls. Adding in the new extended controls and
the need for having control helper functions became apparent.
Several functions have now been added to v4l2-common to do things like
filling the v4l2_queryctrl and v4l2_querymenu structs, to check for
valid control input and to move to the next control when enumerating
over all controls.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
videodev.c copies the control list specified in struct v4l2_ext_controls
to kernel space.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
The old, experimental, VIDIOC_S/G_CODEC API to pass MPEG parameters is now
obsolete and is replaced by 'extended controls' which offer more flexibility
and are hopefully more future proof.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Henrik Sjoberg <hsjo@epact.se>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Do not overflow kernel memory when more than BT878_MAX devices are
present.
Signed-off-by: Sigmund Augdal Helberg <sigmund@snap.tv>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Bryan Scott <sirbryan@gmail.com>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>