- 25 Oct, 2004 40 commits
-
-
Neil Brown authored
When retrying a read request, we need to "Reset" the bio. It is easiest to get this right if we discard the bio we have and re-clone it. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
Each md personality keeps a list of devices that are currently active in the array (mdk_rdev_t). As these can potentially be removed at any time, some locking is needed when accessing entries in the list. Currently this involves a spinlock, but all the spinlocking this imposed in unplug_slaves bothered me. So, I have changed it to use rcu locking. This is more appropriate as objects are removed only very rarely, and there is no cost in waiting a little while for a remove to succeed. Also, all changes to the list of devices are performed by the per-array thread (calling md_check_recovery) and so are completely single threaded, so no locking between writers is needed at all. Finally, devices are never added or removed while resync is happening, so resync doesn't need to worry about locking at all. So with this patch, the spinlocking is replaced with rcu read locking and synchronize_kernel. The rcu_read_lock is held while dereferencing a possible device, and the nr_pending count is atomically incremented if the device is to be held outside of the rcu_read_lock. When removing a device, if the nr_pending count appears to be zero, we set the list entry to NULL and call synchronize_kernel(). If the count is still zero after this, we have a safe removal. If it is non-zero, then someone has just started using it so we put the pointer back and fail the removal. When the new user finally drops it's reference, that will cause the per-array thread to wake up again and retry the removal. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
These can cause resync to spin when there is a faulty drive. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
The ->nr_pending counted should always be decremented with rdev_dec_pending, as this need to do things when the count hits zero. There were a few places where it was being decremented directly. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
There are currently subtle differences in the different personalities concerning when subdevices are unplugged (faulty? nr_pending?). This patch makes them sll uniform. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
The functions are all subtly different. This patch makes them all much the same. In particular, EOPNOTSUPP gets returned by all is appropriate. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
Both raid1 and multipath have a "retry_list" which is global, so all raid1 arrays (for example) us the same list. This is rather ugly, and it is simple enough to make it per-array, so this patch does that. It also changes to multipath code to use list.h lists instead of roll-your-own. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Neil Brown authored
Following are 7 patches for md They all grew out of a desire to redo the locking in unplug_slave. Getting and dropping a spinlock so often for very little gain (it would be nearly impossible to lose the relevant race) really bothered me. I finally figured that I could reply it with rcu locking which is very light wait, and quite up to the task. One the way I found an number of inconsistencies that needed cleaning up and even a few bugs to fix. The first 6 patches deal with these inconsistencies and bugs. The last redoes the locking for adding/removing/accessing devices within md personalities. This patch: md_flush_all() isn't needed as each personality defines its own issue_flush_fn. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Darren Hart authored
The following patch against the latest mm fixes several problems with active_load_balance(). Rather than starting with the highest allowable domain (SD_LOAD_BALANCE is still set) and depending on the order of the cpu groups, we start at the lowest domain and work up until we find a suitable CPU or run out of options (SD_LOAD_BALANCE is no longer set). This is a more robust approach as it is more explicit and not subject to the construction order of the cpu groups. We move the test for busiest_rq->nr_running <=1 into the domain loop so we don't continue to try and move tasks when there are none left to move. This new logic (testing for nr_running in the domain loop) should make the busiest_rq==target_rq condition really impossible, so we have replaced the graceful continue on fail with a BUG_ON. (Bjorn Helgaas, please confirm) We eliminate the exclusion of the busiest_cpu's group from the pool of available groups to push to as it is the ideal group to push to, even if not very likely to be available. Note that by removing the test for group==busy_group and allowing it to also be tested for suitability, the running time is nearly the same. We no longer force the destination CPU to be in a group of completely idle CPUs, nor to be the last in that group. Signed-off-by: Darren Hart <dvhltc@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Akinobu Mita authored
The number of times schedule() left the processor idle in the /proc/schedstat (runqueue.sched_goidle) seems to be wrong. The schedule() statistics should satisfy the equation: sched_cnt == sched_noswitch + sched_switch + sched_goidle (http://eaglet.rain.com/rick/linux/schedstat/v10/format-10.html) The below patch fix this, and I have confirmed to be fixed with: # grep ^cpu /proc/schedstat | awk '{print $6+$7+$9, $8}' Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
John Hawkes authored
A large number of processes that are pinned to a single CPU results in every other CPU's load_balance() seeing this overloaded CPU as "busiest", yet move_tasks() never finds a task to pull-migrate. This condition occurs during module unload, but can also occur as a denial-of-service using sys_sched_setaffinity(). Several hundred CPUs performing this fruitless load_balance() will livelock on the busiest CPU's runqueue lock. A smaller number of CPUs will livelock if the pinned task count gets high. This simple patch remedies the more common first problem: after a move_tasks() failure to migrate anything, the balance_interval increments. Using a simple increment, vs. the more dramatic doubling of the balance_interval, is conservative and yet also effective. Signed-off-by: John Hawkes <hawkes@sgi.com> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Jesse Barnes authored
Small bug fix for domains that don't load balance (like those that only balance on exec for example). Signed-off-by: John Hawkes <hawkes@sgi.com> Signed-off-by: Jesse Barnes <jbarnes@sgi.com> Acked-by: Nick Piggin <nickpiggin@yahoo.com.au> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
From: Frank Pavlic <pavlic@de.ibm.com> From: Thomas Spatzier <tspat@de.ibm.com> s390 network driver changes: - ctc/iucv: Use DECLARE_PER_CPU instead of extern DEFINE_PER_CPU. - lcs: Always set channel state to CH_STATE_INIT when stopping channels. - qeth: vlan fixes. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
From: Utz Bacher <utz.bacher@de.ibm.com> qdio changes: - Rename iqdio_is_inbound_q_done to tiqdio_is_inbound_q_done to keep function naming consistent. - Allocate qdio structures below 2GB. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
From: Christian Borntraeger <cborntra@de.ibm.com> Debug feature changes: - Add system control to stop the debug feature. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
From: Carsten Otte <cotte@de.ibm.com> From: Gerald Schaefer <geraldsc@de.ibm.com> Cleanup segment load/unload infrastructure. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
s390 core changes: - Load pid to cr4 on context switch. - Correct and check buffer length of cpcmd. Fix cpcmd inline assembly. - Add missing cc clobber to do_softirq insline assembly. - Regenerate default configuration. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Martin Schwidefsky authored
s390 core changes: - Force user process back to home space mode in space switch event exception handler. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paolo \'Blaisorblade\' Giarrusso authored
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paolo \'Blaisorblade\' Giarrusso authored
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paolo \'Blaisorblade\' Giarrusso authored
Add a couple entries to the linker script which are needed for SMP to link. (From Yan Burman) Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paolo \'Blaisorblade\' Giarrusso authored
- Make CONFIG_SMP depend on TT mode. Since SMP does not work in SKAS mode (it's still a TODO), add the dependency in the Kconfig. Also mark CONFIG_SMP as experimental. - Workaround kconfig warning: just for now (we wait for a "CONFIG_VIRTUAL_OS" to exclude physical hardware) create the CONFIG_INPUT option (fixed to N), to avoid complaints from make *config ARCH=um about it being undefined. - Mark HPPFS as broken and needing updates. - Update defconfig, both for new kernel options and for changes in the actual config. For instance, enable module support by default. - Update help text for some items and add a help to some other ones. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Adrian Bunk authored
Some small fixes for the SOFTWARE_SUSPEND help text. Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Pavel Machek authored
power_down may never ever fail, so it does not really need to return anything. Kill obsolete code and fixup old comments. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paul Mackerras authored
This patch is from John Rose <johnrose@austin.ibm.com>. The function __ioremap_explicit() misses a possible (obscure) case when reserving the imalloc area for the new region. This can result in the unexpected DLPAR-add failure for an I/O slot. The failure will be characterized by a kernel message resembling "could not obtain imalloc area for ea 0x..." Here's an explanation: At boot time, imalloc regions are created for the ranges of all PHBs. Upon removal of a child slot for one of these PHBs, the imalloc region is split so that the region for the child slot can be removed. A GFW testcase revealed the following scenario. A PHB is remapped at boot for virtual address range A through C. At boot, the partition owns a slot that spans from A to B. This slot is DLPAR-removed, leaving an imalloc region from B to C. At this point, the user DLPAR adds an EADS slot that was not present at boot, but is a child of the PHB. The new slot happens to have a range that directly matches the leftover PHB range, from B to C. The existing code does not expect this, so the operation fails. Signed-off-by: John Rose <johnrose@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paul Mackerras authored
This patch is from John Rose <johnrose@austin.ibm.com>. The patch below creates iommu_free_table(). Iommu tables are not currently freed in PPC64. This could cause a memory leak for DLPAR of an EADS slot. The function verifies that there are no outstanding TCE entries for the range of the table before freeing it. I added a call to iommu_free_table() to the code that dynamically removes a device node. This should be fairly symmetrical with the table allocation, which happens during dynamic addition of a device node. Signed-off-by: John Rose <johnrose@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paul Mackerras authored
This patch is from Linas Vepstas <linas@austin.ibm.com>. Race conditions during system shutdown after a firmware flash can sometimes lead to an invalid pointer deref (deref to freed memory). This patch fixes this. In addition, it makes sure that the proc entries created by the firmware flash module are removed when the module is unloaded. Signed-off-by: Linas Vepstas <linas@linas.org> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Paul Mackerras authored
When the EEH (enhanced i/o error handling) hardware on pSeries detects various kinds of PCI errors, it immediately freezes and isolates the slot of the offending PCI card. We get to know about that by noticing that reads from the device return all-1s, and then we have to do a firmware call to find out whether the all-1s value was due to a slot isolation. This patch adds a notifier so that other parts of the system (e.g. the RPA PCI hotplug driver) can know that a slot isolation event has occurred and take whatever recovery action is appropriate. The notifier is called in a workqueue function, although the read from the device that noticed the all-1s value may have been at interrupt level. As a precaution, if we keep trying to read from the device at interrupt level, and do 1000 reads without the workqueue getting a chance to run, we panic, on the grounds that we presumably have a badly-written driver which will spin forever in its interrupt routine, e.g. waiting for a bit in a device register to go to 0. This patch is based on an earlier patch by Linas Vepstas <linas@linas.org>. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
David Gibson authored
This patch removes many sparse warnings from the xmon code. Mostly K&R function declarations and 0-instead-of-NULLs. There are still a whole bunch of warnings in xmon/ppc-opc.c, which is a copy of a file from binutils. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
David Gibson authored
This patch squashes a handful of assorted sparse warnings in the ppc64 code. Should be pretty much trivial and self explanatory. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
David Gibson authored
Only compile vio.c on iSeries and pSeries, since other PPC64 platforms (PowerMac) don't use virtual IO. The resulting #ifdefs in dma.c are kind of ugly, but at least contained, and I can't see a nicer way of doing it for the time being. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Tom Rini authored
Since we directly -include $(clear_L2_L3) when needed, we need to point to the full path of it. Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Chris Wright authored
With this we're back to the times when changing skbuff.h only triggers rebuild of _net_ related stuff 8) This uncovered a bug in rmap.h, that was not including mm.h to get the definition of struct vm_area_struct, working by luck. Signed-off-by: Arnaldo Carvalho de Melo <acme@conectiva.com.br> Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Chris Wright authored
Stephen Smalley notes that send_sigurg isn't mediated by LSM in the same manner as send_sigio. Patch below is a slight modification of Stephen's original patch. It moves the security_file_send_sigiotask() hook into the sigio_perm(). The hook's fd and reason arguments are replaced with the signum. sigio_perm() and it's callers are updated to pass the signum through to the hook. In send_sigio case, the signum is simply fown->signum or SIGIO when signum is 0, however in send_sigurg the kernel doesn't use fown->signum, it always sends SIGURG. From: Stephen Smalley <sds@epoch.ncsc.mil> Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Randy Dunlap authored
Add support for x86_64 arch. to 'make checkstack' (checkstack.pl). Signed-off-by: Randy Dunlap <rddunlap@osdl.org> Acked-by: Jrn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Nick Piggin authored
Uses the zero length array which seems to be quite abundant throughout the tree to reduce the size of the zone padding to zero. 1536 before, 1152 afterwards for me. Also try to be a bit smarter about getting commonly accessed fields together, which surely can't be worse than before. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
sound/oss/msnd.c: In function `msnd_enable_irq': sound/oss/msnd.c:278: warning: implicit declaration of function `enable_irq' sound/oss/msnd.c: In function `msnd_disable_irq': sound/oss/msnd.c:307: warning: implicit declaration of function `disable_irq' sound/oss/msnd.c:323: `msnd_get_num_devs' undeclared here (not in a function) sound/oss/msnd.c:323: initializer element is not constant Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
David Howells authored
This patch shifts the key-related error codes up by one and inserts an ECANCELED error code where not already defined. It seems that has been defined in glibc without passing it back to the kernel:-/ Signed-Off-By: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Jesper Juhl authored
Patch adds a check of the return value and returns -EFAULT if __copy_to_user fails. Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk> Acked-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
This was the wrong fix - back it out and try again later. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-