aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-03-25MIPS: JAZZ: Convert to new irq_chip functionsThomas Gleixner1-8/+6
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2180/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: EMMA: Convert to new irq_chip functionsThomas Gleixner1-40/+27
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2179/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: DEC: Convert to new irq_chip functionsThomas Gleixner2-59/+24
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2178/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: bcm63xx: Convert to new irq_chip functionsThomas Gleixner1-45/+32
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2176/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: ath79: Convert to new irq_chip functionsThomas Gleixner1-13/+10
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2175/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: AR7: Convert to new irq_chip functionsThomas Gleixner1-21/+21
Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2174/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: Alchemy: Convert to new irq chip functionsThomas Gleixner2-57/+59
Fix the deadlock in set_type() while at it: The code called set_irq_chip_and_handler_name() resp. set_irq_chip() from the set_type() callback. That only works on UP and lock debugging disabled. Otherwise it would dead lock on desc->lock. __irq_set_chip_handler_name_locked() avoids that. Signed-off-by: Thomas Gleixner <[email protected]> To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2173/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Add CPU feature override file.Anoop P A1-0/+21
Signed-off-by: Anoop P A <[email protected]> To: [email protected] To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2045/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Platform support for On-chip MSP ethernet devices.Anoop P A4-1/+541
Some of MSP family SoC's come with legacy 100Mbps mspeth while some comes with newer Gigabit TSMAC.Following patch adds platform support for both types of MAC's. If TSMAC is not selected assume platform having legacy mspeth. Add gpio_macros as well which is required for resetting the PHY. [Ralf: Killed all typedefs.] Signed-off-by: Anoop P A <[email protected]> To: [email protected] To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2048/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Platform support for MSP on-chip USB controller.Anoop P A5-72/+335
Signed-off-by: Anoop P A <[email protected]> To: [email protected] To: [email protected] Cc: Anoop P A <[email protected]> Patchwork: https://patchwork.linux-mips.org/patch/2043/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Add VSMP/SMTC support.Anoop P A4-0/+194
[Ralf: Fixed more checkpatch assertions and inclusion of unnecessary header <linux/sched.h>.] Signed-off-by: Anoop P A <[email protected]> To: [email protected] To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2042/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Add vectored interrupt support.Anoop P A4-88/+397
This patch will add vectored interrupt setups required for MIPS MT modes. irq_cic has been restructured and moved per irq handler to different file. irq_cic has been re wrote to support mips MT modes ( VSMP / SMTC ) [Ralf: fixed some more checkpatch warnings.] Signed-off-by: Anoop P A <[email protected]> To: [email protected] To: [email protected] To: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2041/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: MSP71xx: Set up MSP VPE1 timer.Anoop P A1-1/+15
VPE1 timer will be required for VSMP / SMTC. [Ralf: Fixed a bunch of issues raised by checkpatch.] Signed-off-by: Anoop P A <[email protected]> Cc: [email protected] Cc: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/2049/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: SMTC: Move declaration of smtc_init_secondary to <asm/smtc.h>.Ralf Baechle2-3/+1
Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: Remove useless initialization.Ralf Baechle1-1/+0
Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: Microoptimize arch_{read,write}_lockRalf Baechle1-11/+11
Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25MIPS: Enable ARCH_DMA_ADDR_T_64BIT if (HIGHMEM && 64BIT_PHYS_ADDR) || 64BITFUJITA Tomonori1-0/+3
Signed-off-by: FUJITA Tomonori <[email protected]> To: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/1566/ Signed-off-by: Ralf Baechle <[email protected]>
2011-03-25Merge branch 'nfs-for-2.6.39' of ↵Linus Torvalds26-256/+1728
git://git.linux-nfs.org/projects/trondmy/nfs-2.6 * 'nfs-for-2.6.39' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (28 commits) Cleanup XDR parsing for LAYOUTGET, GETDEVICEINFO NFSv4.1 convert layoutcommit sync to boolean NFSv4.1 pnfs_layoutcommit_inode fixes NFS: Determine initial mount security NFS: use secinfo when crossing mountpoints NFS: Add secinfo procedure NFS: lookup supports alternate client NFS: convert call_sync() to a function NFSv4.1 remove temp code that prevented ds commits NFSv4.1: layoutcommit NFSv4.1: filelayout driver specific code for COMMIT NFSv4.1: remove GETATTR from ds commits NFSv4.1: add generic layer hooks for pnfs COMMIT NFSv4.1: alloc and free commit_buckets NFSv4.1: shift filelayout_free_lseg NFSv4.1: pull out code from nfs_commit_release NFSv4.1: pull error handling out of nfs_commit_list NFSv4.1: add callback to nfs4_commit_done NFSv4.1: rearrange nfs_commit_rpcsetup NFSv4.1: don't send COMMIT to ds for data sync writes ...
2011-03-25Merge branch 'for_linus' of ↵Linus Torvalds21-599/+1307
git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (43 commits) ext4: fix a BUG in mb_mark_used during trim. ext4: unused variables cleanup in fs/ext4/extents.c ext4: remove redundant set_buffer_mapped() in ext4_da_get_block_prep() ext4: add more tracepoints and use dev_t in the trace buffer ext4: don't kfree uninitialized s_group_info members ext4: add missing space in printk's in __ext4_grp_locked_error() ext4: add FITRIM to compat_ioctl. ext4: handle errors in ext4_clear_blocks() ext4: unify the ext4_handle_release_buffer() api ext4: handle errors in ext4_rename jbd2: add COW fields to struct jbd2_journal_handle jbd2: add the b_cow_tid field to journal_head struct ext4: Initialize fsync transaction ids in ext4_new_inode() ext4: Use single thread to perform DIO unwritten convertion ext4: optimize ext4_bio_write_page() when no extent conversion is needed ext4: skip orphan cleanup if fs has unknown ROCOMPAT features ext4: use the nblocks arg to ext4_truncate_restart_trans() ext4: fix missing iput of root inode for some mount error paths ext4: make FIEMAP and delayed allocation play well together ext4: suppress verbose debugging information if malloc-debug is off ... Fi up conflicts in fs/ext4/super.c due to workqueue changes
2011-03-25docs: fix dev_debug() braino in dynamic-debug-howto.txtJonathan Corbet1-2/+2
While looking at dynamic-debug-howto.txt, I noticed that it references dev_debug() (which doesn't exist) instead of dev_dbg() (which does exist). I'm lazy, so I choose to fix the document rather than changing every dev_dbg() call. Signed-off-by: Jonathan Corbet <[email protected]>
2011-03-25Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-blockLinus Torvalds1-2/+5
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: block: fix issue with calling blk_stop_queue() from the request_fn handler block: fix bug with inserting flush requests as sort/merge
2011-03-25genirq: Expand generic show_interrupts()Thomas Gleixner3-1/+22
Some archs want to print extra information for certain irq_chips which is per irq and not per chip. Allow them to provide a chip callback to print the chip name and the extra information. PowerPC wants to print the LEVEL/EDGE type information. Make it configurable. Signed-off-by: Thomas Gleixner <[email protected]>
2011-03-25block: fix issue with calling blk_stop_queue() from the request_fn handlerJens Axboe1-1/+1
When the queue work handler was converted to delayed work, the stopping was inadvertently made sync as well. Change this back to being async stop, using __cancel_delayed_work() instead of cancel_delayed_work(). Reported-by: Jeremy Fitzhardinge <[email protected]> Reported-by: Chris Mason <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
2011-03-25block: fix bug with inserting flush requests as sort/mergeJens Axboe1-1/+4
With the introduction of the on-stack plugging, we would assume that any request being inserted was a normal file system request. As flush/fua requires a special insert mode, this caused problems. Fix this up by checking for this in flush_plug_list() and use the appropriate insert mechanism. Big thanks goes to Markus Tripplesdorf for tirelessly testing patches, and to Sergey Senozhatsky for helping find the real issue. Reported-by: Markus Tripplesdorf <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
2011-03-25Merge branch 'master' of ↵Artem Bityutskiy8541-262875/+566504
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus-1 * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6: (9356 commits) [media] rc: update for bitop name changes fs: simplify iget & friends fs: pull inode->i_lock up out of writeback_single_inode fs: rename inode_lock to inode_hash_lock fs: move i_wb_list out from under inode_lock fs: move i_sb_list out from under inode_lock fs: remove inode_lock from iput_final and prune_icache fs: Lock the inode LRU list separately fs: factor inode disposal fs: protect inode->i_state with inode->i_lock lib, arch: add filter argument to show_mem and fix private implementations SLUB: Write to per cpu data when allocating it slub: Fix debugobjects with lockless fastpath autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd() autofs4 - remove autofs4_lock autofs4 - fix d_manage() return on rcu-walk autofs4 - fix autofs4_expire_indirect() traversal autofs4 - fix dentry leak in autofs4_expire_direct() autofs4 - reinstate last used update on access vfs - check non-mountpoint dentry might block in __follow_mount_rcu() ... NOTE! This merge commit was created to fix compilation error. The block tree was merged upstream and removed the 'elv_queue_empty()' function which the new 'mtdswap' driver is using. So a simple merge of the mtd tree with upstream does not compile. And the mtd tree has already be published, so re-basing it is not an option. To fix this unfortunate situation, I had to merge upstream into the mtd-2.6.git tree without committing, put the fixup patch on top of this, and then commit this. The result is that we do not have commits which do not compile. In other words, this merge commit "merges" 3 things: the MTD tree, the upstream tree, and the fixup patch.
2011-03-25mtd: mtdswap: fix compilation warningArtem Bityutskiy1-1/+1
Fix the following compilation warning: drivers/mtd/mtdswap.c: In function ‘mtdswap_pick_gc_eblk’: drivers/mtd/mtdswap.c:859: warning: ‘idx’ may be used uninitialized in this function drivers/mtd/mtdswap.c:859: note: ‘idx’ was declared here Initialize idx to -1 because this value means "no tree choosen". Signed-off-by: Artem Bityutskiy <[email protected]>
2011-03-25mtdswap: kill strict error handling optionYang Ruirui2-15/+1
As Artem Bityutskiy suggested: this option is controversial, as we do not really have any prove it is useful. And it is too much to have it as a config parameter. So, better kill it and let the real mtdswap users decide whether it is needed or not. Signed-off-by: Yang Ruirui<[email protected]> Signed-off-by: Artem Bityutskiy <[email protected]>
2011-03-25ALSA: asihpi - Update verbose debug print macrosEliot Blennerhassett1-53/+47
Replace local VPRINTK1 with snd_printdd. Create local snd_printddd instead of VPRINTK2 for most verbose debug. In most cases let snd_printk supply default level for messages. Signed-off-by: Eliot Blennerhassett <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-03-25ALSA: asihpi - Improve non-busmaster adapter operationEliot Blennerhassett1-11/+10
Make playback silence callback a no-op, card automatically outputs silence when written data runs out. Increasing update interval and thus minimum period avoids xrun on startup or because of timer jitter. Signed-off-by: Eliot Blennerhassett <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-03-25ALSA: asihpi - Support single-rate no-SRC cardsEliot Blennerhassett1-9/+7
Cards without settable local samplerate and without SRC still must have a valid samplerate. This fixed rate is determined by reading the current rate for the card. Signed-off-by: Eliot Blennerhassett <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-03-25futex: Fix WARN_ON() test for UPSteven Rostedt1-2/+2
An update of the futex code had a WARN_ON(!spin_is_locked(q->lock_ptr)) But on UP, spin_is_locked() is always false, and will trigger this warning, and even worse, it will exit the function without doing the necessary work. Converting this to a WARN_ON_SMP() fixes the problem. Reported-by: Richard Weinberger <[email protected]> Tested-by: Richard Weinberger <[email protected]> Signed-off-by: Steven Rostedt <[email protected]> Acked-by: Thomas Gleixner <[email protected]> Acked-by: Peter Zijlstra <[email protected]> Acked-by: Darren Hart <[email protected]> Cc: Lai Jiangshan <[email protected]> LKML-Reference: <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
2011-03-25WARN_ON_SMP(): Allow use in if() statements on UPSteven Rostedt1-1/+27
Both WARN_ON() and WARN_ON_SMP() should be able to be used in an if statement. if (WARN_ON_SMP(foo)) { ... } Because WARN_ON_SMP() is defined as a do { } while (0) on UP, it can not be used this way. Convert it to the same form that WARN_ON() is, even when CONFIG_SMP is off. Signed-off-by: Steven Rostedt <[email protected]> Acked-by: Thomas Gleixner <[email protected]> Acked-by: Peter Zijlstra <[email protected]> Acked-by: Darren Hart <[email protected]> Cc: Lai Jiangshan <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Andrew Morton <[email protected]> LKML-Reference: <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
2011-03-25ALSA: HDA: New AD1984A model for Dell Precision R5500David Henningsson1-0/+89
For codec AD1984A, add a new model to support Dell Precision R5500 or the microphone jack won't work correctly. BugLink: http://bugs.launchpad.net/bugs/741516 Tested-by: Kent Baxley <[email protected]> Cc: [email protected] Signed-off-by: David Henningsson <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-03-25perf, x86: Complain louder about BIOSen corrupting CPU/PMU state and continueIngo Molnar1-2/+7
Eric Dumazet reported that hardware PMU events do not work on his system, due to the BIOS corrupting PMU state: Performance Events: PEBS fmt0+, Core2 events, Broken BIOS detected, using software events only. [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 43003c) Linus suggested that we continue in the face of such BIOS-induced CPU state corruption: http://lkml.org/lkml/2011/3/24/608 Such BIOSes will have to be fixed - Linux developers rely on a working and fully capable PMU and the BIOS interfering with the CPU's PMU state is simply not acceptable. So this patch changes perf to continue when it detects such BIOS interaction, some hardware events may be unreliable due to the BIOS writing and re-writing them - there's not much the kernel can do about that but to detect the corruption and report it. Reported-and-tested-by: Eric Dumazet <[email protected]> Suggested-by: Linus Torvalds <[email protected]> Acked-by: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Arnaldo Carvalho de Melo <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Steven Rostedt <[email protected]> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <[email protected]>
2011-03-25ALSA: vmalloc buffers should use normal mmapBenjamin Herrenschmidt2-12/+1
It's a big no-no to use pgprot_noncached() when mmap'ing such buffers into userspace since they are mapped cachable in kernel space. This can cause all sort of interesting things ranging from to garbled sound to lockups on various architectures. I've observed that usb-audio is broken on powerpc 4xx for example because of that. Also remove the now unused snd_pcm_lib_mmap_noncached(). It's an arch business to know when to use uncached mappings, there's already hacks for MIPS inside snd_pcm_default_mmap() and other archs are supposed to use dma_mmap_coherent(). (See my separate patch that adds dma_mmap_coherent() to powerpc) Signed-off-by: Benjamin Herrenschmidt <[email protected]> CC: <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
2011-03-25route: Take the right src and dst addresses in ip_route_newportsSteffen Klassert1-2/+2
When we set up the flow informations in ip_route_newports(), we take the address informations from the the rt_key_src and rt_key_dst fields of the rtable. They appear to be empty. So take the address informations from rt_src and rt_dst instead. This issue was introduced by commit 5e2b61f78411be25f0b84f97d5b5d312f184dfd1 ("ipv4: Remove flowi from struct rtable.") Signed-off-by: Steffen Klassert <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2011-03-25m68k: merge m68k and m68knommu arch directoriesGreg Ungerer170-7131/+6916
There is a lot of common code that could be shared between the m68k and m68knommu arch branches. It makes sense to merge the two branches into a single directory structure so that we can more easily share that common code. This is a brute force merge, based on a script from Stephen King <[email protected]>, which was originally written by Arnd Bergmann <[email protected]>. > The script was inspired by the script Sam Ravnborg used to merge the > includes from m68knommu. For those files common to both arches but > differing in content, the m68k version of the file is renamed to > <file>_mm.<ext> and the m68knommu version of the file is moved into the > corresponding m68k directory and renamed <file>_no.<ext> and a small > wrapper file <file>.<ext> is used to select between the two version. Files > that are common to both but don't differ are removed from the m68knommu > tree and files and directories that are unique to the m68knommu tree are > moved to the m68k tree. Finally, the arch/m68knommu tree is removed. > > To select between the the versions of the files, the wrapper uses > > #ifdef CONFIG_MMU > #include <file>_mm.<ext> > #else > #include <file>_no.<ext> > #endif On top of this file merge I have done a simplistic merge of m68k and m68knommu Kconfig, which primarily attempts to keep existing options and menus in place. Other than a handful of options being moved it produces identical .config outputs on m68k and m68knommu targets I tested it on. With this in place there is now quite a bit of scope for merge cleanups in future patches. Signed-off-by: Greg Ungerer <[email protected]>
2011-03-24Merge branch 'for-linus' of ↵Linus Torvalds27-536/+615
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: fs: simplify iget & friends fs: pull inode->i_lock up out of writeback_single_inode fs: rename inode_lock to inode_hash_lock fs: move i_wb_list out from under inode_lock fs: move i_sb_list out from under inode_lock fs: remove inode_lock from iput_final and prune_icache fs: Lock the inode LRU list separately fs: factor inode disposal fs: protect inode->i_state with inode->i_lock autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd() autofs4 - remove autofs4_lock autofs4 - fix d_manage() return on rcu-walk autofs4 - fix autofs4_expire_indirect() traversal autofs4 - fix dentry leak in autofs4_expire_direct() autofs4 - reinstate last used update on access vfs - check non-mountpoint dentry might block in __follow_mount_rcu()
2011-03-24[media] rc: update for bitop name changesStephen Rothwell1-3/+3
Fix the following compile failure: drivers/media/rc/ite-cir.c: In function 'ite_decode_bytes': drivers/media/rc/ite-cir.c:190: error: implicit declaration of function 'generic_find_next_le_bit' drivers/media/rc/ite-cir.c:199: error: implicit declaration of function 'generic_find_next_zero_le_bit' Caused by commit 620a32bba4a2 ("[media] rc: New rc-based ite-cir driver for several ITE CIRs") interacting with commit c4945b9ed472 ("asm-generic: rename generic little-endian bitops functions"). Signed-off-by: Stephen Rothwell <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2011-03-24fs: simplify iget & friendsChristoph Hellwig1-179/+83
Merge get_new_inode/get_new_inode_fast into iget5_locked/iget_locked as those were the only callers. Remove the internal ifind/ifind_fast helpers - ifind_fast only had a single caller, and ifind had two callers wanting it to do different things. Also clean up the comments in this area to focus on information important to a developer trying to use it, instead of overloading them with implementation details. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: pull inode->i_lock up out of writeback_single_inodeDave Chinner1-7/+11
First thing we do in writeback_single_inode() is take the i_lock and the last thing we do is drop it. A caller already holds the i_lock, so pull the i_lock out of writeback_single_inode() to reduce the round trips on this lock during inode writeback. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: rename inode_lock to inode_hash_lockDave Chinner6-56/+63
All that remains of the inode_lock is protecting the inode hash list manipulation and traversals. Rename the inode_lock to inode_hash_lock to reflect it's actual function. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: move i_wb_list out from under inode_lockDave Chinner8-48/+70
Protect the inode writeback list with a new global lock inode_wb_list_lock and use it to protect the list manipulations and traversals. This lock replaces the inode_lock as the inodes on the list can be validity checked while holding the inode->i_lock and hence the inode_lock is no longer needed to protect the list. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: move i_sb_list out from under inode_lockDave Chinner6-56/+67
Protect the per-sb inode list with a new global lock inode_sb_list_lock and use it to protect the list manipulations and traversals. This lock replaces the inode_lock as the inodes on the list can be validity checked while holding the inode->i_lock and hence the inode_lock is no longer needed to protect the list. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: remove inode_lock from iput_final and prune_icacheDave Chinner5-22/+17
Now that inode state changes are protected by the inode->i_lock and the inode LRU manipulations by the inode_lru_lock, we can remove the inode_lock from prune_icache and the initial part of iput_final(). instead of using the inode_lock to protect the inode during iput_final, use the inode->i_lock instead. This protects the inode against new references being taken while we change the inode state to I_FREEING, as well as preventing prune_icache from grabbing the inode while we are manipulating it. Hence we no longer need the inode_lock in iput_final prior to setting I_FREEING on the inode. For prune_icache, we no longer need the inode_lock to protect the LRU list, and the inodes themselves are protected against freeing races by the inode->i_lock. Hence we can lift the inode_lock from prune_icache as well. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: Lock the inode LRU list separatelyDave Chinner1-9/+30
Introduce the inode_lru_lock to protect the inode_lru list. This lock is nested inside the inode->i_lock to allow the inode to be added to the LRU list in iput_final without needing to deal with lock inversions. This keeps iput_final() clean and neat. Further, where marking the inode I_FREEING and removing it from the LRU, move the LRU list manipulation within the inode->i_lock to keep the list manipulation consistent with iput_final. This also means that most of the open coded LRU list removal + unused inode accounting can now use the inode_lru_list_del() wrappers which cleans the code up further. However, this locking change means what the LRU traversal in prune_icache() inverts this lock ordering and needs to use trylock semantics on the inode->i_lock to avoid deadlocking. In these cases, if we fail to lock the inode we move it to the back of the LRU to prevent spinning on it. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: factor inode disposalDave Chinner1-63/+41
We have a couple of places that dispose of inodes. factor the disposal into evict() to isolate this code and make it simpler to peel away the inode_lock from the code. While doing this, change the logic flow in iput_final() to separate the different cases that need to be handled to make the transitions the inode goes through more obvious. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24fs: protect inode->i_state with inode->i_lockDave Chinner11-74/+174
Protect inode state transitions and validity checks with the inode->i_lock. This enables us to make inode state transitions independently of the inode_lock and is the first step to peeling away the inode_lock from the code. This requires that __iget() is done atomically with i_state checks during list traversals so that we don't race with another thread marking the inode I_FREEING between the state check and grabbing the reference. Also remove the unlock_new_inode() memory barrier optimisation required to avoid taking the inode_lock when clearing I_NEW. Simplify the code by simply taking the inode->i_lock around the state change and wakeup. Because the wakeup is no longer tricky, remove the wake_up_inode() function and open code the wakeup where necessary. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Al Viro <[email protected]>
2011-03-24ipv4: Fix nexthop caching wrt. scoping.David S. Miller4-20/+16
Move the scope value out of the fib alias entries and into fib_info, so that we always use the correct scope when recomputing the nexthop cached source address. Reported-by: Julian Anastasov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2011-03-24Merge branch 'slab/urgent' of ↵Linus Torvalds1-3/+3
git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 * 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: SLUB: Write to per cpu data when allocating it slub: Fix debugobjects with lockless fastpath