- 08 Jan, 2003 7 commits
-
-
Andrew Morton authored
We don't need to wake up the synchronous waiter for every BIO completion - just for the final BIO. This reduces the context switch rate of a 180 megabyte/sec read from 3500/sec to 2200/sec when performing 1400 128k I/Os per second, so it more than halves the overhead.
-
Andrew Morton authored
Patch from Badari Pulavarty <pbadari@us.ibm.com> and myself. This patch adds AIO support for direct-IO - O_DIRECT files, O_DIRECT blockdevs and /dev/raw/rawN. Also, the controlling `struct dio' is now always kmalloced, saving ~400 bytes of stack. The best tool for testing AIO/DIO is the modified fsx-linux in ext3 CVS. See http://www.zip.com.au/~akpm/linux/ext3/ for details. For example: fsx-linux -Z -A -R -W -r 512 -w 4096 foo Running many instances of this against ext3 currently fails with incorrect file data; some bug in the new ext3 O_DIRECT support. ext2 is OK though.
-
Andrew Morton authored
In two cases (AIO-for-direct-IO and some CDROM DMA stuff which Jens did), we need to run set_page_dirty() in interrupt context. After DMA hardware has altered userspace pages for direct-IO reads. But mapping->page_lock, mapping->private_lock and inode_lock are not irq-safe. And really, we don't want to convert those locks just for this problem. So what we do is to dirty the pages *before* starting I/O. Then, in interrupt completion context, check to see that they are still dirty. If so then there is nothing to do. But if the pages were cleaned while the direct-IO is in progress we need to redirty them. The code uses schedule_work() for that. Of course, we could use schedule_work() for all BIOs and pages. The speculative dirty-before-starting-IO is just an optimisation. It's quite unlikely that any of the pages will be cleaned during the direct IO. This code is basically untestable under normal circumstances, because the relevant pages are pinned via get_user_pages(). This makes is_page_cache_freeable() evaluate false and the VM doesn't try to write them out anyway. But if the pages happen to be MAP_SHARED file pages, pdflush could clean them. The way I tested this code was to disable the call to bio_set_pages_dirty() in fs/direct-io.c.
-
Andrew Morton authored
Patch from Badari Pulavarty <pbadari@us.ibm.com> and myself This patch adds the infrastructure for performing asynchronous (AIO) blockdev direct-IO. - Adds generic_file_aio_write_nolock() and make other generic_file_*_write() to use it. - Modify generic_file_direct_IO() and ->direct_IO() functions to take "kiocb *" instead of "file *". - Renames generic_direct_IO() to blockdev_direct_IO(). - Move generic_file_direct_IO() to mm/filemap.c (it is not blockdev-specific, whereas the rest of fs/direct-io.c is). - Add AIO read/write support to the raw driver.
-
Andrew Morton authored
If direct-io encounters an error, it currently returns that error even if it performed some I/O. Change it so that if there is an error and we read or wrote something, return the number of bytes written/read. Only return the error code if zero bytes were written/read.
-
Andrew Morton authored
We need to run exit_aio() when the final user of the mm goes away, else lots of things leak. Also remove a printk which comes out when this change is made. This patch was acked by bcrl.
-
Adrian Bunk authored
The patch below is large but trivial: It removes old #if'd compatiblity code for 2.0 kernels from drivers/char/ftape/* (this includes the removal of two header files including only compatibility code and the #include's of these files).
-
- 07 Jan, 2003 33 commits
-
-
Linus Torvalds authored
-
Justin T. Gibbs authored
o Correct memory mapped I/O test for legacy controllers that do not have the "auto-access-pause" feature. o Prevent NMIs from triggering should the MMAP I/O test fail. o Fix aic7770 (EISA/VLB) controller regression. o Kill a few compiler warnings.
-
Justin T. Gibbs authored
o Do not fallback to a wide speed if the device does not support wide transfers. o Don't bother allocating target instances for wide IDs on narrow controllers. o Add a few additional diagnostics to aid in tracking down DV bugs.
-
Justin T. Gibbs authored
Remove the numerical_value portion of the grammer which is no longer referenced. This eliminates a yacc warning.
-
Justin T. Gibbs authored
are not rebuilt on every build. Use better Kbuild rule style for building firmware. Submitted by: Sam Ravnborg <sam@ravnborg.org>
-
Anton Blanchard authored
Add a missing inline, shows up when modules are turned off.
-
Greg Kroah-Hartman authored
-
Greg Kroah-Hartman authored
This is only used by pci hotplug and cardbus systems.
-
Greg Kroah-Hartman authored
-
bk://kernel.bkbits.net/davem/sparc-2.5Linus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
bk://kernel.bkbits.net/davem/net-2.5Linus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
David S. Miller authored
into kernel.bkbits.net:/home/davem/net-2.5
-
Ravikiran G. Thirumalai authored
-
David S. Miller authored
into kernel.bkbits.net:/home/davem/sparc-2.5
-
Linus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
Martin J. Bligh authored
OK, the grand finale ... NUMA-Q is now moved into subarch, so we can kill off the last vestiges - CONFIG_CLUSTERED_APIC, clustered_apic_mode, and smpboot.h (which only contains machine specific stuff now anyway). the esr_disable switch was the last bit, that goes to subarch too. If you end up with an empty smpboot.h due to patch / bitkeeper interactions, please remove it after this ...
-
Martin J. Bligh authored
This removes clustered_apic_mode from smpboot.c into subarch, creating a headerfile "mach_wakecpu" for all the cpu wakeup stuff. This is pretty much the last of clustered_apic_mode ... ;-)
-
Martin J. Bligh authored
To be honest, I have no idea what I was smoking when I wrote this originally, and it's kind of coincidental that it works at all currently. We never use physical apicids after the cpus are all booted, so we should just store the logical IDs which all subsequent things use. The only things that were using the apicid->cpu mapping were hokey anyway, and it's hard to maintain for machines that have a large apic addressing space (eg P4s in clustered mode). Rips out everything except the mapping from logical_apic_id -> cpu.
-
Martin J. Bligh authored
Moves check_phys_apicid_present() into subarch, and cleans up a couple of stupid errors, and some bracketing issues in the macros.
-
Martin J. Bligh authored
Patch from James Cleverdon Changes do_boot_cpu to return an error code, instead of trying to work it out later by magic and voodoo. Removes the other usage of apicid->cpu which is hard to maintain cleanly.
-
Martin J. Bligh authored
Patch originally by Matt Dobson. Reworked a little by me. Stores the mappings between cpus and nodes in an array, instead of working them out every time. Gives about 4% off systime for kernel compile (we use these for every page allocation), and removes one of the two only usages of apicid->cpu mapping, which is really awkward to keep for systems with large apic spaces, and is genererally pretty useless anyway (later patch removes).
-
Martin J. Bligh authored
Create a generalised apicid_to_node mapping, replacing the local apicid_to_quad I had just locally in NUMA-Q subarch before.
-
http://jfs.bkbits.net/linux-2.5Linus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
Dave Kleikamp authored
This simply uses generic_file_aio_read and generic_file_aio_write
-
Dave Kleikamp authored
-
Dave Kleikamp authored
into shaggy.austin.ibm.com:/shaggy/bk/jfs-2.5
-
bk://ldm.bkbits.net/linux-2.5-coreLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Patrick Mochel authored
into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-core
-
bk://linux.bkbits.net/linux-2.5Patrick Mochel authored
into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin
-
Patrick Mochel authored
-
bk://are.twiddle.net/axp-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Andi Kleen authored
Make x86-64 compile again after recent extable changes.
-
Ray Lee authored
Micheal Meeks notes: "Evolution is non-functioning on recent 2.5.X kernels, due to mal-performance in getpeername => net/unix/af_unix.c (unix_getname), where it seems we switch 'sk' on 'peer', but not the (previously) typecast pointer to it; this fixes it." Whitespace fixes by Ray Lee.
-