diff options
| author | Andrew Morton <akpm@zip.com.au> | 2002-08-13 01:08:17 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-08-13 01:08:17 -0700 |
| commit | 5b1b229ff5b1380bdea8a7687f22c554375d70f3 (patch) | |
| tree | 9cc7499e975f3ac84c567fd2ba5b4c70effd9946 /kernel | |
| parent | 5803a3a6fb76498764b520f5ba02b2bf86f063db (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.c | 5 | ||||
| -rw-r--r-- | kernel/ksyms.c | 2 |
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); |
