summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorAndrew Morton <akpm@zip.com.au>2002-08-13 01:08:17 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-08-13 01:08:17 -0700
commit5b1b229ff5b1380bdea8a7687f22c554375d70f3 (patch)
tree9cc7499e975f3ac84c567fd2ba5b4c70effd9946 /kernel
parent5803a3a6fb76498764b520f5ba02b2bf86f063db (diff)
[PATCH] random fixes
- I changed the sector_t thing in max_block to use davem's approach. I agree with Anton, but making it explicit doesn't hurt. - Remove a dead comment in copy_strings. Old stuff: - Remove the IO error warning in end_buffer_io_sync(). Failed READA attempts trigger it. - Emit a warning when an ext2 is mounting an ext3 filesystem. We have had quite a few problem reports related to this, mainly arising from initrd problems. And mount(8) tends to report the fstype from /etc/fstab rather than reporting what has really happened. Fixes some bogosity which I added to max_block(): - `size' doesn't need to be sector_t - `retval' should not be initialised to "~0UL" because that is 0x00000000ffffffff with 64-bit sector_t. - Allocate task_structs with GFP_KERNEL, as discussed. - Convert the EXPORT_SYMBOL for generic_file_direct_IO() to EXPORT_SYMBOL_GPL. That was only exported as a practicality for the raw driver. - Make the loop thread run balance_dirty_pages() after dirtying the backing file. So it will perform writeback of the backing file when dirty memory levels are high. Export balance_dirty_pages to GPL modules for this. This makes loop work a lot better - I suspect it broke when callers of balance_dirty_pages() started writing back only their own queue. There are many page allocation failures under heavy loop writeout. Coming from blk_queue_bounce()'s allocation from the page_pool mempool. So... - Disable page allocation warnings around the initial atomic allocation attempt in mempool_alloc() - the one where __GFP_WAIT and __GFP_IO were turned off. That one can easily fail. - Add some commentary in block_write_full_page()
Diffstat (limited to 'kernel')
-rw-r--r--kernel/fork.c5
-rw-r--r--kernel/ksyms.c2
2 files changed, 4 insertions, 3 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 3cb62cfcf4fd..e4944ff2d845 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -131,9 +131,10 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
struct thread_info *ti;
ti = alloc_thread_info();
- if (!ti) return NULL;
+ if (!ti)
+ return NULL;
- tsk = kmem_cache_alloc(task_struct_cachep,GFP_ATOMIC);
+ tsk = kmem_cache_alloc(task_struct_cachep, GFP_KERNEL);
if (!tsk) {
free_thread_info(ti);
return NULL;
diff --git a/kernel/ksyms.c b/kernel/ksyms.c
index df2891739e70..da09faf43b17 100644
--- a/kernel/ksyms.c
+++ b/kernel/ksyms.c
@@ -344,7 +344,7 @@ EXPORT_SYMBOL(register_disk);
EXPORT_SYMBOL(read_dev_sector);
EXPORT_SYMBOL(init_buffer);
EXPORT_SYMBOL(wipe_partitions);
-EXPORT_SYMBOL(generic_file_direct_IO);
+EXPORT_SYMBOL_GPL(generic_file_direct_IO);
/* tty routines */
EXPORT_SYMBOL(tty_hangup);