Summary of changes from v2.5.29 to v2.5.30
============================================
<dgibson@samba.org>
PPC32: clean up the initial mapping of RAM, allow for large-page mappings.
<ch@hpl.hp.com>
[ARM PATCH] 1199/1: ISA Macros expected for platforms
This makes IRDA happy.
<rmk@flint.arm.linux.org.uk>
[ARM] ARM keyboard code fixups for the input layer.
The ARM specific parts of the input layer are being submitted via
Vojtech. This cset covers the arch/arm and include/asm-arm parts
of the changes necessary to use these drivers.
<paulus@samba.org>
PPC32: Update to match the removal of global cli/sti etc.
and the removal of local_bh_count and local_irq_count.
<trini@kernel.crashing.org>
PPC32: Allow Motorola machines with PPCBUG to get their boot args from NVRAM.
<trini@kernel.crashing.org>
PPC32: Update the CPC700 code to be able to use all 32 IRQs.
<trini@kernel.crashing.org>
PPC32: Change some instances of CONFIG_SERIAL_CONSOLE to CONFIG_SERIAL_8250_CONSOLE.
<trini@kernel.crashing.org>
PPC32: Update the Motorola LoPEC platform to work with CONFIG_VT.
<dwmw2@infradead.org>
Revert some bogus changes from mainline -- an over-excessive search/replace and some
BKL additions from someone who evidently didn't bother to look at either the code they
were modifying or the documentation in README.Locking which explicitly states the BKL
is not needed.
<dwmw2@infradead.org>
Remove licensing noise from individual JFFS2 files to refer to a single 'LICENCE' file,
which contains the new licence info. JFFS2 is no longer dual-licensed under RHEPL and
GPL; eCos is now GPL'd (with an exception for linking application) and hence so is JFFS2.
<dwmw2@infradead.org>
JFFS2 update.
Fix rename-over-existing-file behaviour to actually reduce nlink of the victim, and disallow rename over a non-empty directory.
Improved NAND support, some optimisations and other bug fixes.
<dwmw2@infradead.org>
JFFS2 compile fixes for latest kernel.
<dwmw2@infradead.org>
Switch JFFS2 to C99 named initialisers
<rgooch@atnf.csiro.au>
do_mounts.c, block_dev.c, hiddev.c, md.c:
Switched from devfs_find_handle() to devfs_get_handle()
Many files:
Switched from devfs_find_handle() to devfs_find_and_unregister()
base.c:
Created <devfs_find_and_unregister>.
<mochel@osdl.org>
driverfs: use dentry->d_subdirs list instead of our own list when removing directory
struct dentry already has a list of the children files in a directory, making the list in
struct driver_dir_entry irrelevant.
This is step one in removing it. Instead of iterating over our list, we iterate over
->d_subdirs and call driverfs_unlink on each one.
<dwmw2@infradead.org>
Prevent crash after mounting JFFS2 images built with incorrect erase size.
<paulus@samba.org>
PPC32: update hard/soft IRQ stuff along the lines of the i386 code.
<paulus@samba.org>
PPC32: Simple mmu_gather implementation for now.
This could be made more efficient by batching the hashtable
flushes but that can be done later.
<paulus@samba.org>
PPC32: remove unused code in ppc_htab.c
<paulus@samba.org>
PPC32: use VM_FAULT_* names instead of numbers.
<paulus@samba.org>
PPC32: implement __downgrade_write for rwsems.
<paulus@samba.org>
PPC32: add a comment explaining leap year calculation.
Since we have a signed 32-bit time_t, the fact that y % 4 == 0
will get it wrong in 2100 is irrelevant.
<rmk@flint.arm.linux.org.uk>
[SERIAL] Locking fixup (part 1)
After the last few days of debugging, we've ended up with the caller
of the start_tx and stop_tx methods taking the per-port lock. This
cset and the accompanying csets make the same change to some of the
other methods for consistency reasons. Since these methods don't
contain a lot of code, it is better that they have consistent locking
rules.
This cset fixes up the stop_rx method.
<rmk@flint.arm.linux.org.uk>
[SERIAL] Locking fixup (part 2)
After the last few days of debugging, we've ended up with the caller
of the start_tx and stop_tx methods taking the per-port lock. This
cset and the accompanying csets make the same change to some of the
other methods for consistency reasons. Since these methods don't
contain a lot of code, it is better that they have consistent locking
rules.
This cset fixes up the enable_ms method.
<hch@sb.bsdonline.org>
VFS: implement sendfile file operation
Currently the sendfile syscalls hardcode assumptions about the
implementation of the read file operations implementation. Although
it checks for the presence of a readpage address-space operation
filesystems in Linux are free to implement read differently from
the generic version (generic_file_read). Many filesystems such
as tmpfs, smbfs or xfs chose to implement it differently and need
additional locking, revalidation or checks.
<rmk@flint.arm.linux.org.uk>
[ARM] Cleanup fallout from global IRQ changes.
Replace local_save_flags_cli with local_irq_save. Remove duplicate
cli, sti, save_flags and restore_flags definitions.
<rmk@flint.arm.linux.org.uk>
[ARM] Remove {prepare,finish}_arch_{schedule,switch}
These macros are no longer required; the generic versions
defined in sched.c are sufficient for ARM.
<rmk@flint.arm.linux.org.uk>
[ARM] Update ARM IRQ code for 2.5.28 global IRQ changes
irq_enter/irq_exit no longer take arguments. We also use the
x86 methods for hardirq.h and softirq.h; they're sufficient
for ARM.
<rmk@flint.arm.linux.org.uk>
[ARM] Add security framework hooks (ptrace and syscall)
<kai@tp1.ruhr-uni-bochum.de>
kbuild: Fix compiling/installing as different users
"make bzImage && sudo make install" had the problem that during
the "sudo make install" the build system would notice that the information
in include/linux/compile.h is not accurate (it says "compiled by <user>",
but we are root), thus causing compile.h to be updated and leading to
some recompiles.
We now only update "compile.h" if the current user is the owner of
include/linux/autoconf.h, i.e. the user who did the "make *config". So the
above sequence will correctly state "compiled by <user>".
<kai@tp1.ruhr-uni-bochum.de>
kbuild: Fix net/8022 selections
Patch by Keith Owens, with slight modifications.
His description:
The problem is net/802/Makefile which includes p8022 for any of
CONFIG_LLC, CONFIG_TR, CONFIG_IPX or CONFIG_ATALK. p8022 calls
llc_register_sap which is in ext8022.o, that file is built by
net/core/Makefile but only for CONFIG_LLC. It worked before because of
the wrong test in net/core/Makefile which always built ext8022.o.
<kai@tp1.ruhr-uni-bochum.de>
kbuild: Make scripts/compile.h when sh != bash
Contributed by Arkadiusz Miskiewicz
<kai@tp1.ruhr-uni-bochum.de>
kbuild: Fix "export-objs"
This patch cleans up most of the Makefile's to list the correct files
(i.e. the ones which do have "EXPORT_SYMBOL" in them) in $(export-objs)
Contributed by "Lightweight patch manager"
<rmk@flint.arm.linux.org.uk>
[ARM] Optimise kernel->userspace exit code a little.
This improves interrupts and exceptions returning to user space
by a few of cycles. We change the requirements for
*_restore_user_regs slightly so we can remove a few instructions.
We also re-shuffle the code to handle pending work.
<rmk@flint.arm.linux.org.uk>
[ARM] Make ARM work with rmap
ARM can use the generic rmap.h. It doesn't need its own version.
<rmk@flint.arm.linux.org.uk>
[ARM] Remove mach-types.h header file from asm/arch/hardware.h
Someone included mach-types.h into asm/arch/hardware.h, which causes
the whole kernel to needlessly rebuild when the machine type file is
updated. Move mach-types.h include into the files that really need
it.
<rmk@flint.arm.linux.org.uk>
[ARM] Update SA11x0 cpufreq code to reflect CVS version.
This covers the changes Dominik's made to the core cpufreq code.
<rmk@flint.arm.linux.org.uk>
[ARM] Prevent oops in free_pages() when freeing a pgd
free_pages() oopses if page->mapping is non-NULL. Ensure that any
rmap datastructures for the page are freed before freeing the
concerned page.
<rmk@flint.arm.linux.org.uk>
[ARM] Two small changes
Remove a couple of needless includes from system3.c, and update
mach-types file.
<gbarzini@virata.com>
[ARM PATCH] 1179/1: ldm/stm alignement fixups: treat 920T the same as 922T
The check in do_alignment_ldmstm for addr and eaddr being the same is #ifdef'd
out for the ARM922T because they aren't expected to be the same due to the
different way the MMU sets addr. The ARM920T is just a 922T with more cache,
and should be treated the same. I've checked on a real ARM920T and it does
complain loudly every time it fixes up a misaligned ldm/stm unless this
patch is applied.
I suspect that the ARM926 should be treated the same way as well, but I can't
find any relevant documentation on ARM's web-site, so have left it out.
<hch@sb.bsdonline.org>
Remove kHTTPD
<rusty@rustcorp.com.au>
[PATCH] Fix ksoftirqd and migration threads initcalls
This patch fixes the calls to initialize ksoftirqd and the
migration threads. This really should be done by the initcall
depends patch.
<rusty@rustcorp.com.au>
[PATCH] Hot-plug CPU notifier warning fix
As pointed out by Andrew Morton, this fixes:
softirq.c: In function `spawn_ksoftirqd':
softirq.c:416: warning: statement with no effect
<petero2@telia.com>
[PATCH] Fix "make xconfig"
<andersg@0x63.nu>
[PATCH] Add argument to synchronize_irq in cs46xx
Added irq-argument to synchronize_irq to make sound/oss/cs46xx.c
compile again.
<wli@holomorphy.com>
[PATCH] PAE compile fix
Fix PMD typo
<mingo@elte.hu>
[PATCH] fix synchronize_irq() bug
This fixes a synchronize_irq() bug: if the interrupt is freed while an
IRQ handler is running (irq state is IRQ_INPROGRESS) then
synchronize_irq() will return early, which is incorrect.
there was another do_IRQ() bug that in fact necessiated the bad code that
caused the synchronize_irq() bug - we kept the IRQ_INPROGRESS bit set for
not active interrupt sources - after they happen for the first time. Now
the only effect this has is on i8259A irq handling - we used to keep these
irqs disabled after the first 'spurious' interrupt happened. Now what the
i8259A code really wants to do IMO is to keep the interrupt disabled if
there is no handler defined for that interrupt source. The patch adds
exactly this. I dont remember why this was needed in the first place (irq
probing? avoidance of interrupt storms?), but with the patch the behavior
should be equivalent.
<Andries.Brouwer@cwi.nl>
[PATCH] partition fix
The patch below does two things:
(i) fixes a small bug in the new partition code
This is the final chunk s/n/slot/. I'll refrain from giving a vi script.
This is uncontroversial.
(ii) removes ancient garbage concerning disk managers
This may well be controversial.
(Long ago, when disks became larger than 500 MB, lots of tricks were
invented to keep DOS happy. Both hardware tricks and software tricks.
One of the software tricks was the invention of boot managers.
There have been many of those. The Linux kernel has had support
for two of them: OnTrack Disk Manager and EZdrive.
More precisely: there have been many versions of both OnTrack Disk Manager
and EZdrive, and the kernel had support for a few of these versions.
I think the time has come to remove the automatic support - every now
and then it bites some innocent user, and the support is not really
needed any longer, and the support is for outdated versions of these
boot managers.
No doubt it will turn out that users still exist that use some form
of this stuff, but I would prefer to support them by explicit
kernel boot parameters, rather than by code that guesses what
might be the right thing to do.
The patch below just rips out the old stuff. Depending on the screams
this might provoke I expect to add some boot parameters.)
<matthew@wil.cx>
[PATCH] LSM file locking patch is bogus
- Remove third argument from file_lock security op. Whether the lock is
blocking or not cannot make any difference to a security module!
- Fix the call in sys_flock to pass the translated lock command, not the
original.
- Add a call in fcntl_setlease. If they're going to know about two types
of lock, let's tell them about the third too.
<alan@lxorguk.ukuu.org.uk>
[PATCH] PATCH: 2.5.29 Fix pnpbios
This should do the trick for pnpbios - we load the initial gdt into each
gdt, and we load the parameters into the gdt of the cpu making the call
relying on the spinlock to avoid bouncing cpu due to pre-empt
<alan@lxorguk.ukuu.org.uk>
[PATCH] PATCH: 2.5.29 Fix cmd640 config locking
We use the pci host lock so that we lock config space portably while
handling the CMD640 config space via our own routines to avoid pci bios
tripping CMD640 hardware stuff. We need to use this lock in order to
ensure that we lock at a portable layer. Also add the 2.4.19 fixes for
avoiding wrong probes, and the fix noted on the list.
<torvalds@home.transmeta.com>
Move cmd640_lock outside the CONFIG_BLK_DEV_CMD640_ENHANCED
test, since it is needed regardless.
<johann.deneux@it.uu.se>
Small fix to assign continuous values to KEY_*.
<rgooch@atnf.csiro.au>
Removed deprecated devfs_find_handle()
<hch@sb.bsdonline.org>
Implement down_read_trylock() and down_write_trylock() and add a
generic spinlock implementation for downgrade_write().
<rmk@flint.arm.linux.org.uk>
[SERIAL] Remove some old compatibility cruft from 8250_pci.c
8250_pci.c contains some old compatibility cruft for when __devexit
wasn't defined by the generic kernel. It is now, so it's gone.
<rmk@flint.arm.linux.org.uk>
[SERIAL] Add pci_disable_device() to initialisation failure paths.
<oleg@tv-sign.ru>
[PATCH] fix Thread-Local Storage GDT access
The gdt entry is consulted only while loading its index into
the segment register.
So load_TLS_desc(next, cpu) must be called before loading
next->fs,next->gs in __switch_to().
<mulix@actcom.co.il>
[PATCH] sound/oss/trident.c [1/2] merge driver from 2.4-ac
This patch (1/2) brings the sound/oss/trident.c driver up to date with
the driver in the 2.4-ac tree. It fixes the following bugs:
* fix wrong cast in suspend/resume (Eric Lemar via Ian Soboroff)
* fix bug where we would free with free_pages() memory allocated via
pci_alloc_consistent().
* add a missing unlock on an error path.
* rewrite the code to read/write registers of audio codecs for Ali5451
(Lei Hu)
It also does various cleanups so that the code conforms to
Documentation/CodingStyle and is nicer to work with.
<mulix@actcom.co.il>
[PATCH] sound/oss/trident.c [2/2] remove cli/sti calls
This patch replaces the cli/sti calls in the trident.c driver with
spin_lock_irqsave/spin_unlock_irqrestore.
<trond.myklebust@fys.uio.no>
[PATCH] Set PG_uptodate in nfs_writepage_sync()
A patch by Charles Lever (Charles.Lever@netapp.com) that ensures the
PG_uptodate bit gets set if an entire page gets written by
nfs_writepage_sync().
<trond.myklebust@fys.uio.no>
[PATCH] Support for cached lookups via readdirplus [1/6]
Cleanup for the readdirplus code. Make struct nfs_entry take pointers
to the filehandle and file attributes.
<trond.myklebust@fys.uio.no>
[PATCH] Support for cached lookups via readdirplus [2/6]
Cleanup for readdirplus. Allow the file attribute struct to set the
NFS_READTIME(inode) to some value other than 'jiffies'.
<trond.myklebust@fys.uio.no>
[PATCH] Support for cached lookups via readdirplus [3/6]
Cache the information about whether or not the server supports
READDIRPLUS.
<trond.myklebust@fys.uio.no>
[PATCH] Support for cached lookups via readdirplus [4/6]
Add support for positive lookups using the READDIRPLUS cached
information. Both new lookups and lookup revalidation is supported.
Use READDIRPLUS instead of READDIR on NFSv3 directories with lengths
shorter than 8*PAGE_SIZE.
Note that inode attribute information is only updated if it is seen to
be more recent than any existing cached information.
<trond.myklebust@fys.uio.no>
[PATCH] Support for cached lookups via readdirplus [6/6]
Add support for the glibc 'd_type' field in cases where we have the
READDIRPLUS file attribute information available to us in
nfs_do_filldir().
<mingo@elte.hu>
[PATCH] APM fixes, 2.5.29
the attached patch fixes two things:
- a TLS related bug noticed by Arjan van de Ven: apm_init() should set up
all CPU's gdt entries - just in case some code happens to call in the
APM BIOS on the wrong CPU. This should also handle the case when some
APM code gets triggered (by suspend or power button or something).
- compilation problem
<torvalds@home.transmeta.com>
Since "access_process_vm()" releases pages that can be
in the page cache, it needs to use page_cache_release()
instead of plain "put_page()".
<akpm@zip.com.au>
[PATCH] misc fixes
There are a few VM-related patches in this series. Mainly fixes;
feature work is on hold.
We have some fairly serious locking contention problems with the reverse
mapping's pte_chains. Until we have a clear way out of that I believe
that it is best to not merge code which has a lot of rmap dependency.
It is apparent that these problems will not be solved by tweaking -
some redesign is needed. In the 2.5 timeframe the only practical
solution appears to be page table sharing, based on Daniel's February
work. Daniel and Dave McCracken are working that.
Some bits and pieces here:
- list_splice() has an open-coded list_empty() in it. Use
list_empty() instead.
- in shrink_cache() we have a local `nr_pages' which shadows another
local. Rename the inner one. (Nikita Danilov)
- Add a BUG() on a can't-happen code path in page_remove_rmap().
- Tighten up the bug checks in the BH completion handlers - if the
buffer is still under IO then it must be locked, because we unlock it
inside the page_uptodate_lock.
<akpm@zip.com.au>
[PATCH] use a slab cache for pte_chains
Patch from Bill Irwin.
It removes the custom pte_chain allocator in mm/rmap.c and replaces it
with a slab cache.
"This patch
(1) eliminates the pte_chain_freelist_lock and all contention on it
(2) gives the VM the ability to recover unused pte_chain pages
Anton Blanchard has reported (1) from prior incarnations of this patch.
Craig Kulesa has reported (2) in combination with slab-on-LRU patches.
I've left OOM detection out of this patch entirely as upcoming patches
will do real OOM handling for pte_chains and all the code changed anyway."
<akpm@zip.com.au>
[PATCH] show_free_areas() cleanup
Cleanup to show_free_areas() from Bill Irwin:
show_free_areas() and show_free_areas_core() is a mess.
(1) it uses a bizarre and ugly form of list iteration to walk buddy lists
use standard list functions instead
(2) it prints the same information repeatedly once per-node
rationalize the braindamaged iteration logic
(3) show_free_areas_node() is useless and not called anywhere
remove it entirely
(4) show_free_areas() itself just calls show_free_areas_core()
remove show_free_areas_core() and do the stuff directly
(5) SWAP_CACHE_INFO is always #defined, remove it
(6) INC_CACHE_INFO() doesn't use the do { } while (0) construct
This patch also includes Matthew Dobson's patch which removes
mm/numa.c:node_lock. The consensus is that it doesn't do anything now
that show_free_areas_node() isn't there.
<akpm@zip.com.au>
[PATCH] speed up pte_chain locking on uniprocessors
ifdef out some operations in pte_chain_lock() which are not necessary
on uniprocessor.
<akpm@zip.com.au>
[PATCH] optimise struct page layout
Reorganise the members of struct page.
- Place ->flags at the start so the compiler can generate indirect
addressing rather than indirect+indexed for this commonly-accessed
field. Shrinks the kernel by ~100 bytes.
- Keep ->count with ->flags so they have the best chance of
being in the same cacheline.
<akpm@zip.com.au>
[PATCH] for_each_pgdat macro
Patch from Robert Love.
This patch implements for_each_pgdat(pg_data_t *) which is a helper
macro to cleanup code that does a loop of the form:
pgdat = pgdat_list;
while(pgdat) {
/* ... */
pgdat = pgdat->node_next;
}
and replace it with:
for_each_pgdat(pgdat) {
/* ... */
}
This code is from Rik's 2.4-rmap patch and is by William Irwin.
<akpm@zip.com.au>
[PATCH] for_each_zone macro
Patch from Robert Love.
Attached patch implements for_each_zone(zont_t *) which is a helper
macro to cleanup code of the form:
for (pgdat = pgdat_list; pgdat; pgdat = pgdat->node_next) {
for (i = 0; i < MAX_NR_ZONES; ++i) {
zone_t * z = pgdat->node_zones + i;
/* ... */
}
}
and replace it with:
for_each_zone(zone) {
/* ... */
}
This patch only replaces one use of the above loop with the new macro.
Pending code, however, currently in the full rmap patch uses
for_each_zone more extensively.
<akpm@zip.com.au>
[PATCH] strict overcommit
Alan's overcommit patch, brought to 2.5 by Robert Love.
Can't say I've tested its functionality at all, but it doesn't crash,
it has been in -ac and RH kernels for some time and I haven't observed
any of its functions on profiles.
"So what is strict VM overcommit? We introduce new overcommit
policies that attempt to never succeed an allocation that can not be
fulfilled by the backing store and consequently never OOM. This is
achieved through strict accounting of the committed address space and
a policy to allow/refuse allocations based on that accounting.
In the strictest of modes, it should be impossible to allocate more
memory than available and impossible to OOM. All memory failures
should be pushed down to the allocation routines -- malloc, mmap, etc.
The new modes are available via sysctl (same as before). See
Documentation/vm/overcommit-accounting for more information."
<akpm@zip.com.au>
[PATCH] use c99 initialisers in ext3
Convert ext3 to the C99 initialiser format. From Rusty.
<akpm@zip.com.au>
[PATCH] direct IO updates
This patch is a performance and correctness update to the direct-IO
code: O_DIRECT and the raw driver. It mainly affects IO against
blockdevs.
The direct_io code was returning -EINVAL for a filesystem hole. Change
it to clear the userspace page instead.
There were a few restrictions and weirdnesses wrt blocksize and
alignments. The code has been reworked so we now lay out maximum-sized
BIOs at any sector alignment.
Because of this, the raw driver has been altered to set the blockdev's
soft blocksize to the minimum possible at open() time. Typically, 512
bytes. There are now no performance disadvantages to using small
blocksizes, and this gives the finest possible alignment.
There is no API here for setting or querying the soft blocksize of the
raw driver (there never was, really), which could conceivably be a
problem. If it is, we can permit BLKBSZSET and BLKBSZGET against the
fd which /dev/raw/rawN returned, but that would require that
blk_ioctl() be exported to modules again.
This code is wickedly quick. Here's an oprofile of a single 500MHz
PIII reading from four (old) scsi disks (two aic7xxx controllers) via
the raw driver. Aggregate throughput is 72 megabytes/second:
c013363c 24 0.0896492 __set_page_dirty_buffers
c021b8cc 24 0.0896492 ahc_linux_isr
c012b5dc 25 0.0933846 kmem_cache_free
c014d894 26 0.09712 dio_bio_complete
c01cc78c 26 0.09712 number
c0123bd4 40 0.149415 follow_page
c01eed8c 46 0.171828 end_that_request_first
c01ed410 49 0.183034 blk_recount_segments
c01ed574 65 0.2428 blk_rq_map_sg
c014db38 85 0.317508 do_direct_IO
c021b090 90 0.336185 ahc_linux_run_device_queue
c010bb78 236 0.881551 timer_interrupt
c01052d8 25354 94.707 poll_idle
A testament to the efficiency of the 2.5 block layer.
And against four IDE disks on an HPT374 controller. Throughput is 120
megabytes/sec:
c01eed8c 80 0.292462 end_that_request_first
c01fe850 87 0.318052 hpt3xx_intrproc
c01ed574 123 0.44966 blk_rq_map_sg
c01f8f10 141 0.515464 ata_select
c014db38 153 0.559333 do_direct_IO
c010bb78 235 0.859107 timer_interrupt
c01f9144 281 1.02727 ata_irq_enable
c01ff990 290 1.06017 udma_pci_init
c01fe878 308 1.12598 hpt3xx_maskproc
c02006f8 379 1.38554 idedisk_do_request
c02356a0 609 2.22637 pci_conf1_read
c01ff8dc 611 2.23368 udma_pci_start
c01ff950 922 3.37062 udma_pci_irq_status
c01f8fac 1002 3.66308 ata_status
c01ff26c 1059 3.87146 ata_start_dma
c01feb70 1141 4.17124 hpt374_udma_stop
c01f9228 3072 11.2305 ata_out_regfile
c01052d8 15193 55.5422 poll_idle
Not so good.
One problem which has been identified with O_DIRECT is the cost of
repeated calls into the mapping's get_block() callback. Not a big
problem with ext2 but other filesystems have more complex get_block
implementations.
So what I have done is to require that callers of generic_direct_IO()
implement the new `get_blocks()' interface. This is a small extension
to get_block(). It gets passed another argument which indicates the
maximum number of blocks which should be mapped, and it returns the
number of blocks which it did map in bh_result->b_size. This allows
the fs to map up to 4G of disk (or of hole) in a single get_block()
invokation.
There are some other caveats and requirements of get_blocks() which are
documented in the comment block over fs/direct_io.c:get_more_blocks().
Possibly, get_blocks() will be the 2.6 kernel's way of doing gang block
mapping. It certainly allows good speedups. But it doesn't allow the
fs to return a scatter list of blocks - it only understands linear
chunks of disk. I think that's really all it _should_ do.
I'll let get_blocks() sit for a while and wait for some feedback. If
it is sufficient and nobody objects too much, I shall convert all
get_block() instances in the kernel to be get_blocks() instances. And
I'll teach readahead (at least) to use the get_blocks() extension.
Delayed allocate writeback could use get_blocks(). As could
block_prepare_write() for blocksize < PAGE_CACHE_SIZE. There's no
mileage using it in mpage_writepages() because all our filesystems are
syncalloc, and nobody uses MAP_SHARED for much.
It will be tricky to use get_blocks() for writes, because if a ton of
blocks have been mapped into the file and then something goes wrong,
the kernel needs to either remove those blocks from the file or zero
them out. The direct_io code zeroes them out.
btw, some time ago you mentioned that some drivers and/or hardware may
get upset if there are multiple simultaneous IOs in progress against
the same block. Well, the raw driver has always allowed that to
happen. O_DIRECT writes to blockdevs do as well now.
todo:
1) The driver will probably explode if someone runs BLKBSZSET while
IO is in progress. Need to use bdclaim() somewhere.
2) readv() and writev() need to become direct_io-aware. At present
we're doing stop-and-wait for each segment when performing
readv/writev against the raw driver and O_DIRECT blockdevs.
<akpm@zip.com.au>
[PATCH] permit modular build of raw driver
This patch allows the raw driver to be built as a kernel module.
It also cleans up a bunch of stuff, C99ifies the initialisers, gives
lots of symbols static scope, etc.
The module is unloadable when there are zero bindings. The current
ioctl() interface have no way of undoing a binding - it only allows
bindings to be overwritten. So I overloaded a bind to major=0,minor=0
to mean "undo the binding". I'll update the raw(8) manpage for that.
generic_file_direct_IO has been exported to modules.
The call to invalidate_inode_pages2() has been removed from all
generic_file_driect_IO() callers, into generic_file_direct_IO() itself.
Mainly to avoid exporting invalidate_inode_pages2() to modules.
<mingo@elte.hu>
[PATCH] Re: Limit in set_thread_area
the attached patch does the set_thread_area parameter simplification - it
also cleans up some other TLS issues, it removes the tls_* fields from the
thread_struct, and removes the now unused page-granularity flag.
<akpm@zip.com.au>
[PATCH] put_page() uses audited
Audit put_page() uses of pages that may be in the page cache.
Use page_cache_release() instead.
<mdharm-usb@one-eyed-alien.net>
[PATCH] SCSI INQUIRY transfer length fix
Fixed one of the INQUIRY commands used for probing SCSI devices. This
badly-formed command was trapped by the usb-storage driver BUG_ON()
which is designed to stop command with a badly formed transfer_length
field.
<mdharm-usb@one-eyed-alien.net>
[PATCH] SCSI MODE_SENSE transfer length fix
Modified the MODE_SENSE write-protect test in sd.c to issue a SCSI
request with the request_bufflen the same size as the MODE_SENSE
command being issued requests.
<mingo@elte.hu>
[PATCH] sched-2.5.29-B1
the attached patch is a comment update of sched.c and it also does a small
cleanup in migration_thread().
<torvalds@home.transmeta.com>
Make "cpu_relax()" imply a barrier, since that's how it is
used.
This fixes a lockup in synchronize_irq() on x86.
<torvalds@home.transmeta.com>
Cset exclude: mingo@elte.hu|ChangeSet|20020728030719|07783
<akpm@zip.com.au>
[PATCH] restore lru_cache_del() in truncate_complete_page
I removed the PF_INVALIDATE debug check from buffercache
leaks, too. It's non-functional - the flag should have been
set across truncate_inode_pages(), not invalidate_inode_pages().
<hch@sb.bsdonline.org>
VM: remove unused /proc/sys/vm/kswapd and swapctl.h
These were totally unused for a long time. It's interesting how
many files include swapctl.h, though..
<shaggy@kleikamp.austin.ibm.com>
Remove d_delete call from jfs_rmdir and jfs_unlink
jfs_rmdir and jfs_unlink have always called d_delete, but it hasn't
caused a problem until 2.5.28. The call is an artifact of the 2.2
kernel, which had gone unnoticed in 2.4 and 2.5.
<rmk@flint.arm.linux.org.uk>
[SERIAL] Add HP Diva PCI serial port support.
<rmk@flint.arm.linux.org.uk>
[SERIAL] Cleanup includes.
Al Viro pointed out there was a fair bit of redundancy here. We
remove many include files from the serial layer, leaving those
which are necessary for it to build. This has been posted to lkml,
no one complained.
This cset also combines a missing include of asm/io.h in 8250_pci.c
(unfortunately I've lost the name of the reporter, sorry.)
<kai@tp1.ruhr-uni-bochum.de>
kbuild: Fix double vmlinux link
pointed out by Sam Ravnborg
<torvalds@home.transmeta.com>
Leftover from trident cli/sti removal.
Noticed by Zwane Mwaikambo.
<dwmw2@infradead.org>
[PATCH] Remove cli() from R3964 line discipline.
I did this ages ago but never submitted it because I never got round to
testing it. I still haven't tested it, but it ought to work, and the code
is definitely broken without it...
<adam@yggdrasil.com>
[PATCH] fix do_open() interaction with rd.c
linux-2.5.28/drivers/block_dev.c has a new do_open that broke
initial ramdisk support, because it now requires devices that "manually"
set bdev->bd_openers to set bdev->bd_inode->i_size as well. The
following single line patch, suggested by Russell King, fixes the
problem.
There does not appear to be anyone acting as maintainer for
rd.c, so I posted to lkml yesterday to ask if anyone objected to my
submitting the patch to you, and I also emailed the message to Russell
King and Al Viro. Nobody has complained. I have been running the
patch for almost a day without problems.
<paulus@samba.org>
[PATCH] fix include/linux/timer.h compile
include/linux/timer.h needs to include <linux/stddef.h>
to get the definition of NULL.
<paulus@samba.org>
[PATCH] page table page->index
I found a situation where page->index for a pagetable page can be set
to 0 instead of the correct value. This means that ptep_to_address
will return the wrong answer. The problem occurs when remap_pmd_range
calls pte_alloc_map and pte_alloc_map needs to allocate a new pte
page, because remap_pmd_range has masked off the top bits of the
address (to avoid overflow in the computation of `end'), and it passes
the masked address to pte_alloc_map.
Now we presumably don't need to get from the physical pages mapped by
remap_page_range back to the ptes mapping them. But we could easily
map some normal pages using ptes in that pagetable page subsequently,
and when we call ptep_to_address on their ptes it will give the wrong
answer.
The patch below fixes the problem.
There is a more general question this brings up - some of the
procedures which iterate over ranges of ptes will do the wrong thing
if the end of the address range is too close to ~0UL, while others are
OK. Is this a problem in practice? On i386, ppc, and the 64-bit
architectures it isn't since user addresses can't go anywhere near
~0UL, but what about arm or m68k for instance?
And BTW, being able to go from a pte pointer to the mm and virtual
address that that pte maps is an extremely useful thing on ppc, since
it will enable me to do MMU hash-table management at set_pte (and
ptep_*) time and thus avoid the extra traversal of the pagetables that
I am currently doing in flush_tlb_*. So if you do decide to back out
rmap, please leave in the hooks for setting page->mapping and
page->index on pagetable pages.
<axboe@suse.de>
[PATCH] fix REQ_QUEUED clearing in blk_insert_request()
<dhowells@redhat.com>
[PATCH] export rwsem downgrade function
This should do the trick.
<torvalds@home.transmeta.com>
parport: fix warning - "flags" is unused after cli/sti removal.
<haveblue@us.ibm.com>
[PATCH] fix e1000 after irq craziness
I just duplicated the method used in drivers/net/tulip/de2104x.c
<sam@mars.ravnborg.org>
[PATCH] kbuild: Add new define do_cmd
do_cmd is a nice shorthand when creating rules that in one line
shall adhere to KBUILD_VERBOSE and make -s.
So far the only user is (will be) the docbook makefile
<sam@mars.ravnborg.org>
[PATCH] docbook: parportbook dependencies and do_cmd
o Corrected dependencies for parportbook
o Introduced do_cmd, thus adhering to KBUILD_VERBOSE and make -s
<sam@mars.ravnborg.org>
[PATCH] kbuild: fix warnings in fixdep when compiled with -pedantic
<torvalds@penguin.transmeta.com>
Rename "sys_pread/pwrite" to "sys_pread64/pwrite64" to match the
actual implementation and avoid confusion.
<hch@lst.de>
[PATCH] implement kmem_cache_size()
Currently there is no way to find out the effective object size of a slab
cache. XFS has lots of IRIX-derived code that want to do zalloc() style
allocations on zones (which are implemented as slab caches in XFS/Linux)
and thus needs to know about it. There are three ways do implement it:
a) implement kmem_cache_zalloc
b) make the xfs zone a struct of kmem_cache_t and a size variable
c) implement kmem_cache_size
The current XFS tree does a) but I absolutely don't like it as encourages
people to use kmem_cache_zalloc for new code instead of thinking about how
to utilize slab object reuse. b) would be easy, but I guess kmem_cache_size
is usefull enough to get into the kernel. Here's the patch:
<hugh@veritas.com>
[PATCH] shmem_file_write rounding VM_ACCT
Repeated overnight kernel builds in tmpfs showed insane Committed_AS
by morning. The main bug was that shmem_file_write was passing
(newsize-oldsize)>>PAGE_SHIFT to vm_enough_memory, but it has to be
((newsize>>PAGE_SHIFT)-(oldsize>>PAGE_SHIFT)) - imagine 1k writes.
But actually, if we're going to do strict accounting, then we should
round up to next page not down - use VM_ACCT macro throughout (needs
unusual mix of PAGE_CACHE_SIZE with PAGE_SHIFT); and must count one
page for a long symlink.
<hugh@veritas.com>
[PATCH] SHMEM_MAX_BYTES overflow checking
shmem_notify_change and shmem_file_write be careful about overflowingly
large loff_t before shifting it into unsigned long for vm_enough_memory.
Rename SHMEM_MAX_BLOCKS to SHMEM_MAX_INDEX (to avoid confusion with
512-byte blocks), define SHMEM_MAX_BYTES from it.
But 2.5 vmtruncate lacked the s_maxbytes error handling which
shmem_notify_change now expects: bring it in from the -dj tree.
shmem_file_write error handling needs a closer look later on.
<hugh@veritas.com>
[PATCH] mremap MAP_NORESERVE not in flags
There is no point in do_mremap clearing MAP_NORESERVE from its flags:
it has already validated that only the MREMAP_ flags can be set,
and it has no use for MAP_NORESERVE in the code that follows anyway.
<hugh@veritas.com>
[PATCH] mmap MAP_NORESERVE not in vm_flags
do_mmap_pgoff clears MAP_NORESERVE from vm_flags when VM accounts
strictly: but it's not in vm_flags, it's in flags (and tested there).
<hugh@veritas.com>
[PATCH] remove unhelpful vm_unacct_vma
Remove vm_unacct_vma function: it's only used in one place,
which can do it better by using vm_unacct_memory directly.
<hugh@veritas.com>
[PATCH] fix shared and private accounting
do_mmap_pgoff's (file == NULL) check was incorrect: it caused shared
MAP_ANONYMOUS objects to be counted twice (again in shmem_file_setup),
and again on fork(); whereas the equivalent shared /dev/zero objects
were correctly counted. Conversely, a private readonly file mapping
was (correctly) not counted, but still not counted when mprotected to
writable: mprotect_fixup had pointless "charged = 0" changes, now it
does vm_enough_memory checking when private is first made writable
(but later we may want to refine behaviour on a noreserve mapping).
Also changed correct (flags & MAP_SHARED) test in do_mmap_pgoff to
equivalent (vm_flags & VM_SHARED) test: because do_mmap_pgoff is
dealing with vm_flags rather than the input flags by that stage.
<hugh@veritas.com>
[PATCH] update overcommit doc and comment
Update Doc and remove FIXME comment from fork.c now accounting right.
<hugh@veritas.com>
[PATCH] shmem_file_setup when MAP_NORESERVE
If we support mmap MAP_NORESERVE, we should support it on shared
anonymous objects: too bad that needs a few changes. do_mmap_pgoff pass
VM_ACCOUNT (or not) down to shmem_file_setup, flag stored into shmem
info, for use by shmem_delete_inode later. Also removed a harmless but
pointless call to shmem_truncate.
<hugh@veritas.com>
[PATCH] remove acct arg from do_munmap
An acct flag was added to do_munmap, true everywhere but in mremap's
move_vma: instead of updating the arch and driver sources, revert that
that change and temporarily mask VM_ACCOUNT around that one do_munmap.
Also, noticed that do_mremap fails needlessly if both shrinking _and_
moving a mapping: update old_len to pass vm area boundaries test.
<torvalds@penguin.transmeta.com>
Update file lock security check to match the API change
<torvalds@penguin.transmeta.com>
Chris Wright points out that this was also missed in the
file locking LSM update
<th122948@scl1.sfbay.sun.com>
Lindent drivers/char/nvram.c in anticipation of more patching
<vojtech@suse.cz>
This simplifies the software autorepeat code in input/input.c,
also killing a race which could be the cause of autorepeat not
stopping after a key was released.
<vandrove@vc.cvut.cz>
Convert ncpfs to C99 initializers. By Rusty Trivial Russell.
<bhards@bigpond.net.au>
Change the EVIOC?ABS ioctls to use structs rather than arrays of ints.
<vojtech@suse.cz>
Use stdint.h types instead of __u16 et al in input.h, to make life
easier for userspace people, as Brad Hards has suggested.
<anton@samba.org>
[PATCH] make cpu_relax a barrier on all architectures
Make cpu_relax() on all architectures a gcc barrier to match x86.
<willy@debian.org>
[PATCH] fs/locks.c: eliminate locks_unlock_delete
locks_unlock_delete is buggy in a couple of different ways (previously
reported by Brian Dixon). Rather than fix it, this patch simply deletes
it and uses the normal posix file locking mechanisms to remove all locks
in locks_remove_posix instead.
<sandeen@sgi.com>
[PATCH] wan/sdla_chdlc.c oops fix
This "warning fix" bug report is actually an OOPS bugfix.
<torvalds@home.transmeta.com>
Do x86 "kernel_thread()" explicitly by hand, instead of
using a system call from kernel space.
This avoids one level of hidden code, and makes what happens
much more explicit (and speeds it up too, fwiw)
<mochel@osdl.org>
driverfs: Do hashed lookup of dentry's when deleting a driverfs file (instead of searching the list we keep)
<mochel@osdl.org>
driverfs: don't do addition/deletion of driver_file_entry's into local lists,
as we don't use the lists anymore
<marcel@holtmann.org>
[PATCH] Bluetooth Subsystem PC Card drivers update
This updates the 2.5.x PC Card drivers of the Bluetooth subsystem.
<mochel@osdl.org>
driverfs: Remove struct driver_dir_entry::files, since it's not being used anymore
<mochel@osdl.org>
driverfs: Remove references to struct driver_file_entry::dentry, as we don't use it
for anything useful anymore.
<mochel@osdl.org>
driverfs: Don't put the driver_file_entry in struct inode::u.generic_ip or struct file::private_data
(since it's already in struct dentry::d_fsdata and we always get to that)
<mochel@osdl.org>
driverfs: use the parent directory's struct driver_dir_entry (in struct dentry::d_fsdata)
to access the struct device, rather than via struct driver_file_entry::parent pointer.
<mochel@osdl.org>
driverfs: Remove struct driver_file_entry::parent, as we can get to it by the dentry
of the directory itself
<pavel@suse.cz>
Move sleep_on() above refrigerator so that the kseriod thread
in serio.c doesn't exit on suspend because of a pending signal.
<da-x@gmx.net>
Make s390 and s390x print the right freed init memory size.
The expression (&__init_begin - &__init_end) depends on the type
of this adhoc extern variables, which was changed from char to long
when the code was copied from another arch.
<Franz.Sirl@lauterbach.com>
Hi Vojtech,
some superflous keyboard stuff came back with the last PPC merge
to Linus. This patch fixes that. Please apply.
<alan@lxorguk.ukuu.org.uk>
[PATCH] cs5530 IDE driver cli/sti fixes and cleanups
The CS5530 one seems unneeded looking at the databook. Try the patch
below instead, which removes the irq lock and uses the proper kernel
functions to enable MWI and master.
<dalecki@evision.ag>
[PATCH] 2.5.29 IDE 108
- typedef unsigned char byte; is finally gone. Everything using it should
be just ported to u8 if I missed some place where it still gets used.
- Next round of parameter parsing cleanups by Gerald Champagne.
Adjusted a bit to harmonize with hd.c.
- Move IDE register bitfields declarations over from hdparm.h to
ide.h.
- Declare constants needed by hd.c directly there. Those are standard
values not subject to change and we prefer a bit of code duplication
in favour of making the two drivers independant from each other.
- Move everything not ioctl related away from hdreg.h to ide.h.
This header is in effect not private to the ATA code and should
therefore not contain stuff only usefull there.
<dalecki@evision.ag>
[PATCH] 2.5.29 IDE 109
- Include first cut by Adam J. Richter on proper lock protection for
tuning functions.
- Rename ide_register_subdriver() to ata_register_device() and
ide_unregister_subdriver() accordingly to ata_unregister_device(),
since this is reflecting better what those functions are about.
- Remove tons of "curicum vite" style useless documentation here and
there.
<greg@kroah.com>
Removed devfs_register_chrdev and devfs_unregister_chrdev.
Use register_chrdev and unregister_chrdev as before, and everything will work.
<vojtech@suse.cz>
Revert input.h back to kernel types.
<greg@kroah.com>
Removed devfs_register_blkdev and devfs_unregister_blkdev.
Use register_blkdev and unregister_blkdev as before, and everything will work just fine.
<torvalds@penguin.transmeta.com>
Split up "do_fork()" into "copy_process()" and "do_fork()".
copy_process() just copies the process, it doesn't actually start it.
This is in preparation for doing a "atomically start process on CPU X"
or other cases where we want to change the state of the process before
we actually start running it.
<th122948@scl1.sfbay.sun.com>
clean up 'return (x);' style stuff into 'return x' in nvram.c
<mochel@osdl.org>
driverfs: don't dynamically allocate and duplicate struct driver_file_entry's any more
Now that all unique information about struct driver_file_entry's are gone (the dentry and parent pointers),
the data in them is shared among all users of the entry. So, we don't have any reason to dynamically allocate
and duplicate the data anymore.
<mochel@osdl.org>
driverfs: consolidate all the hashed lookups into a static helper: get_dentry()
<mochel@osdl.org>
device symlinks: just pass name, not struct driver_file_entry to driverfs_create_symlink
symlinks now only use the name field of the struct driver_file_entry, so instead of allocating
a new one each time we want to create one, this changes the API to only accept the name (since
the driverfs core will never use the other fields either)
This also guarantees that we won't leak the memory for the entry when the device goes away:
Since the other entries aren't dynamically allocated, and driverfs doesn't free them, we would
have to free them ourselves. It's not really necessary, so this is another win for us.
<mochel@osdl.org>
driverfs: Change the name of struct driver_file_entry to struct device_attribute
It may seem gratuitous, but it's what we really want.
driverfs files are meant to expose attributes of various kernel objects, so in that sense,
the change adds more accurate meaning to the object.
Plus, we will soon gain the ability to expose attributes of drivers (both device and bus)
themselves, and we want to be able to have each mean something reasonable.
This changes driverfs and the device model core (but none of the other users)
<mochel@osdl.org>
Fixup users of driverfs:
do a s/driver_file_entry/device_attribute/g on all of them.
<mochel@osdl.org>
driverfs: add device_remove_symlink wrapper for removing symlinks (since driverfs
API is just about to change...)
<greg@kroah.com>
Remove the devfs_should* functions I added, and replace them with one devfs_only() call
This now explains what is really going on much better than before.
<jgarzik@mandrakesoft.com>
alpha pid-reporting POSIX comformance bug fix:
2.4 kernels were changed to support POSIX thread groups, such that,
sys_getpid() now returns $task->tgid, the thread group id.
Since alpha implements its own getpid syscall, it missed this change,
which is now included here.
<mochel@osdl.org>
driverfs:
make device_remove_file take a struct device_attribute *, instead of just
a char * (for consistency with device_create_file)
<mochel@osdl.org>
fixup users of device_remove_file to pass a struct device_attribute, instead of a char *
<trond.myklebust@fys.uio.no>
[PATCH] NFS lookup() BKL imbalance
One more lookup bug caught. Fix missing unlock_kernel() when doing
readdirplus cached lookups in nfs_lookup().
<trond.myklebust@fys.uio.no>
[PATCH] Re: better getattr caching..
The following patches to nfs2xdr.c/nfs3xdr.c might be relevant: *entry
points into the page, and so the assignment should be made before we
kunmap().
Also includes a patch that converts references to inode->i_data into
inode->i_mapping. Not likely to be the source of your hang, but should
still be done for consistency with the rest of the kernel.
<rusty@rustcorp.com.au>
[PATCH] CPU#1 not working with CONFIG_SMP=y, 2.5.28 OK.
Linus, please apply. This fixes cpu_possible() on x86.
<david-b@pacbell.net>
[PATCH] ohci, control/enumeration fix
One of the flakey things I see with 2.5.29 is that many
devices give trouble enumerating. uhci still oopses khubd
enumerating pegasus (many control message errors first).
But that's not the only troublesome combo.
This patch fixes a failure that would hang the ohci driver
It's basically avoiding a few less IRQs (most noticable
with ISO), in this case so that a wedged SET_ADDRESS completes.
(Instead of hanging khubd in 'D' state.) And it also updates
a diagnostic to provide more troubleshooting help for similar
issues in the future.
<akpm@zip.com.au>
[PATCH] Re: BUG at rmap.c:212
Linus, can we please not have that BUG() in 2.5.30?
<torvalds@home.transmeta.com>
We'd better BUG out inside the NFS code rather than return a
bogus dentry pointer to the VFS layer (which would oops on it
inside the dcache lock).
<trond.myklebust@fys.uio.no>
[PATCH] Fix brown paper bag race in RPC receive code
Changeset 1.403.142.29 introduces a pretty nasty race into the RPC
code. Once we've decoded the RPC reply, it needs to be protected
against being overwritten by any resends.
The following patch achieves this by ensuring that the request is
removed from the list xprt->recv in xprt_complete_rqst(). This again
ensures that xprt_lookup_rqst() will fail to find that request until
we put it back on the list.
<mochel@osdl.org>
driverfs: Declare DEVICE_ATTR macro for initializing device attributes
(hide internal format of the structure)
<mochel@osdl.org>
Convert users of struct device_attribute to initialize the structs using
DEVICE_ATTR macro.
<mochel@osdl.org>
driverfs: Add struct attribute
driverfs can only handle passing struct device to read/write functions. In order to free it of this limitation,
we need a common data structure for driverfs to pass around.
The only thing that driverfs really needs are the name and mode of the file, which are now located in struct
attribute.
struct device_attribute gets a struct attribute member, which holds the name and mode. With the DEVICE_ATTR
macro, users of the structure require no modification.
device_create_file is modified to take a struct attribute parameter
a to_dev_attr() macro is introduced to convert between a struct attribute to a struct device_attribute
<dalecki@evision.ag>
[PATCH] 2.5.29 IDE 110
- cs5530 patches by Adam J. Richter. Small indent style adjustments.
- qd65xx cli()/sti() adjustments.
- Fix bogous command in ide.c pointed out by Peter Vendroviec.
- Eliminate ide_stall_queue(). For those worried: we didn't sleep at
all.
- Eliminate support for "sector remapping". loop devices can handle
stuff like that. All the custom DOS high system memmory loaded
BIOS workaround tricks are obsolete right now. If anywhere it should
be the FAT filesystem code which should be clever enough to deal with
it by adjusting it's read/write methods.
- PCI "scather gather" allocation handling revamp by Adam J. Richter.
- Simplify do_ide_request after ->sleep removal.
- Make do_ide_request prefer to handle the device matching the request
queue it was called for first. RQ-queues are unique for devices.
In a next step queuedata will be changed to point to the device
not the channel.
<dalecki@evision.ag>
[PATCH] 2.5.29 IDE 111
- Change over queuedata to carry the device instead of the channel
information.
<axboe@suse.de>
[PATCH] misc elevator/block updates
I've got a new i/o scheduler in testing, some changes where needed in
the block layer to accomodate it. Basically because right now
assumptions are made about q->queue_head being the sort list. The
changes in detail:
o elevator_merge_requests_fn takes queue argument as well
o __make_request() inits insert_here to NULL instead of
q->queue_head.prev, which means that the i/o schedulers must
explicitly check for this condition now.
o incorporate elv_queue_empty(), it was just a place holder before
o add elv_get_sort_head(). it returns the sort head of the elevator for
a given request. attempt_{back,front}_merge uses it to determine
whether a request is valid or not. Maybe attempt_{back,front}_merge
should just be killed, I doubt they have much relevance with the wake
up batching.
o call the merge_cleanup functions of the elevator _after_ the merge has
been done, not before. This way the elevator functions get the new
state of the request, which is the most interesting.
o Kill extra nr_sectors check in ll_merge_requests_fn()
o bi->bi_bdev is always set in __make_request(), so kill check.
<tomlins@cam.org>
[PATCH] fix UP links - current bk tree
Fix so UP does not ask for migration_init
<hugh@veritas.com>
[PATCH] C99 initializers for mm
ISO C99 designated initializers by Art Haas for mm.
<zwane@linuxpower.ca>
[PATCH] parport_serial/serial init dependencies
This looks to be somewhat botched up init dependencies. This patch
takes into consideration paride as well as fixing the parport_serial
case.
<mochel@osdl.org>
driverfs: define struct driverfs_ops and remove struct device dependencies
In order to read/write attributes, you have to deal directly with the object that owns them. driverfs really
wants to be generic and not deal directly with those objects. So, we create an intermediate layer that
subsystems must implement that converts between the generic objects and the specific objects that own the
attributes.
This allows allows attributes to be exported for any object type.
In doing so, it places the responsibility on the subsystems to do the following:
- define their own object-specific attribute structures
- define their own driverfs_ops
- set the ops pointer in struct driver_dir_entry when creating an object's directory
- do object reference counting on open() and close()
- call the show() and store() callbacks of their attribute structure
- convert between the generic objects and the specific objects from the struct driver_dir_entry and
struct attribute pointers (using container_of)
The implementation of this layer for struct device is intended to be used as an example of the interface.
Because this layer of abstraction is now in place, we can move the device attribute structure into
include/linux/device.h, and driverfs should be free of references to it completely.
<pavel@ucw.cz>
[PATCH] swsusp: Vojtech pointed error in usb/hub.c
We do not want threads exiting because of suspend, so refrigerator
should be just before test for signals pending (so it has chance to
kill them).
<pavel@ucw.cz>
[PATCH] swsusp: comment updates and warning fixes
Better comments and less warnings, please apply
<colpatch@us.ibm.com>
[PATCH] Adaptec Starfire config fix
<hch@lst.de>
[PATCH] update dqblk_xfs.h inclusion guards
This file was called xqm.h previously, and the inclusion guards still
think it is..
<wli@holomorphy.com>
[PATCH] remove declaration of __free_pte()
__free_pte() no longer exists in the kernel, but is still declared
from include/linux/mm.h. This patch removes that declaration.
<gnb@alphalink.com.au>
[PATCH] PATCH: kconfig choice defaults 2 (3_3)
The default value specified as the last word of the "choice" statement
should be a unique abbreviation of one of the sub-prompts. Using one
of the sub-symbols is not legal. Fix 'Type of PHY'.
[Rusty: this is 3/3 partial resends of 'PATCH: kconfig choice defaults (1/2)']
<gnb@alphalink.com.au>
[PATCH] PATCH 2.5: kconfig EXPERIMENTAL variant form
The convention is that symbols that depend on $CONFIG_EXPERIMENTAL are
marked in the banner with the string (EXPERIMENTAL). There are some
cases where that string is correctly used but is Capitalised instead of
uppercase.
<mikpe@csd.uu.se>
[PATCH] typo in fs_ufs_super.c:ufs_fill_super()
Obvious typo: checking block size but printing fragment size.
<wstinson@infonie.fr>
[PATCH] region changes for rocket
this is a small patch for Rocketport device driver for Linux to
1) remove two calls to check_region using request_region instead
2) release allocated region resource in case of error.
I don't have this hardware so compilation checked only.
This patch does not remove all references to check_region in this driver
(one reference still left unchanged).
<rusty@rustcorp.com.au>
[PATCH] Mark sparc32 unmaintained in 2.5
DaveM said this was fine.
<ica2_ts@csv.ica.uni-stuttgart.de>
[PATCH] Fix typo in mm_slab.c
this just fixes a typo.
<ica2_ts@csv.ica.uni-stuttgart.de>
[PATCH] Fix typo in net_ipv4_ipconfig.c
this just fixes a typo.
<trini@kernel.crashing.org>
[PATCH] Export synchronize_irq on CONFIG_SMP=y
Currently, all arches which support SMP define synchronize_irq(irq)
to be a real function (generally defined in arch/$(ARCH)/kernel/irq.c).
This export was removed inadvertanly I believe in the "bit IRQ lock"
removal and IRQ cleanups ChangeSet.
<anton@samba.org>
[PATCH] fix compile warning
Fix warning about undefined struct pt_regs.
<mikpe@csd.uu.se>
[PATCH] drm_mga bitops -> long fix
Silence bitop on non-long argument warnings.
[ Not just silence warnings, but fix portability bug ]
<hch@lst.de>
[PATCH] reparent scsi new-EH threads to init
(Included in 2.4)
<ahaas@neosoft.com>
[PATCH] designated initializer patches for
Here are patches for designated initializers in kernel/*.
<hch@lst.de>
[PATCH] explicit signed char cast in i386 spin_is_locked
To make spinlock debugging work with -funsigned-char the i386 version
of spin_is_locked() needs to cast to signed char explicitly instead of
just char. XFS needed -funsigned-char (and currently still has it),
but it doesn't evert hurt.
<james@cobaltmountain.com>
[PATCH] Typo in linux_net_sched_sch_ingress.c
<mikpe@csd.uu.se>
[PATCH] ftape bitops -> long fix
Silence bitop on non-long argument warnings.
<hch@lst.de>
[PATCH] silence APIC errors a bit
They are harmless mostly and can happen in normal use. (from -rh)
<wstinson@infonie.fr>
[PATCH] small region change for baycom_ser_hdx.c
this is a small patch for baycom_ser_hdx.c -- baycom ser12 halfduplex radio modem driver to
1) remove call to check_region using request_region instead
2) check the status of call to request_region
3) release allocated region resource in case of error.
I don't have this hardware so compilation checked only.
<anton@samba.org>
[PATCH] fix warning
Quick fix for:
smbiod.c:272: warning: deprecated use of label at end of compound statement
<gnb@alphalink.com.au>
[PATCH] PATCH 2.5: kconfig spurious EXPERIMENTAL 3 (2_2)
Symbol CONFIG_EXT3_FS doesn't depend on CONFIG_EXPERIMENTAL but claims
to in its banner.
<rfjak@eircom.net>
[PATCH] 2.5 Trivial patch - 1400x1050 video mode added twice in 2.5.28
I am not sure if you are the actual maintainer for this, but your name
adorns the source :
2.5.28 introduced video mode 1400x1050 twice into drivers/video/modedb.c
Both instances use indentical timings, so I guess it's a mistake.
<gnb@alphalink.com.au>
[PATCH] PATCH 2.5: kconfig spurious bool default value (1_3)
Some CML1 rule contributors seem to think that the "bool" statement
takes a third argument which is the default value. It doesn't.
<maalanen@ra.abo.fi>
[PATCH] using ptr after kfree()
Somebody noticed on #kernelnewbies. In the error path, so this is
silly cleanup work...
<gnb@alphalink.com.au>
[PATCH] PATCH 2.5: kconfig spurious EXPERIMENTAL 3 (1_2)
Symbol CONFIG_PPPOATM doesn't depend on CONFIG_EXPERIMENTAL but claims
to in its banner.
<gnb@alphalink.com.au>
[PATCH] PATCH 2.5: kconfig missing EXPERIMENTAL 4 (1_4)
Symbols CONFIG_HISAX_ENTERNOW_PCI and CONFIG_HISAX_AMD7930 depend on
CONFIG_EXPERIMENTAL but do not say so in their banners.
<james@cobaltmountain.com>
[PATCH] Typos in linux_arch_i386_kernel_io_apic.c
<hch@lst.de>
[PATCH] documentation typos in
from Debian's kernel package
[ Typo fix, makes sense, please apply ]
<wstinson@infonie.fr>
[PATCH] small region change for boardergo.c
this is a small patch for boardergo.c linux driver for isdn HYSDN cards to
1) remove call to check_region using request_region instead
2) check the status of call to request_region
3) release allocated region resource in case of error.
I don't have this hardware so compilation checked only.
<mingo@elte.hu>
[PATCH] sanitize TLS API
This removes the TLS clear operation. I've left the flags mask and the
writable flag just so that we have the option to introduce extensions
without breaking the ABI.
<felipewd@terra.com.br>
[PATCH] [PATCH[ 8139cp comment fix
This patch corrects a comment on the 8139cp ethernet driver.
<viro@math.psu.edu>
[PATCH] Get rid of per-partition blk_size[]
kills use of blk_size[] for partitioned devices, removes ->sizes from
struct gendisk.
<viro@math.psu.edu>
[PATCH] split "gendisk" to be per-disk, part 1
now that gendisks don't have shared stuff (we used to set blk_size[]
from ->sizes) we can start splitting them into per-disk ones.
Step 1:
we introduce a new field - ->first_minor (to be merged with ->major
into dev_t of entire disk once all gendisks are split). All arrays
are assumed to start at that minor (i.e. gd->part[minor] got replaced
with gd->part[minor - gd->first_minor], etc.). get_gendisk() is
taught to pick the right gendisk if there are several with the same
major.
<viro@math.psu.edu>
[PATCH] split "gendisk" to be per-disk, part 2
we are starting to split gendisks - now we can do that. Done for
ide, sd, pd, hd and mfm
It's in transit - what we are aiming at is getting ->nr_real to 1 for
all gendisks. Once that will be done we will be able to simplify a lot
stuff and remove ad-hackery. First thing that will happen after that
is death of ->nr_real, obviouslye. Then we
(a) will merge ->major and ->first_minor into ->dev
(b) strip one level of indirection from ->driverfs_dev_arr, ->de_arr
and ->flags - they turn into single-element arrays and we will simply pull
the (only) element into struct gendisk. Kills a lot of ad-hackery in splitup
code (fewer things to allocate).
(c) replace ->major_name with ->disk_name; kills most of the crap in
disk_name(9) - it only has to care about adding partition number to the name.
<torvalds@penguin.transmeta.com>
Undo d_drop removal at Trond's request
Cset exclude: torvalds@home.transmeta.com|ChangeSet|20020801011106|51286
<torvalds@penguin.transmeta.com>
Fix missing semicolon from gendisk work.
<torvalds@penguin.transmeta.com>
Linux v2.5.30
(
Log in to post comments)