2.5.70-mm2

Andrew Morton
2003-05-29T08:16:05Z

ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.70/2.5.70-mm2/

. A couple more locking mistakes in ext3 have been fixed.

. There is some code here to make ext3's journalled-data mode work again.

2.4's data=journal code has horrid hacks to cope with MAP_SHARED pages.
These did not survive the changes in the 2.5 writeback protocols.

What I have done here is to actually properly journal these pages rather
than treating them as ordered-mode data. This made things start to work
again, and journalled data mode appears to be solid.

It has only been tested with blocksize == PAGE_CACHE_SIZE, and is
probably buggy with smaller blocks at this time.

. There is a patch here which makes a fairly fundamental change to the way
in which the kernel handles O_SYNC writes.

Traditionally Linux has held the inode semaphore while waiting for the
I/O to complete. And it writes _all_ the file's dirty data, regardless of
how much data the write() caller wrote.

The patch here arranges for the O_SYNC writer to only write the pages
which he actually dirtied. And it moves the waiting for I/O completion
outside the inode semaphore, so other writers can get in and submit their
I/O.

All this is designed to speed up the situation where multiple processes
or threads are submitting O_SYNC writes to the same file. Databases. It
speeds things up because the various writers can get more data into the
disk queueing code, so it can optimise the seek distances.

A few simple O_SYNC-based tests showed speedups from 15% to 400%,
depending upon the access patterns and the number of writing threads. The
more threads the better.

If the application uses fsync() this change will provide no benefit.

This patch halves WimMark throughput. That is quite nonsensical.

Needs lots of testing.

Changes since 2.5.70-mm1:

linus.patch

Latest -bk

+coda-typo-fix.patch

coda BUGfix

+pccardd-suspend-fix.patch

swsusp fix

+resume-oops-fix.patch

another swsusp fix

+common-ioctl32.patch
+ioctl32-cleanup-sparc64.patch
+ioctl32-cleanup-x86_64.patch

Consolidation of 32-bit ioctl compat code

+export-mmu_cr4_features.patch

export a missing symbol for DRM

+visws-irq-update.patch

visws fixes

+lru_cache_add-check.patch

debug check

+fb-image-depth-fix.patch

framebuffer fix

+zoran_procfs-copy-user-fix.patch

don't do memcpy() on user pointers.

-ext3-journalled-data-assertion-fix.patch

merged into other patches

+write_one_page-cleanup.patch

minor cleanups

+deadline-hash-removal-fix.patch

deadline elevator fix

+as-hash-removal-fix.patch

anticipatory scheduler fix

+as-jumbo-patch-for-scsi.patch

Lots of changes to address interoperation between the anticipatory
scheduler and tagged-command-queueing disks. I wasn't supposed to release
this one yet. Oh well.

+cfq-hash-removal-fix.patch

CFQ scheduler fix

+blk-invert-watermarks.patch

cleanup relative to per-queue-nr_requests.patch

+print-build-options-on-oops.patch

Print a line in the oops output which tells whether CONFIG_PREEMPT,
CONFIG_SMP or CONFIG_DEBUG_PAGEALLOC are enabled. Might save the odd email
iteration.

-slab-scribble-negative.patch

Dropped, lost interest,

-journal_dirty_metadata-speedup.patch

moved around

+ext3-concurrent-block-inode-allocation-fix.patch

ext3 inode allocator race fix

+ext3-010-fix-journalled-data.patch

resurrect ext3 data=journal

+ext3-020-journal_dirty_metadata-speedup.patch

small speedup to a fastpath.

-lockfree-lookup_mnt.patch

Dropped. Just about all the speedup came from the simpler
vfsmount_lock.patch, so we'll run with that.

+writev-retval-fix.patch

Fix writev behaviour when some segments generate EFAULT.

+O_SYNC-speedup.patch

Move O_SYNC and IS_SYNC waits outside inode->i_sem.

+isdn-typo-fix.patch

Fix some isdn bug.

All 150 patches:

linus.patch

mm.patch
add -mmN to EXTRAVERSION

coda-typo-fix.patch
fix typo in coda

sysenter-nmi-fix-2.patch
fix bad pointer access in nmi

kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)

kmalloc_percpu-interface-change.patch
kmalloc_percpu: interface change.

kmalloc_percpu-interface-change-warning-fix.patch
nail a warning

DEFINE_PERCPU-in-modules.patch
per-cpu support inside modules (minimal)

slab-magazine-layer.patch
magazine layer for slab

slabinfo-rework.patch
new statistics for slab

aio-random-cleanups.patch

config_spinline.patch
uninline spinlocks for profiling accuracy.

ppc64-ioctl-pci-update.patch
From: Anton Blanchard <anton@samba.org>
Subject: ppc64 stuff

ppc64-reloc_hide.patch

sym-do-160.patch
make the SYM driver do 160 MB/sec

irqreturn-snd-via-fix.patch
via sound irqreturn fix

