- 14 Jan, 2003 3 commits
-
-
Andrew Morton authored
This is the leak which Con found. Long story... - If a dirty page is fed into ext3_writepage() during truncate, block_write_full_page() will reutrn -EIO (it's outside i_size) and will leave the buffers dirty. In the expectation that discard_buffer() will clean them. - ext3_writepage() then adds the still-dirty buffers to the journal's "async data list". These are buffers which are known to have had IO started. All we need to do is to wait on them in commit. - meanwhile, truncate will chop the pages off the address_space. But truncate cannot invalidate the buffers (in journal_unmap_buffer()) because the buffers are attached to the committing transaction. (hm. This behaviour in journal_unmap_buffer() is bogus. We just never need to write these buffers.) - ext3 commit will "wait on writeout" of these writepage buffers (even though it was never started) and will then release them from the journalling system. So we end up with pages which are attached to no mapping, which are clean and which have dirty buffers. These are unreclaimable. Aside: ext3-ordered has two buffer lists: the "sync data list" and the "async data list". The sync list consists of probably-dirty buffers which were dirtied in commit_write(). Transaction commit must write all thee out and wait on them. The async list supposedly consists of clean buffers which were attached to the journal in ->writepage. These have had IO started (by writepage) so commit merely needs to wait on them. This is all designed for the 2.4 VM really. In 2.5, tons of writeback goes via writepage (instead of the buffer lru) and these buffers end up madly hpooing between the async and sync lists. Plus it's arguably incorrect to just wait on the writes in commit - if the buffers were set dirty again (say, by zap_pte_range()) then perhaps we should write them again before committing. So what the patch does is to remove the async list. All ordered-data buffers are now attached to the single "sync data list". So when we come to commit, those buffers which are dirty will have IO started and all buffers are waited upon. This means that the dirty buffers against a clean page which came about from block_write_full_page()'s -EIO will be written to disk in commit - this cleans them, and the page is now reclaimable. No leak. It seems bogus to write these buffers in commit, and indeed it is. But ext3 will not allow those blocks to be reused until the commit has ended so there is no corruption risk. And the amount of data involved is low - it only comes about as a race between truncate and writepage().
-
Andrew Morton authored
max_sane_readahead() permits the user to readahead up to half-the-inactive-list's worth of pages. Which is totally wrong if most of memory is free. So make the limit be (nr_inactive + nr_free) / 2
-
Andrew Morton authored
Patch from Andreas Dilger <adilger@clusterfs.com> This patch against 2.5.53 removes my erronous use of ino_t in a couple of places in the ext3 code. This has been replaced with unsigned long (the same as is used for inode->i_ino). This patch matches the fix submitted to 2.4 for fixing 64-bit compiler warnings, and also replaces a couple of %ld with %lu to forestall output wierdness with filesystems with a few billion inodes.
-
- 13 Jan, 2003 37 commits
-
-
Linus Torvalds authored
-
Linus Torvalds authored
definition of BUG(). In the new (more logical) world order, that should be <asm/bug.h>
-
Greg Ungerer authored
This patch is the first in a series that groups the common m68knommu entry.S code into a common entry.S file (this is instead of having several similar files in lower sub-architecture directories). The whole idea is to reduce code duplication.
-
Miles Bader authored
-
http://linux-voyager.bkbits.net/dma-generic-mapping-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
James Bottomley authored
-
ssh://linux-voyager@linux-voyager.bkbits.net/dma-generic-mapping-2.5James Bottomley authored
into raven.il.steeleye.com:/home/jejb/BK/dma-alloc-flags-2.5
-
Miles Bader authored
-
Miles Bader authored
This prevents the linker from merging the .gnu.linkonce.this_module section into the .text section, which is necessary for modules to load correctly.
-
Zwane Mwaikambo authored
Fixes compile but card doesn't get detected, perhaps the id list?
-
Venkatesh Pallipadi authored
Clustered APIC setup patch. Needed to support generic systems with more than 8 CPUs. Motivation: The current APIC destination mode ("Flat Logical") used in linux kernel has an upper limit of 8 CPUs. For more than 8 CPUs, either "Clustered Logical" or "Physical" mode has to be used. The attached patch adds support such systems by organizing them into logical clusters, with each cluster having 4 CPUs. This is activated by a new config option "Support for other sub-arch SMP systems with more than 8 CPUs", under Processor feature->Sub architecture. The patch is made very simple and isolated, thanks to Martin J. Bligh's patchsets, which has moved all APIC related functions into sub-arch macros. Has zero impact on standard systems. This patch enables all 16 logical processors on a generic, non-quad based, system that we have here. Also, by looking at SuSE source, I have also added a special switch, to specifically support Unisys (ES7000). Just replacing #define SEQUENTIAL_APICID by CLUSTERED_APICID in the patch should make it work on ES7000(not tested).
-
Greg Ungerer authored
This pulls all of the m68knommu arch linker scripts into a single new style linker script. This patch specifically turns arch/m68knommu/vmlinux.lds.S into a generic linker script that works with all m68knommu targets.
-
Greg Ungerer authored
-
Greg Ungerer authored
This patch adds a definition for smp_read_barrier_depends() for the m68knommu architecture. This is now needed to compile net/ipv4/route.c.
-
Greg Ungerer authored
This patch removes the old 2.0.x conditional code from the mcfserial.h header.
-
Greg Ungerer authored
This patch sets a default console baud rate in the 68360 serial driver instead of just error'ing out if it is not set.
-
Greg Ungerer authored
This patch switches to using the _etext linker symbol instead of __data_rom_start for the ucdimm 68VZ328 platform. I intend to deprecate the __data_rom_start linker symbol in the future.
-
Greg Ungerer authored
This patch switches to using the _etext linker symbol instead of __data_rom_start for the ce2 68VZ328 platform. I intend to deprecate the __data_rom_start linker symbol in the future.
-
Greg Ungerer authored
This patch switches to using the _etext linker symbol instead of __data_rom_start for the ucsimm 68EZ328 platform. I intend to deprecate the __data_rom_start linker symbol in the future.
-
Greg Ungerer authored
This patch adds the missing exit code argument to the do_coredump() call in m68knommu arch signal.c.
-
Greg Ungerer authored
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> The korg1212 driver has a global variable named 'rc' that pollutes the namespace. This makes it static.
-
Rusty Russell authored
From: Pablo Menichini <pablo@menichini.com.ar>
-
Rusty Russell authored
From: william stinson <wstinson@wanadoo.fr> this patch for sound/oss/awe_wave.c sound driver for Linux removes three calls to check_region using request_region instead This is patch number 33 in a series of check_region patches I am doing as part of the kernel janitors project.
-
Rusty Russell authored
From: Pablo Menichini <pablo@menichini.com.ar>
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> A global variable should not be named 'objects' like in irias_object.c. This patch puts it into the right namespace. Also, strndup() is made static.
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> The maxiradio driver defines a few variables that should be made static.
-
Rusty Russell authored
From: Pavel Machek <pavel@ucw.cz> With local pages present, swsusp's accounting goes wrong and you get nice BUG(). This fixes it, please apply.
-
Rusty Russell authored
From: Pablo Menichini <pablo@menichini.com.ar>
-
Rusty Russell authored
From: Adrian Bunk <bunk@fs.tum.de>
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> de_get and de_put are used only in the file they are defined in, so make them static
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> The opti92x driver has global variables named 'rates' and 'bits' that pollute the namespace. This makes them static.
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> The variable rif_table should be neither global nor initialized to 0.
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> net/irda/qos.c exports some variables that are not used in any other file. This makes them static to avoid namespace conflicts
-
Rusty Russell authored
From: Bob Miller <rem@osdl.org> Added and #if/#endif pair to "remove" the un-used unknown_chipset declaration. Comments in generic.c indicate that unknow_chipset this will be used again in the future.
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> A global variable should not be called 'log', this makes it static
-
Rusty Russell authored
From: Arnd Bergmann <arnd@bergmann-dalldorf.de> The function init_irq is only used in ide-probe.c, so it should better be static.
-