Andrew Morton [Thu, 4 Jul 2002 15:30:39 +0000 (08:30 -0700)]
[PATCH] remove swap_get_block()
Patch from Christoph Hellwig removes swap_get_block().
I was sort-of hanging onto this function because it is a standard
get_block function, and maybe perhaps it could be used to make swap use
the regular filesystem I/O functions. We don't want to do that, so
kill it.
Andrew Morton [Thu, 4 Jul 2002 15:30:34 +0000 (08:30 -0700)]
[PATCH] pdflush cleanup
Writeback/pdflush cleanup patch from Steven Augart
* Exposes nr_pdflush_threads as /proc/sys/vm/nr_pdflush_threads, read-only.
(I like this - I expect that management of the pdflush thread pool
will be important for many-spindle machines, and this is a neat way
of getting at the info).
* Adds minimum and maximum checking to the five writable pdflush
and fs-writeback parameters.
* Minor indentation fix in sysctl.c
* mm/pdflush.c now includes linux/writeback.h, which prototypes
pdflush_operation. This is so that the compiler can
automatically check that the prototype matches the definition.
Andrew Morton [Thu, 4 Jul 2002 15:30:20 +0000 (08:30 -0700)]
[PATCH] Remove ext3's buffer_head cache
Removes ext3's open-coded inode and allocation bitmap LRUs.
This patch includes a cleanup to ext3_new_block(). The local variables
`bh', `bh2', `i', `j', `k' and `tmp' have been renamed to something
more palatable.
Andrew Morton [Thu, 4 Jul 2002 15:30:10 +0000 (08:30 -0700)]
[PATCH] per-cpu buffer_head cache
ext2 and ext3 implement a custom LRU cache of buffer_heads - the eight
most-recently-used inode bitmap buffers and the eight MRU block bitmap
buffers.
I don't like them, for a number of reasons:
- The code is duplicated between filesystems
- The functionality is unavailable to other filesystems
- The LRU only applies to bitmap buffers. And not, say, indirects.
- The LRUs are subtly dependent upon lock_super() for protection:
without lock_super protection a bitmap could be evicted and freed
while in use.
And removing this dependence on lock_super() gets us one step on
the way toward getting that semaphore out of the ext2 block allocator -
it causes significant contention under some loads and should be a
spinlock.
- The LRUs pin 64 kbytes per mounted filesystem.
Now, we could just delete those LRUs and rely on the VM to manage the
memory. But that would introduce significant lock contention in
__find_get_block - the blockdev mapping's private_lock and page_lock
are heavily used.
So this patch introduces a transparent per-CPU bh lru which is hidden
inside __find_get_block(), __getblk() and __bread(). It is designed to
shorten code paths and to reduce lock contention. It uses a seven-slot
LRU. It achieves a 99% hit rate in `dbench 64'. It provides benefit
to all filesystems.
The next patches remove the open-coded LRUs from ext2 and ext3.
Taken together, these patches are a code cleanup (300-400 lines gone),
and they reduce lock contention. Anton tested these patches on the
32-way and demonstrated a throughput improvement of up to 15% on
RAM-only dbench runs. See http://samba.org/~anton/linux/2.5.24/dbench/
Most of this benefit is from avoiding find_get_page() on the blockdev
mapping. Because the generic LRU copes with indirect blocks as well as
bitmaps.
Andrew Morton [Thu, 4 Jul 2002 15:30:04 +0000 (08:30 -0700)]
[PATCH] Fix 3c59x driver for some 3c566B's
Fix from Rahul Karnik and Donald Becker - some new 3c566B mini-PCI NICs
refuse to power up the transceiver unless we tickle an undocumented bit
in an undocumented register. They worked this out by before-and-after
diffing of the register contents when it was set up by the Windows
driver.
Jens Axboe [Thu, 20 Jun 2002 07:05:46 +0000 (00:05 -0700)]
[PATCH] uninline elv_next_request()
Uninline elv_next_request() and move it to elevator.c, where it belongs.
Because of CURRENT declaration, this actually saves lots of space. From
Andrew.
Robert Kuebel [Thu, 20 Jun 2002 06:54:52 +0000 (23:54 -0700)]
[PATCH] namespace.c - compiler warning
init_rootfs() (from ramfs) doesn't appear in any header file. I didn't
see any that looked like a good home, so lets put a prototype at the top
of fs/namespace.c. This only use of this function is in namespace.c.
Robert Kuebel [Thu, 20 Jun 2002 06:54:37 +0000 (23:54 -0700)]
[PATCH] 3c509.c - 2_2
This patch makes sure the 3c509 module license is always GPL. Currently
the MODULE_LICENSE() marco is only used when CONFIG_ISAPNP or
CONFIG_ISAPNP_MODULE is defined. I have moved MODULE_LICENSE() to the
#ifdef MODULE section at the bottom of 3c509.c.
[PATCH] remove unnecessary parentheses from expand()
Not sure why I forgot to do this, but here is a small bit of tidying up
of some leftover parentheses from the memlist macro removal. The
parentheses are just noise and should go.
Stephen Rothwell [Thu, 20 Jun 2002 06:53:13 +0000 (23:53 -0700)]
[PATCH] Consolidate sys_pause
14 of our 17 architectures define sys_pause exactly the same
way. The other three don't define it at all. I assume glibc
translates pause() into sigsuspend() or something.
Greg Banks [Thu, 20 Jun 2002 06:51:51 +0000 (23:51 -0700)]
[PATCH] PATCH: kconfig wrong arch symbols
Three arch-determining symbols in drivers/mtd/maps/Config.in are wrong.
They have apparently been generated using the sensible pattern "CONFIG_FOO"
for an architecture "foo"; unfortunately the architectures are not sensible.
CONFIG_SPARC should be CONFIG_SPARC32
CONFIG_I386 should be CONFIG_X86
CONFIG_SH should be CONFIG_SUPERH
The config language is *not* shell. The construct "[ foo ] || [ bar ]"
is legal in shell but not in the config language, where we should use
the equivalent "[ foo -o bar ]"
Three symbols CONFIG_BLK_DEV_ATARAID, CONFIG_BLK_DEV_ATARAID_PDC, and
CONFIG_BLK_DEV_ATARAID_HPT depend on CONFIG_EXPERIMENTAL but do
not say so in their banners.
Four symbols CONFIG_ATM_CLIP, CONFIG_ATM_CLIP_NO_ICMP, CONFIG_ATM_LANE,
and CONFIG_ATM_MPOA depend on CONFIG_EXPERIMENTAL but do not say so
in their banners.
Greg Banks [Thu, 20 Jun 2002 06:42:50 +0000 (23:42 -0700)]
[PATCH] PATCH 2.5: kconfig lowercase EXPERIMENTAL tag
The convention is that symbols that depend on $CONFIG_EXPERIMENTAL are
marked in the banner with the string (EXPERIMENTAL). There are 4 cases
where that string is correctly used but is lowercase instead of uppercase.
Greg Banks [Thu, 20 Jun 2002 06:42:36 +0000 (23:42 -0700)]
[PATCH] PATCH 2.5: kconfig choice default value
The default value specified as the last word of the "choice" statement
should be a unique abbreviation of one of the sub-prompts, not some
random string never seen before.
Rusty Russell [Thu, 20 Jun 2002 06:41:54 +0000 (23:41 -0700)]
[PATCH] Fix SMP compilation with 'multiquad' driver
The 2.4.18pre10 kernel, like many if its predecessors, can't compile
the multiquad driver in an SMP kernel (maybe only as a module; it's
been a long time since I wrote this fix). Here's a patch.
Arnd Bergmann [Thu, 20 Jun 2002 06:41:41 +0000 (23:41 -0700)]
[PATCH] fix lots of warnings about 'struct tty_driver'
When compiling 2.5.20 (and ealier, likely) without procfs, the declaration
for struct tty_driver is missing in proc_fs.h, causing many compiler warnings
that are fixed by this patch.
Andrey Panin [Thu, 20 Jun 2002 06:41:00 +0000 (23:41 -0700)]
[PATCH] add unlikely() into add_timer()
This micropatch adds unlikely() macro into add_timer() bug check code.
Without this path gcc 3.1 makes bad thing reordering printk() into
the middle of function body.
Andreas Dilger [Thu, 20 Jun 2002 06:40:46 +0000 (23:40 -0700)]
[PATCH] TRIVIAL EPERM -> EACCESS
the following micro-patch changes ext[23]_ioctl to return EACCES
(permission denied) instead of EPERM (operation not permitted) if
the caller is not authorized to change the flags on a file.
Andreas Bombe [Thu, 20 Jun 2002 06:40:32 +0000 (23:40 -0700)]
[PATCH] Fix bashisms in scripts_patch-kernel
The following trivial patch makes the patch-kernel script executable by
a bare bone POSIX shell like ash. Either that, or the interpreter line
has to be changed to /bin/bash.
The same patch applies to 2.4 (with some line offset).
Robert Love [Thu, 20 Jun 2002 06:07:45 +0000 (23:07 -0700)]
[PATCH] mark 3 variables as __initdata
The attached patch marks the following variables with __initdata:
arch/i386/kernel/mpparse.c :: static unsigned int num_processors
arch/i386/kernel/smpboot.c :: static int smp_b_stepping
arch/i386/kernel/smpboot.c :: static int max_cpus
The data is static and only used by __init functions so can successfully
be jettisoned after boot. Compiled and booted successfully on an SMP
machine.
I also set max_cpus to NR_CPUS instead of -1. Besides being the
logically correct value and simplifying a loop elsewhere, this change
allows NR_CPUS to be set to various values other than the normal 32
which is growing in utility with the hotplug CPU changes now in
mainline.
Rusty Russell [Thu, 20 Jun 2002 05:42:08 +0000 (22:42 -0700)]
[PATCH] Async Futex
This patch adds a FUTEX_FD call, for opening a file descriptor
attached to a futex, which can be used with poll, select or SIGIO.
Rewritten so that closing fd unpins page, as per Linus's suggestion,
and fixed not to call poll_wait with a spinlock as per Martin Wirth's
sharp eyes.
Albert Cranford [Thu, 20 Jun 2002 05:40:05 +0000 (22:40 -0700)]
[PATCH] 2.5.23 i2c updates 4/4
i2c-elektor.c:Adding call to pcf_isa_init to i2c_pcfisa_init causes:
i2c-elektor.o: In function `i2c_pcfisa_init':
i2c-elektor.o(.text.init+0x95): undefined reference to `local symbol
i2c-elektor.c: fix by removing __exit for inline compiling.
Albert Cranford [Thu, 20 Jun 2002 05:39:52 +0000 (22:39 -0700)]
[PATCH] 2.5.23 i2c updates 3/4
i2c-algo-bit.c: Leave kernel time_before/after_eq
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
Remove #include <linux/sched.h> since i2c.h has it now.
i2c-algo-pcf.c: Remove #include <linux/sched.h> since i2c.h has it now.
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
Remove #include <linux/sched.h> since i2c.h has it now.
i2c/i2c-elektor.c: Leave kernel __exit pcf_isa_exit(void)
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
i2c-elv.c: Leave kernel __exit bit_elv_exit(void)
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
i2c-philips-par.c: Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
i2c/i2c-velleman.c: Leave kernel __exit bit_velle_exit(void)
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
Drop i2c-algo-8xx.[ch] deltas
Drop i2c-algo-ppc405.[ch] deltas
Drop i2c-pcf-epp.c deltas
Drop i2c-ppc405.[ch] deltas
Drop i2c-ppc405adap.h deltas
Drop i2c-pport.c deltas
Drop i2c-rpx.c deltas
Albert Cranford [Thu, 20 Jun 2002 05:39:39 +0000 (22:39 -0700)]
[PATCH] 2.5.23 i2c updates 2/4
i2c-core.c:Leave LINUX_VERSION in kernel. Leave i2c_debug=1. Leave
CONFIG names as in the kernel. Remove #ifdef MODULE_LICENSE around
MODULE_LICENSE.
i2c-dev.c:Remove #ifdef MODULE_LICENSE around MODULE_LICENSE.
Remove compatibality code for < 2.4.0
i2c-proc.c: Print message on kmalloc failure. Leave ENOMEM as in kernel.
Remove #ifdef MODULE_LICENSE around MODULE_LICENSE. Remove 2.2.19 compat
code.
Stephen Rothwell [Thu, 20 Jun 2002 05:25:59 +0000 (22:25 -0700)]
[PATCH] make kstack_depth_to_print and some APM stuff static
Tridge has written a little utility
(http://samba.org/ftp/unpacked/junkcode/findstatic.pl) that (given a set of
object files) works out a list of candidate finctions and variables that
may be able to be made static. Obviously some hand checking is needed
(different configs and/or architectures etc), but it seems useful.
Here is my first patch using its outout.
kstack_depth_to_print is used in many architectures, but only in one
file in each. In some architectures it is declared and not used. It
is not even clear why kstack_depth_to_print is not a #define. Tridge
suggested that maybe you could change its value with a debugger ...
The APM code has a function and a struct that can be static.
David Mosberger [Thu, 20 Jun 2002 05:24:19 +0000 (22:24 -0700)]
[PATCH] nasty bug in free_pgtables() (for ia64)
Strictly speaking, this patch is needed only for arches which use
discontiguous virtual address bits for the PGD index.
When we originally worked on this code (~ 2 years ago or so, in
response to a bug report & patch from an Intel guy), I had myself
convinced that the code is correct, but of course I missed the fact
that:
pgd_index(first) < pgd_index(last)
does NOT imply that:
first < last
For example, with a 16KB page size on ia64, we might end up with:
Note here that first_idx < last_idx even though first > last. This is
because pgd_index() ignores bits 44..60.
I suppose we could put the extra check inside #ifdef __ia64__, but
that would be rather ugly and would really mean that Linux does not
support discontiguous PGD indices.
Neil Brown [Thu, 20 Jun 2002 05:23:32 +0000 (22:23 -0700)]
[PATCH] Make ITERATE_MDDEV work on non-SMP
For an SMP kernel, spin_lock() et.al. are functions.
For a UP kernel, they are statements that must be terminated
by a ';'. This is not quite the same thing, and hence spin_lock()
cannot be using inside a parenthesised expession.
This patch changes ITERATE_MDDEV to use gcc's "statement expressions"
instead which has the benefit of making the conditionals
more readable.
Neil Brown [Thu, 20 Jun 2002 05:23:20 +0000 (22:23 -0700)]
[PATCH] Md sync: Remove compiler warning that revealed a bug.
When we abort a resync before we even started (because we were
interrupted while waiting for a conflicting resync to finish)
we should not wait or, particularly, do the closing sync_request
(as we haven't even calculated max_sectors yet).