irq_cpustat-cleanup.patch
irq_cpustat cleanup

config-PAGE_OFFSET.patch
Configurable kenrel/user memory split

irq-check-rate-limit.patch
IRQs: handle bad return values from handlers

irq_desc-others.patch
Fix up irq_desc initialisation for non-ia32

pccardd-suspend-fix.patch
Fix suspend with pccardd running

resume-oops-fix.patch
fix oops on resume from apm bios initiated suspend

common-ioctl32.patch
From: Pavel Machek <pavel@suse.cz>
Subject: Re: must-fix list, v5

ioctl32-cleanup-sparc64.patch
ioctl32 cleanup: sparc64

ioctl32-cleanup-x86_64.patch
ioctl32 cleanup: sparc64

export-mmu_cr4_features.patch
export mmu_cr4_features to modules

visws-irq-update.patch
[VISWS] irqreturn_t conversion

lru_cache_add-check.patch
lru_cache_add debug check

fb-image-depth-fix.patch
fbdev image depth fix

zoran_procfs-copy-user-fix.patch
zoran user-pointer fix

buffer-debug.patch
buffer.c debugging

irq_balance-fix-2.patch
irq balance logic fix

VM_RESERVED-check.patch
VM_RESERVED check

rcu-stats.patch
RCU statistics reporting

ide_setting_sem-fix.patch

reslabify-pgds-and-pmds.patch
re-slabify i386 pgd's and pmd's

i2o-leak-comment.patch
i2o memleak comment

raid5-use-right-dev-fix.patch
raid5 fix

linux-isp.patch

isp-update-1.patch

list_del-debug.patch
list_del debug check

airo-schedule-fix.patch
airo.c: don't sleep in atomic regions

synaptics-mouse-support.patch
Add Synaptics touchpad tweaking to psmouse driver

write_one_page-cleanup.patch
write_one_page() fixlets

deadline-hash-removal-fix.patch
DEADLINE: hash removal fix

resurrect-batch_requests.patch
bring back the batch_requests function

kblockd.patch
Create `kblockd' workqueue

cfq-infrastructure.patch

elevator-completion-api.patch
elevator completion API

as-iosched.patch
anticipatory I/O scheduler

as-proc-read-write.patch
AS: pgbench improvement

as-discrete-read-fifo-batches.patch
AS: discrete read fifo batches

as-sync-async.patch
AS sync/async batches

as-hash-removal-fix.patch
AS: hash removal fix

as-jumbo-patch-for-scsi.patch
AS jumbo patch (for SCSI and TCQ)

unplug-use-kblockd.patch
Use kblockd for running request queues

cfq-2.patch
CFQ scheduler, #2
CFQ: update to rq-dyn API

cfq-hash-removal-fix.patch
CFQ: hash removal fix

per-queue-nr_requests.patch
per queue nr_requests

blk-invert-watermarks.patch
blk_congestion_wait threshold cleanup

unmap-page-debugging.patch
unmap unused pages for debugging

CONFIG_DEBUG_PAGEALLOC-extras.patch
From: Manfred Spraul <manfred@colorfullife.com>
Subject: DEBUG_PAGEALLOC

print-build-options-on-oops.patch
print a few config options on oops

fremap-all-mappings.patch
Make all executable mappings be nonlinear

sound-irq-hack.patch

show_task-free-stack-fix.patch
show_task() fix and cleanup

put_task_struct-debug.patch

ia32-mknod64.patch
mknod64 for ia32

ext2-64-bit-special-inodes.patch
ext2: support for 64-bit device nodes

ext3-64-bit-special-inodes.patch
ext3: support for 64-bit device nodes

64-bit-dev_t-kdev_t.patch
64-bit dev_t and kdev_t

oops-dump-preceding-code.patch
i386 oops output: dump preceding code

lockmeter.patch

unlink-speedup-speedup.patch
speedp the unlink speedup

time-interpolation-infrastructure.patch
improved core support for time-interpolation

thread-info-in-task_struct.patch
allow thread_info to be allocated as part of task_struct

reinstate-task-freeing-hack-for-ia64.patch
reinstate lame task_struct (non)-refcounting hack/fix

remove-fcntl-check.patch
Remove unneeded fcntl check

ext3-no-bkl.patch

journal_get_write_access-speedup.patch

ext3-concurrent-block-inode-allocation.patch
Subject: [PATCH] concurrent block/inode allocation for EXT3

ext3-orlov-approx-counter-fix.patch
Fix orlov allocator boundary case

ext3-concurrent-block-allocation-fix-1.patch

ext3-concurrent-block-allocation-hashed.patch
Subject: Re: [PATCH] concurrent block/inode allocation for EXT3

ext3-concurrent-block-inode-allocation-fix.patch
fix ext3 inode allocator race

jbd-010-b_committed_data-race-fix.patch
Subject: Re: [Ext2-devel] [RFC] probably bug in current ext3/jbd

jbd-020-locking-schema.patch
plan JBD locking schema

jbd-030-remove-splice_lock.patch
remove jh_splice_lock

jbd-040-journal_add_journal_head-locking.patch
fine-grain journal_add_journal_head locking

jbd-045-rename-journal_unlock_journal_head.patch
rename journal_unlock_journal_head to journal_put_journal_head

jbd-050-b_frozen_data-locking.patch
Finish protection of journal_head.b_frozen_data

jbd-060-b_committed_data-locking.patch

jbd-070-b_transaction-locking.patch
implement b_transaction locking rules

jbd-080-b_next_transaction-locking.patch
Implement b_next_transaction locking rules

jbd-090-b_tnext-locking.patch
b_tnext locking

jbd-100-remove-journal_datalist_lock.patch
remove journal_datalist_lock

jbd-110-t_nr_buffers-locking.patch
t_nr_buffers locking

jbd-120-t_updates-locking.patch
t_updates locking

jbd-130-t_outstanding_credits-locking.patch
implement t_outstanding_credits locking

jbd-140-t_jcb-locking.patch
implement t_jcb locking

jbd-150-j_barrier_count-locking.patch
implement j_barrier_count locking

jbd-160-j_running_transaction-locking.patch
implement j_running_transaction locking

jbd-170-j_committing_transaction-locking.patch
implement j_committing_transaction locking

jbd-180-j_checkpoint_transactions.patch
implement j_checkpoint_transactions locking

jbd-190-j_head-locking.patch
implement journal->j_head locking

jbd-200-j_tail-locking.patch
implement journal->j_tail locking

jbd-210-j_free-locking.patch
implement journal->j_free locking

jbd-220-j_commit_sequence-locking.patch
implement journal->j_commit_sequence locking

jbd-230-j_commit_request-locking.patch
implement j_commit_request locking

jbd-240-dual-revoke-tables.patch
implement dual revoke tables.

jbd-250-remove-sleep_on.patch
remove remaining sleep_on()s

jbd-300-remove-lock_kernel-journal_c.patch
remove lock_kernel() calls from journal.c

jbd-310-remove-lock_kernel-transaction_c.patch
remove lock_kernel calls from transaction.c

jbd-400-remove-lock_journal-checkpoint_c.patch
remove lock_journal calls from checkpoint.c

jbd-410-remove-lock_journal-commit_c.patch
remove lock_journal() from commit.c

jbd-420-remove-lock_journal-journal_c.patch
remove lock_journal() calls from journal.c

jbd-430-remove-lock_journal-transaction_c.patch
remove lock_journal() calls from transaction.c

jbd-440-remove-lock_journal.patch
remove lock_journal()

jbd-510-h_credits-fix.patch
journal_release_buffer: handle credits fix

jbd-520-journal_unmap_buffer-race.patch
journal_unmap_buffer race fix

jbd-530-walk_page_buffers-race-fix.patch
ext3_writepage race fix

jbd-540-journal_try_to_free_buffers-race-fix.patch
buffer freeing non-race comment

jbd-550-locking-checks.patch
add some locking assertions

jbd-560-transaction-leak-fix.patch
transaction leak and race fix

jbd-570-transaction-state-locking.patch
additional transaction shutdown locking

ext3-010-fix-journalled-data.patch
Remove incorrect assertion from ext3

ext3-020-journal_dirty_metadata-speedup.patch

invalidate_mmap_range.patch
Interface to invalidate regions of mmaps

unregister_netdev-cleanup.patch

aio-01-retry.patch
AIO: Core retry infrastructure

aio-02-lockpage_wq.patch
AIO: Async page wait

aio-03-fs_read.patch
AIO: Filesystem aio read

aio-04-buffer_wq.patch
AIO: Async buffer wait

aio-05-fs_write.patch
AIO: Filesystem aio write

aio-05-fs_write-fix.patch

aio-06-bread_wq.patch
AIO: Async block read

aio-06-bread_wq-fix.patch

aio-07-ext2getblk_wq.patch
AIO: Async get block for ext2

aio-poll.patch
aio_poll
aio-poll: don't put extern decls in .c!

64-bit-pci_alloc_consistent.patch
support 64 bit pci_alloc_consistent

vfsmount_lock.patch
From: Maneesh Soni <maneesh@in.ibm.com>
Subject: [patch 1/2] vfsmount_lock

proc-kcore-rework.patch
/proc/kcore fixes

syncppp-locking-fix.patch
syncppp locking fix

s390-dirty-bit-cleaning.patch
dirty bit clearing on s390.

min_free_kbytes.patch
/proc/sys/vm/min_free_kbytes

svcsock-use-after-free-fix.patch
svsock use-after-free fix

sched-hot-balancing-fix.patch
fix for CPU scheduler load distribution

writev-retval-fix.patch
Fix writev when a segment generates EFAULT

O_SYNC-speedup.patch
speed up O_SYNC writes

isdn-typo-fix.patch
Fixes trivial error in drivers/isdn/hardware/eicon/divamnt.c