All of lore.kernel.org
 help / color / mirror / Atom feed
* 2.6.0-test6-mm4
@ 2003-10-05  8:33 ` Andrew Morton
  0 siblings, 0 replies; 15+ messages in thread
From: Andrew Morton @ 2003-10-05  8:33 UTC (permalink / raw)
  To: linux-kernel, linux-mm


ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test6/2.6.0-test6-mm4/

This is a small stabilisation update against -mm3 to fix various bits of
brokenness which people have inflicted upon me.  To make it all build, boot
and run on ia32, ia64 and ppc64.




Changes since 2.6.0-test6-mm3:


 linus.patch

 latest Linus tree

-skb-leak-fix.patch

 Merged

-utime-on-immutable-file-fix-cleanup.patch

 Dropped: the current code is OK.

-readonly-bind-mounts.patch

 This got broken.

+compat-ioctl-consolidation-job-control-update.patch

 Update compat-ioctl-consolidation.patch for move-job-control-fields.patch

+move-job-control-fields-ia64-fix.patch

 Fix ia64 for move-job-control-fields.patch

+ia32-efi-other-arch-fix.patch

 Fix ia32-efi-support.patch for non-ia32 builds

+sparc32-sched_clock.patch

 Simple sched_clock() implementation for sparc32

+unmap_vmas-warning-fix.patch

 Warning fixlet

+athlon-prefetch-handling.patch
+athlon-prefetch-handling-fix.patch

 Latest athlon prefetch workaround.




All 155 patches:


linus.patch

mm.patch
  add -mmN to EXTRAVERSION

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

kgdb-buff-too-big.patch
  kgdb buffer overflow fix

kgdb-warning-fix.patch
  kgdbL warning fix

kgdb-build-fix.patch

kgdb-spinlock-fix.patch

kgdb-fix-debug-info.patch
  kgdb: CONFIG_DEBUG_INFO fix

kgdb-cpumask_t.patch

kgdb-x86_64-fixes.patch
  x86_64 fixes

kgdb-over-ethernet.patch
  kgdb-over-ethernet patch

kgdb-over-ethernet-fixes.patch
  kgdb-over-ethernet fixlets

kgdb-CONFIG_NET_POLL_CONTROLLER.patch
  kgdb: replace CONFIG_KGDB with CONFIG_NET_RX_POLL in net drivers

kgdb-handle-stopped-NICs.patch
  kgdb: handle netif_stopped NICs

eepro100-poll-controller.patch

tlan-poll_controller.patch

tulip-poll_controller.patch

tg3-poll_controller.patch
  kgdb: tg3 poll_controller

kgdb-eth-smp-fix.patch
  kgdb-over-ethernet: fix SMP

kgdb-eth-reattach.patch

kgdb-skb_reserve-fix.patch
  kgdb-over-ethernet: skb_reserve() fix

must-fix.patch

should-fix.patch

RD0-initrd-B6.patch

RD1-cdrom_ioctl-B6.patch

RD2-ioctl-B6.patch

RD2-ioctl-B6-fix.patch
  RD2-ioctl-B6 fixes

RD3-cdrom_open-B6.patch

RD4-open-B6.patch

RD5-cdrom_release-B6.patch

RD6-release-B6.patch

RD7-presto_journal_close-B6.patch

RD8-f_mapping-B6.patch

RD9-f_mapping2-B6.patch

RD10-i_sem-B6.patch

RD11-f_mapping3-B6.patch

RD12-generic_osync_inode-B6.patch

RD13-bd_acquire-B6.patch

RD14-generic_write_checks-B6.patch

RD15-I_BDEV-B6.patch

RD16-rest-B6.patch

serio-01-renaming.patch
  serio: rename serio_[un]register_slave_port to __serio_[un]register_port

serio-02-race-fix.patch
  serio: possible race between port removal and kseriod

serio-03-blacklist.patch
  Add black list to handler<->device matching

serio-04-synaptics-cleanup.patch
  Synaptics: code cleanup

serio-05-reconnect-facility.patch
  serio: reconnect facility

serio-06-synaptics-use-reconnect.patch
  Synaptics: use serio_reconnect

acpi_off-fix.patch
  fix acpi=off

cfq-4.patch
  CFQ io scheduler
  CFQ fixes

config_spinline.patch
  uninline spinlocks for profiling accuracy.

ppc64-bar-0-fix.patch
  Allow PCI BARs that start at 0

ppc64-reloc_hide.patch

ppc64-semaphore-reimplementation.patch
  ppc64: use the ia32 semaphore implementation

ppc64-sym2-fix.patch
  ppc64 sym2 fix

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

input-use-after-free-checks.patch
  input layer debug checks

fbdev.patch
  framebbuffer driver update

cursor-flashing-fix.patch
  fbdev: fix cursor letovers

radeonfb-line_length-fix.patch
  From: Peter Chubb <peter@chubb.wattle.id.au>
  Subject: Radeon framebuffer problems i 2.6.0-test6

aic7xxx-parallel-build-fix.patch
  fix parallel builds for aic7xxx

ramdisk-cleanup.patch

intel8x0-cleanup.patch
  intel8x0 cleanups

uml-update.patch
  Update UML to 2.6.0-test5

selectable-logbuf-size.patch
  boot-time selectable log buffer size

8139too-edimax.patch

pdflush-diag.patch

kobject-oops-fixes.patch
  fix oopses is kobject parent is removed before child

futex_refs_and_lock_fix.patch
  futex locking fix

futex-locking-fix-fix.patch
  fix to futex locking fix

futex-uninlinings.patch
  futex uninlining

node-enumeration-cleanup-01.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [1/5]

node-enumeration-cleanup-02.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [2/5]

node-enumeration-cleanup-03.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [3/5]

node-enumeration-cleanup-04.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [4/5]

node-enumeration-cleanup-05.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [5/5]

node-enumeration-cleanup-fix-01.patch
  node enumeration fixes

zap_page_range-debug.patch
  zap_page_range() debug

acpi-thinkpad-fix.patch
  APCI fix for thinkpads

compat-ioctl-consolidation.patch
  compat ioctl consolidation

compat-ioctl-consolidation-job-control-update.patch

alsa-gameport-fix.patch
  ALSA pci Kconfig fix

scsi-handle-zero-length-requests.patch
  scsi: handle zero-length requests

sizeof-in-ioctl-fix.patch
  incorrect use of sizeof() in aty128fb

call_usermodehelper-retval-fix-3.patch
  Make call_usermodehelper report exit status

asus-L5-fix.patch
  Asus L5 framebuffer fix

ax25-timer-cleanup.patch
  X25 timer cleanup

jffs-use-daemonize.patch

calc_vm_trans-commentary.patch
  document the macro for translating PROT_ to VM_ bits

tulip-NAPI-support.patch
  tulip NAPI support

tulip-napi-disable.patch
  tulip NAPI: disable poll in close

io-refcount-debugging.patch
  io context refcounting debugging

proc-sys-auxv.patch
  /proc/sys/auxv

kernel-doc-fixes.patch
  kernel documentation fixes

kill-CONFIG_EISA_ALWAYS.patch
  EISA_bus cleanup

ext3-concurrent-alloc-locking-fix.patch

dscc4-fixes.patch
  dscc4 driver fixes

cpufreq-sysfs-oops-fix.patch
  cpufreq sysfs oops fix

move-job-control-fields.patch
  move job control fields from task_struct to signal_struct

move-job-control-fields-ia64-fix.patch

get_user_pages-handle-VM_IO.patch

ia32-MSI-support.patch
  Updated ia32 MSI Patches

ia32-MSI-support-tweaks.patch

ia32-efi-support.patch
  EFI support for ia32

CONFIG_ACPI_EFI-defaults-off.patch

ia32-efi-support-warning-fixes.patch

ia32-efi-support-tidy.patch

ia32-efi-other-arch-fix.patch
  fix EFI for ppc64, ia64

support-zillions-of-scsi-disks.patch
  support many SCSI disks

dynamic-irq_vector-allocation.patch
  dynamic irq_vector allocation for ia32

SGI-IOC4-IDE-chipset-support.patch
  Add support for SGI's IOC4 chipset

do_no_page-pte_chain_leak-fix.patch
  fix pte_chain leak in do_no_page

vma-split-truncate-race-fix.patch
  fix split_vma vs. invalidate_mmap_range_list race

vma-split-truncate-race-fix-tweaks.patch

sparc32-sched_clock.patch

unmap_vmas-warning-fix.patch
  Fix unmap_vmas() compile warning

keyboard-repeat-rate-setting-fix.patch
  keyboard repeat rate setting fix

list_del-debug.patch
  list_del debug check

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

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

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

lockmeter.patch

printk-oops-mangle-fix.patch
  disentangle printk's whilst oopsing on SMP

20-odirect_enable.patch

21-odirect_cruft.patch

22-read_proc.patch

23-write_proc.patch

24-commit_proc.patch

25-odirect.patch

nfs-O_DIRECT-always-enabled.patch
  Force CONFIG_NFS_DIRECTIO

4g-2.6.0-test2-mm2-A5.patch
  4G/4G split patch
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g/4g usercopy atomicity fix
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g/4g usercopy atomicity fix
  4G/4G preempt on vstack
  4G/4G: even number of kmap types
  4g4g: fix __get_user in slab
  4g4g: Remove extra .data.idt section definition
  4g/4g linker error (overlapping sections)
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g4g: show_registers() fix
  4g/4g usercopy atomicity fix
  4g4g: debug flags fix
  4g4g: Fix wrong asm-offsets entry
  cyclone time fixmap fix
  4G/4G preempt on vstack
  4G/4G: even number of kmap types
  4g4g: fix __get_user in slab
  4g4g: Remove extra .data.idt section definition
  4g/4g linker error (overlapping sections)
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g4g: show_registers() fix
  4g/4g usercopy atomicity fix
  4g4g: debug flags fix
  4g4g: Fix wrong asm-offsets entry
  cyclone time fixmap fix
  use direct_copy_{to,from}_user for kernel access in mm/usercopy.c
  4G/4G might_sleep warning fix
  4g/4g pagetable accounting fix

athlon-prefetch-handling.patch
  Athlon prefetch patch for 2.6.0test6mm2

athlon-prefetch-handling-fix.patch

ppc-fixes.patch
  make mm4 compile on ppc

aic7xxx_old-oops-fix.patch

O_DIRECT-race-fixes-rollup.patch
  DIO fixes forward port and AIO-DIO fix
  O_DIRECT race fixes comments
  O_DRIECT race fixes fix fix fix
  DIO locking rework

O_DIRECT-race-fixes-rework-XFS-fix.patch
  O_DIRECT XFS fix

aio-01-retry.patch
  AIO: Core retry infrastructure
  Fix aio process hang on EINVAL
  AIO: flush workqueues before destroying ioctx'es
  AIO: hold the context lock across unuse_mm
  task task_lock in use_mm()

aio-refcounting-fix.patch
  aio ref count in io_submit_one

aio-retry-elevated-refcount.patch
  aio: extra ref count during retry

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
  lock_buffer_wq fix

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

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

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

O_SYNC-speedup-2.patch
  speed up O_SYNC writes

O_SYNC-speedup-2-f_mapping-fixes.patch

aio-09-o_sync.patch
  aio O_SYNC
  AIO: fix a BUG
  Unify o_sync changes for aio and regular writes
  aio-O_SYNC-fix bits got lost
  aio: writev nr_segs fix
  More AIO O_SYNC related fixes

aio-09-o_sync-f_mapping-fixes.patch

gang_lookup_next.patch
  Change the page gang lookup API

aio-gang_lookup-fix.patch
  AIO gang lookup fixes

aio-O_SYNC-short-write-fix.patch
  Fix for O_SYNC short writes

aio-12-readahead.patch
  AIO: readahead fixes
  aio O_DIRECT no readahead
  Unified page range readahead for aio and regular reads

aio-12-readahead-f_mapping-fix.patch

aio-readahead-speedup.patch
  Readahead issues and AIO read speedup




^ permalink raw reply	[flat|nested] 15+ messages in thread

* 2.6.0-test6-mm4
@ 2003-10-05  8:33 ` Andrew Morton
  0 siblings, 0 replies; 15+ messages in thread
From: Andrew Morton @ 2003-10-05  8:33 UTC (permalink / raw)
  To: linux-kernel, linux-mm

ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test6/2.6.0-test6-mm4/

This is a small stabilisation update against -mm3 to fix various bits of
brokenness which people have inflicted upon me.  To make it all build, boot
and run on ia32, ia64 and ppc64.




Changes since 2.6.0-test6-mm3:


 linus.patch

 latest Linus tree

-skb-leak-fix.patch

 Merged

-utime-on-immutable-file-fix-cleanup.patch

 Dropped: the current code is OK.

-readonly-bind-mounts.patch

 This got broken.

+compat-ioctl-consolidation-job-control-update.patch

 Update compat-ioctl-consolidation.patch for move-job-control-fields.patch

+move-job-control-fields-ia64-fix.patch

 Fix ia64 for move-job-control-fields.patch

+ia32-efi-other-arch-fix.patch

 Fix ia32-efi-support.patch for non-ia32 builds

+sparc32-sched_clock.patch

 Simple sched_clock() implementation for sparc32

+unmap_vmas-warning-fix.patch

 Warning fixlet

+athlon-prefetch-handling.patch
+athlon-prefetch-handling-fix.patch

 Latest athlon prefetch workaround.




All 155 patches:


linus.patch

mm.patch
  add -mmN to EXTRAVERSION

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

kgdb-buff-too-big.patch
  kgdb buffer overflow fix

kgdb-warning-fix.patch
  kgdbL warning fix

kgdb-build-fix.patch

kgdb-spinlock-fix.patch

kgdb-fix-debug-info.patch
  kgdb: CONFIG_DEBUG_INFO fix

kgdb-cpumask_t.patch

kgdb-x86_64-fixes.patch
  x86_64 fixes

kgdb-over-ethernet.patch
  kgdb-over-ethernet patch

kgdb-over-ethernet-fixes.patch
  kgdb-over-ethernet fixlets

kgdb-CONFIG_NET_POLL_CONTROLLER.patch
  kgdb: replace CONFIG_KGDB with CONFIG_NET_RX_POLL in net drivers

kgdb-handle-stopped-NICs.patch
  kgdb: handle netif_stopped NICs

eepro100-poll-controller.patch

tlan-poll_controller.patch

tulip-poll_controller.patch

tg3-poll_controller.patch
  kgdb: tg3 poll_controller

kgdb-eth-smp-fix.patch
  kgdb-over-ethernet: fix SMP

kgdb-eth-reattach.patch

kgdb-skb_reserve-fix.patch
  kgdb-over-ethernet: skb_reserve() fix

must-fix.patch

should-fix.patch

RD0-initrd-B6.patch

RD1-cdrom_ioctl-B6.patch

RD2-ioctl-B6.patch

RD2-ioctl-B6-fix.patch
  RD2-ioctl-B6 fixes

RD3-cdrom_open-B6.patch

RD4-open-B6.patch

RD5-cdrom_release-B6.patch

RD6-release-B6.patch

RD7-presto_journal_close-B6.patch

RD8-f_mapping-B6.patch

RD9-f_mapping2-B6.patch

RD10-i_sem-B6.patch

RD11-f_mapping3-B6.patch

RD12-generic_osync_inode-B6.patch

RD13-bd_acquire-B6.patch

RD14-generic_write_checks-B6.patch

RD15-I_BDEV-B6.patch

RD16-rest-B6.patch

serio-01-renaming.patch
  serio: rename serio_[un]register_slave_port to __serio_[un]register_port

serio-02-race-fix.patch
  serio: possible race between port removal and kseriod

serio-03-blacklist.patch
  Add black list to handler<->device matching

serio-04-synaptics-cleanup.patch
  Synaptics: code cleanup

serio-05-reconnect-facility.patch
  serio: reconnect facility

serio-06-synaptics-use-reconnect.patch
  Synaptics: use serio_reconnect

acpi_off-fix.patch
  fix acpi=off

cfq-4.patch
  CFQ io scheduler
  CFQ fixes

config_spinline.patch
  uninline spinlocks for profiling accuracy.

ppc64-bar-0-fix.patch
  Allow PCI BARs that start at 0

ppc64-reloc_hide.patch

ppc64-semaphore-reimplementation.patch
  ppc64: use the ia32 semaphore implementation

ppc64-sym2-fix.patch
  ppc64 sym2 fix

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

input-use-after-free-checks.patch
  input layer debug checks

fbdev.patch
  framebbuffer driver update

cursor-flashing-fix.patch
  fbdev: fix cursor letovers

radeonfb-line_length-fix.patch
  From: Peter Chubb <peter@chubb.wattle.id.au>
  Subject: Radeon framebuffer problems i 2.6.0-test6

aic7xxx-parallel-build-fix.patch
  fix parallel builds for aic7xxx

ramdisk-cleanup.patch

intel8x0-cleanup.patch
  intel8x0 cleanups

uml-update.patch
  Update UML to 2.6.0-test5

selectable-logbuf-size.patch
  boot-time selectable log buffer size

8139too-edimax.patch

pdflush-diag.patch

kobject-oops-fixes.patch
  fix oopses is kobject parent is removed before child

futex_refs_and_lock_fix.patch
  futex locking fix

futex-locking-fix-fix.patch
  fix to futex locking fix

futex-uninlinings.patch
  futex uninlining

node-enumeration-cleanup-01.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [1/5]

node-enumeration-cleanup-02.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [2/5]

node-enumeration-cleanup-03.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [3/5]

node-enumeration-cleanup-04.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [4/5]

node-enumeration-cleanup-05.patch
  Clean up MAX_NR_NODES/NUMNODES/etc. [5/5]

node-enumeration-cleanup-fix-01.patch
  node enumeration fixes

zap_page_range-debug.patch
  zap_page_range() debug

acpi-thinkpad-fix.patch
  APCI fix for thinkpads

compat-ioctl-consolidation.patch
  compat ioctl consolidation

compat-ioctl-consolidation-job-control-update.patch

alsa-gameport-fix.patch
  ALSA pci Kconfig fix

scsi-handle-zero-length-requests.patch
  scsi: handle zero-length requests

sizeof-in-ioctl-fix.patch
  incorrect use of sizeof() in aty128fb

call_usermodehelper-retval-fix-3.patch
  Make call_usermodehelper report exit status

asus-L5-fix.patch
  Asus L5 framebuffer fix

ax25-timer-cleanup.patch
  X25 timer cleanup

jffs-use-daemonize.patch

calc_vm_trans-commentary.patch
  document the macro for translating PROT_ to VM_ bits

tulip-NAPI-support.patch
  tulip NAPI support

tulip-napi-disable.patch
  tulip NAPI: disable poll in close

io-refcount-debugging.patch
  io context refcounting debugging

proc-sys-auxv.patch
  /proc/sys/auxv

kernel-doc-fixes.patch
  kernel documentation fixes

kill-CONFIG_EISA_ALWAYS.patch
  EISA_bus cleanup

ext3-concurrent-alloc-locking-fix.patch

dscc4-fixes.patch
  dscc4 driver fixes

cpufreq-sysfs-oops-fix.patch
  cpufreq sysfs oops fix

move-job-control-fields.patch
  move job control fields from task_struct to signal_struct

move-job-control-fields-ia64-fix.patch

get_user_pages-handle-VM_IO.patch

ia32-MSI-support.patch
  Updated ia32 MSI Patches

ia32-MSI-support-tweaks.patch

ia32-efi-support.patch
  EFI support for ia32

CONFIG_ACPI_EFI-defaults-off.patch

ia32-efi-support-warning-fixes.patch

ia32-efi-support-tidy.patch

ia32-efi-other-arch-fix.patch
  fix EFI for ppc64, ia64

support-zillions-of-scsi-disks.patch
  support many SCSI disks

dynamic-irq_vector-allocation.patch
  dynamic irq_vector allocation for ia32

SGI-IOC4-IDE-chipset-support.patch
  Add support for SGI's IOC4 chipset

do_no_page-pte_chain_leak-fix.patch
  fix pte_chain leak in do_no_page

vma-split-truncate-race-fix.patch
  fix split_vma vs. invalidate_mmap_range_list race

vma-split-truncate-race-fix-tweaks.patch

sparc32-sched_clock.patch

unmap_vmas-warning-fix.patch
  Fix unmap_vmas() compile warning

keyboard-repeat-rate-setting-fix.patch
  keyboard repeat rate setting fix

list_del-debug.patch
  list_del debug check

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

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

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

lockmeter.patch

printk-oops-mangle-fix.patch
  disentangle printk's whilst oopsing on SMP

20-odirect_enable.patch

21-odirect_cruft.patch

22-read_proc.patch

23-write_proc.patch

24-commit_proc.patch

25-odirect.patch

nfs-O_DIRECT-always-enabled.patch
  Force CONFIG_NFS_DIRECTIO

4g-2.6.0-test2-mm2-A5.patch
  4G/4G split patch
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g/4g usercopy atomicity fix
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g/4g usercopy atomicity fix
  4G/4G preempt on vstack
  4G/4G: even number of kmap types
  4g4g: fix __get_user in slab
  4g4g: Remove extra .data.idt section definition
  4g/4g linker error (overlapping sections)
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g4g: show_registers() fix
  4g/4g usercopy atomicity fix
  4g4g: debug flags fix
  4g4g: Fix wrong asm-offsets entry
  cyclone time fixmap fix
  4G/4G preempt on vstack
  4G/4G: even number of kmap types
  4g4g: fix __get_user in slab
  4g4g: Remove extra .data.idt section definition
  4g/4g linker error (overlapping sections)
  4G/4G: remove debug code
  4g4g: pmd fix
  4g/4g: fixes from Bill
  4g4g: fpu emulation fix
  4g4g: show_registers() fix
  4g/4g usercopy atomicity fix
  4g4g: debug flags fix
  4g4g: Fix wrong asm-offsets entry
  cyclone time fixmap fix
  use direct_copy_{to,from}_user for kernel access in mm/usercopy.c
  4G/4G might_sleep warning fix
  4g/4g pagetable accounting fix

athlon-prefetch-handling.patch
  Athlon prefetch patch for 2.6.0test6mm2

athlon-prefetch-handling-fix.patch

ppc-fixes.patch
  make mm4 compile on ppc

aic7xxx_old-oops-fix.patch

O_DIRECT-race-fixes-rollup.patch
  DIO fixes forward port and AIO-DIO fix
  O_DIRECT race fixes comments
  O_DRIECT race fixes fix fix fix
  DIO locking rework

O_DIRECT-race-fixes-rework-XFS-fix.patch
  O_DIRECT XFS fix

aio-01-retry.patch
  AIO: Core retry infrastructure
  Fix aio process hang on EINVAL
  AIO: flush workqueues before destroying ioctx'es
  AIO: hold the context lock across unuse_mm
  task task_lock in use_mm()

aio-refcounting-fix.patch
  aio ref count in io_submit_one

aio-retry-elevated-refcount.patch
  aio: extra ref count during retry

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
  lock_buffer_wq fix

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

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

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

O_SYNC-speedup-2.patch
  speed up O_SYNC writes

O_SYNC-speedup-2-f_mapping-fixes.patch

aio-09-o_sync.patch
  aio O_SYNC
  AIO: fix a BUG
  Unify o_sync changes for aio and regular writes
  aio-O_SYNC-fix bits got lost
  aio: writev nr_segs fix
  More AIO O_SYNC related fixes

aio-09-o_sync-f_mapping-fixes.patch

gang_lookup_next.patch
  Change the page gang lookup API

aio-gang_lookup-fix.patch
  AIO gang lookup fixes

aio-O_SYNC-short-write-fix.patch
  Fix for O_SYNC short writes

aio-12-readahead.patch
  AIO: readahead fixes
  aio O_DIRECT no readahead
  Unified page range readahead for aio and regular reads

aio-12-readahead-f_mapping-fix.patch

aio-readahead-speedup.patch
  Readahead issues and AIO read speedup



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4
  2003-10-05  8:33 ` 2.6.0-test6-mm4 Andrew Morton
@ 2003-10-05  9:26   ` Daniele Bellucci
  -1 siblings, 0 replies; 15+ messages in thread
From: Daniele Bellucci @ 2003-10-05  9:26 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, linux-mm



It doesn't compile to me ...
too many undefined references to `ntohl/htonl/htons/...`

make all:
..
fs/built-in.o: In function `ext3_get_dev_journal':
/usr/src/linux-2.6.0-test6-mm4/fs/ext3/super.c:1533: undefined reference to `ntohl'
/usr/src/linux-2.6.0-test6-mm4/fs/ext3/super.c:1534: undefined reference to `ntohl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:376: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:377: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:378: undefined reference to `htonl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/include/linux/jbd.h:306: undefined reference to `htonl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:444: undefined reference to `htonl'
fs/built-in.o:/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:468: more undefined references to `htonl' follow
fs/built-in.o: In function `journal_recover':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/recovery.c:240: undefined reference to `ntohl'
fs/built-in.o: In function `do_one_pass':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/recovery.c:331: undefined reference to `ntohl'
net/built-in.o: In function `ip_rt_redirect':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
net/built-in.o:/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: more undefined references to `htonl' follow
net/built-in.o: In function `ip_rt_frag_needed':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1243: undefined reference to `ntohs'
net/built-in.o: In function `ip_route_input_mc':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
net/built-in.o:/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: more undefined references to `htonl' follow
net/built-in.o: In function `ip_route_input_mc':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htons'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1452: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1452: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1453: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1453: undefined reference to `htonl'
...
...
make: *** [.tmp_vmlinux1] Error 1





-- 



Daniele.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4
@ 2003-10-05  9:26   ` Daniele Bellucci
  0 siblings, 0 replies; 15+ messages in thread
From: Daniele Bellucci @ 2003-10-05  9:26 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, linux-mm


It doesn't compile to me ...
too many undefined references to `ntohl/htonl/htons/...`

make all:
..
fs/built-in.o: In function `ext3_get_dev_journal':
/usr/src/linux-2.6.0-test6-mm4/fs/ext3/super.c:1533: undefined reference to `ntohl'
/usr/src/linux-2.6.0-test6-mm4/fs/ext3/super.c:1534: undefined reference to `ntohl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:376: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:377: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:378: undefined reference to `htonl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/include/linux/jbd.h:306: undefined reference to `htonl'
fs/built-in.o: In function `journal_commit_transaction':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:444: undefined reference to `htonl'
fs/built-in.o:/usr/src/linux-2.6.0-test6-mm4/fs/jbd/commit.c:468: more undefined references to `htonl' follow
fs/built-in.o: In function `journal_recover':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/recovery.c:240: undefined reference to `ntohl'
fs/built-in.o: In function `do_one_pass':
/usr/src/linux-2.6.0-test6-mm4/fs/jbd/recovery.c:331: undefined reference to `ntohl'
net/built-in.o: In function `ip_rt_redirect':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: undefined reference to `htonl'
net/built-in.o:/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:981: more undefined references to `htonl' follow
net/built-in.o: In function `ip_rt_frag_needed':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1243: undefined reference to `ntohs'
net/built-in.o: In function `ip_route_input_mc':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htonl'
net/built-in.o:/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: more undefined references to `htonl' follow
net/built-in.o: In function `ip_route_input_mc':
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1448: undefined reference to `htons'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1452: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1452: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1453: undefined reference to `htonl'
/usr/src/linux-2.6.0-test6-mm4/net/ipv4/route.c:1453: undefined reference to `htonl'
...
...
make: *** [.tmp_vmlinux1] Error 1





-- 



Daniele.


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-05  8:33 ` 2.6.0-test6-mm4 Andrew Morton
  (?)
  (?)
@ 2003-10-08 23:18 ` Daniel McNeil
  2003-10-09 11:16   ` Suparna Bhattacharya
  -1 siblings, 1 reply; 15+ messages in thread
From: Daniel McNeil @ 2003-10-08 23:18 UTC (permalink / raw)
  To: Andrew Morton, Suparna Bhattacharya; +Cc: Linux Kernel Mailing List, linux-aio

I'm been testing AIO on test6-mm4 using a ext3 file system and
copying a 88MB file to an already existing preallocated file of 88MB.
I been using my aiocp program to copy the file using i/o sizes of
1k to 512k and outstanding aio requests of between 1 and 64 using
O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
as the file is pre-allocated.  When copying the file to a new file
(O_CREAT|O_DIRECT), I get the following oops:


Unable to handle kernel paging request at virtual address 6b6b6b6b
 printing eip:
c018fa34
*pde = 00000000
Oops: 0000 [#1]
SMP
CPU:    1
EIP:    0060:[<c018fa34>]    Not tainted VLI
EFLAGS: 00010002
EIP is at __aio_run_iocbs+0x19/0xa2
eax: 00000000   ebx: d443b318   ecx: d4055c78   edx: 6b6b6b6b
esi: d4055c78   edi: d4055cb0   ebp: dfd6df48   esp: dfd6df34
ds: 007b   es: 007b   ss: 0068
Process aio/1 (pid: 16, threadinfo=dfd6c000 task=dfd71340)
Stack: 00010000 dfd71914 d4055c78 d4055c9c dfd72790 dfd6df68 c018faf6 d4055c78
       dfd6df54 dfd6df54 dfd6c000 d4055cfc 00000287 dfd6dfec c0138ad8 d4055c78
       dfd6dfa0 00000000 5a5a5a5a dfd727b8 dfd727a8 d4055c78 c018fabd dfd727a0

Call Trace:
 [<c018faf6>] aio_kick_handler+0x39/0x96
 [<c0138ad8>] worker_thread+0x1e6/0x346
 [<c018fabd>] aio_kick_handler+0x0/0x96
 [<c0122041>] default_wake_function+0x0/0x2e


Daniel


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-08 23:18 ` 2.6.0-test6-mm4 - oops in __aio_run_iocbs() Daniel McNeil
@ 2003-10-09 11:16   ` Suparna Bhattacharya
  2003-10-09 12:59     ` Suparna Bhattacharya
                       ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Suparna Bhattacharya @ 2003-10-09 11:16 UTC (permalink / raw)
  To: Daniel McNeil; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> I'm been testing AIO on test6-mm4 using a ext3 file system and
> copying a 88MB file to an already existing preallocated file of 88MB.
> I been using my aiocp program to copy the file using i/o sizes of
> 1k to 512k and outstanding aio requests of between 1 and 64 using
> O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> as the file is pre-allocated.  When copying the file to a new file
> (O_CREAT|O_DIRECT), I get the following oops:

What are the i/o sizes and block sizes for which you get the oops ?
Is this only for large i/o sizes ?

__aio_run_iocbs should have been called only for buffered i/o, 
so this sounds like an O_DIRECT fallback to buffered i/o.
Possibly after already submitting some blocks direct to BIO,
the i/o completion path for which ends up calling aio_complete
releasing the iocb. That could explain the use-after-free situation
you see.

But, O_DIRECT write should fallback to buffered i/o only if it 
encounters holes in the middle of the file, not for simple appends 
as in your case. Need to figure out how this could have happened ...

Could you try placing a few printks to find out if this is 
the case or if we need to look elsewhere ?

Regards
Suparna


> 
> 
> Unable to handle kernel paging request at virtual address 6b6b6b6b
>  printing eip:
> c018fa34
> *pde = 00000000
> Oops: 0000 [#1]
> SMP
> CPU:    1
> EIP:    0060:[<c018fa34>]    Not tainted VLI
> EFLAGS: 00010002
> EIP is at __aio_run_iocbs+0x19/0xa2
> eax: 00000000   ebx: d443b318   ecx: d4055c78   edx: 6b6b6b6b
> esi: d4055c78   edi: d4055cb0   ebp: dfd6df48   esp: dfd6df34
> ds: 007b   es: 007b   ss: 0068
> Process aio/1 (pid: 16, threadinfo=dfd6c000 task=dfd71340)
> Stack: 00010000 dfd71914 d4055c78 d4055c9c dfd72790 dfd6df68 c018faf6 d4055c78
>        dfd6df54 dfd6df54 dfd6c000 d4055cfc 00000287 dfd6dfec c0138ad8 d4055c78
>        dfd6dfa0 00000000 5a5a5a5a dfd727b8 dfd727a8 d4055c78 c018fabd dfd727a0
> 
> Call Trace:
>  [<c018faf6>] aio_kick_handler+0x39/0x96
>  [<c0138ad8>] worker_thread+0x1e6/0x346
>  [<c018fabd>] aio_kick_handler+0x0/0x96
>  [<c0122041>] default_wake_function+0x0/0x2e
> 
> 
> Daniel
> 

-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-09 11:16   ` Suparna Bhattacharya
@ 2003-10-09 12:59     ` Suparna Bhattacharya
  2003-10-09 17:42       ` Daniel McNeil
  2003-10-09 17:38     ` Daniel McNeil
  2003-10-09 19:24     ` bill davidsen
  2 siblings, 1 reply; 15+ messages in thread
From: Suparna Bhattacharya @ 2003-10-09 12:59 UTC (permalink / raw)
  To: Daniel McNeil; +Cc: akpm, linux-kernel, linux-aio

On Thu, Oct 09, 2003 at 04:46:24PM +0530, Suparna Bhattacharya wrote:
> On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > copying a 88MB file to an already existing preallocated file of 88MB.
> > I been using my aiocp program to copy the file using i/o sizes of
> > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > as the file is pre-allocated.  When copying the file to a new file
> > (O_CREAT|O_DIRECT), I get the following oops:
> 
> What are the i/o sizes and block sizes for which you get the oops ?
> Is this only for large i/o sizes ?
> 
> __aio_run_iocbs should have been called only for buffered i/o, 
> so this sounds like an O_DIRECT fallback to buffered i/o.
> Possibly after already submitting some blocks direct to BIO,
> the i/o completion path for which ends up calling aio_complete
> releasing the iocb. That could explain the use-after-free situation
> you see.
> 
> But, O_DIRECT write should fallback to buffered i/o only if it 
> encounters holes in the middle of the file, not for simple appends 
> as in your case. Need to figure out how this could have happened ...

Took a quick look at aiocp.c - wondering if its possible that
some of the later read requests complete earlier and trigger
a write to higher offset first. Resulting in the file being
extended with holes in between - holes which get overwritten
at a later point as the earlier read requests complete.

Though I don't yet see how a situation could arise in the 
single threaded case where part of the request gets submitted 
direct to BIO and the rest falls back to buffered-io ... Need 
to think about it a bit more. 
Are your writes all block aligned ?

Regards
Suparna

-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-09 11:16   ` Suparna Bhattacharya
  2003-10-09 12:59     ` Suparna Bhattacharya
@ 2003-10-09 17:38     ` Daniel McNeil
  2003-10-10  8:34       ` Suparna Bhattacharya
  2003-10-09 19:24     ` bill davidsen
  2 siblings, 1 reply; 15+ messages in thread
From: Daniel McNeil @ 2003-10-09 17:38 UTC (permalink / raw)
  To: Suparna Bhattacharya; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Thu, 2003-10-09 at 04:16, Suparna Bhattacharya wrote:
> On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > copying a 88MB file to an already existing preallocated file of 88MB.
> > I been using my aiocp program to copy the file using i/o sizes of
> > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > as the file is pre-allocated.  When copying the file to a new file
> > (O_CREAT|O_DIRECT), I get the following oops:
> 
> What are the i/o sizes and block sizes for which you get the oops ?
> Is this only for large i/o sizes ?


I've done more testing and it is a little confusing.
I originally got the oops running a shell script which copied 4
88MB files one at a time to a sub-directory:

for i in fff ff1 ff2 ff3
do
        aiocp -b 128k -n 8 -f CREAT -f DIRECT $i junkdir/$i
done
sync

This script would always cause the oops and the machine would lock up.

I ran aiocp manually using different block sizes (4k-128k) to copy
1 file to a subdirectory.  I removed the file in the subdirectory
afterward.  These tests completed without any problems or oopses.

> __aio_run_iocbs should have been called only for buffered i/o, 
> so this sounds like an O_DIRECT fallback to buffered i/o.
> Possibly after already submitting some blocks direct to BIO,
> the i/o completion path for which ends up calling aio_complete
> releasing the iocb. That could explain the use-after-free situation
> you see.

mm4 has my extra iocb ref count for retries patch.  So the iocb should
not be being freed by aio_complete.  The stack trace looks like the
fault is on the ctx or ctx->runlist.

> 
> But, O_DIRECT write should fallback to buffered i/o only if it 
> encounters holes in the middle of the file, not for simple appends 
> as in your case. Need to figure out how this could have happened ...
> 
> Could you try placing a few printks to find out if this is 
> the case or if we need to look elsewhere ?

I'll do more debugging and let you know what I find.

Daniel


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-09 12:59     ` Suparna Bhattacharya
@ 2003-10-09 17:42       ` Daniel McNeil
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel McNeil @ 2003-10-09 17:42 UTC (permalink / raw)
  To: Suparna Bhattacharya; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Thu, 2003-10-09 at 05:59, Suparna Bhattacharya wrote:
> On Thu, Oct 09, 2003 at 04:46:24PM +0530, Suparna Bhattacharya wrote:
> > On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > > copying a 88MB file to an already existing preallocated file of 88MB.
> > > I been using my aiocp program to copy the file using i/o sizes of
> > > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > > as the file is pre-allocated.  When copying the file to a new file
> > > (O_CREAT|O_DIRECT), I get the following oops:
> > 
> > What are the i/o sizes and block sizes for which you get the oops ?
> > Is this only for large i/o sizes ?
> > 
> > __aio_run_iocbs should have been called only for buffered i/o, 
> > so this sounds like an O_DIRECT fallback to buffered i/o.
> > Possibly after already submitting some blocks direct to BIO,
> > the i/o completion path for which ends up calling aio_complete
> > releasing the iocb. That could explain the use-after-free situation
> > you see.
> > 
> > But, O_DIRECT write should fallback to buffered i/o only if it 
> > encounters holes in the middle of the file, not for simple appends 
> > as in your case. Need to figure out how this could have happened ...
> 
> Took a quick look at aiocp.c - wondering if its possible that
> some of the later read requests complete earlier and trigger
> a write to higher offset first. Resulting in the file being
> extended with holes in between - holes which get overwritten
> at a later point as the earlier read requests complete.

That is an interesting idea.  I can change my aiocp program to
do a printf if it hits this situation.

> 
> Though I don't yet see how a situation could arise in the 
> single threaded case where part of the request gets submitted 
> direct to BIO and the rest falls back to buffered-io ... Need 
> to think about it a bit more. 
> Are your writes all block aligned ?

All i/o is aligned to the size of the block size (128k in this
test).

Daniel


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-09 11:16   ` Suparna Bhattacharya
  2003-10-09 12:59     ` Suparna Bhattacharya
  2003-10-09 17:38     ` Daniel McNeil
@ 2003-10-09 19:24     ` bill davidsen
  2 siblings, 0 replies; 15+ messages in thread
From: bill davidsen @ 2003-10-09 19:24 UTC (permalink / raw)
  To: linux-kernel

In article <20031009111624.GA11549@in.ibm.com>,
Suparna Bhattacharya  <suparna@in.ibm.com> wrote:
| On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
| 
| __aio_run_iocbs should have been called only for buffered i/o, 
| so this sounds like an O_DIRECT fallback to buffered i/o.
| Possibly after already submitting some blocks direct to BIO,
| the i/o completion path for which ends up calling aio_complete
| releasing the iocb. That could explain the use-after-free situation
| you see.
| 
| But, O_DIRECT write should fallback to buffered i/o only if it 
| encounters holes in the middle of the file, not for simple appends 
| as in your case. Need to figure out how this could have happened ...

Are the write kept ordered?
-- 
bill davidsen <davidsen@tmr.com>
  CTO, TMR Associates, Inc
Doing interesting things with little computers since 1979.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-09 17:38     ` Daniel McNeil
@ 2003-10-10  8:34       ` Suparna Bhattacharya
  2003-10-10 11:48         ` Suparna Bhattacharya
  0 siblings, 1 reply; 15+ messages in thread
From: Suparna Bhattacharya @ 2003-10-10  8:34 UTC (permalink / raw)
  To: Daniel McNeil; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Thu, Oct 09, 2003 at 10:38:41AM -0700, Daniel McNeil wrote:
> On Thu, 2003-10-09 at 04:16, Suparna Bhattacharya wrote:
> > On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > > copying a 88MB file to an already existing preallocated file of 88MB.
> > > I been using my aiocp program to copy the file using i/o sizes of
> > > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > > as the file is pre-allocated.  When copying the file to a new file
> > > (O_CREAT|O_DIRECT), I get the following oops:
> > 
> > What are the i/o sizes and block sizes for which you get the oops ?
> > Is this only for large i/o sizes ?
> 
> 
> I've done more testing and it is a little confusing.
> I originally got the oops running a shell script which copied 4
> 88MB files one at a time to a sub-directory:
> 
> for i in fff ff1 ff2 ff3
> do
>         aiocp -b 128k -n 8 -f CREAT -f DIRECT $i junkdir/$i
> done
> sync
> 
> This script would always cause the oops and the machine would lock up.
> 
> I ran aiocp manually using different block sizes (4k-128k) to copy
> 1 file to a subdirectory.  I removed the file in the subdirectory
> afterward.  These tests completed without any problems or oopses.
> 
> > __aio_run_iocbs should have been called only for buffered i/o, 
> > so this sounds like an O_DIRECT fallback to buffered i/o.
> > Possibly after already submitting some blocks direct to BIO,
> > the i/o completion path for which ends up calling aio_complete
> > releasing the iocb. That could explain the use-after-free situation
> > you see.
> 
> mm4 has my extra iocb ref count for retries patch.  So the iocb should
> not be being freed by aio_complete.  The stack trace looks like the
> fault is on the ctx or ctx->runlist.

The race I was suspecting is a different one - a case where the dio code
calls aio_complete before a fallback to buffered i/o, and the latter
queues up a retry. By the time the retry gets to run the reference to
the iocb would have gone. (your extra iocb ref count patch wouldn't
be able to guard against this - the correct solution would be to
avoid doing aio_complete if we run into -ENOTBLK i.e. when we intend 
to fallback to buffered i/o).

But, if you are sure that its not the iocb but the ctx thats got freed,
I don't yet see why that would happen (since the workqueue should have 
been flushed before terminating the ioctx at exit).

Regards
Suparna

> 
> > 
> > But, O_DIRECT write should fallback to buffered i/o only if it 
> > encounters holes in the middle of the file, not for simple appends 
> > as in your case. Need to figure out how this could have happened ...
> > 
> > Could you try placing a few printks to find out if this is 
> > the case or if we need to look elsewhere ?
> 
> I'll do more debugging and let you know what I find.
> 
> Daniel
> 

-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-10  8:34       ` Suparna Bhattacharya
@ 2003-10-10 11:48         ` Suparna Bhattacharya
  2003-10-10 22:11           ` Daniel McNeil
  0 siblings, 1 reply; 15+ messages in thread
From: Suparna Bhattacharya @ 2003-10-10 11:48 UTC (permalink / raw)
  To: Daniel McNeil; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Fri, Oct 10, 2003 at 02:04:01PM +0530, Suparna Bhattacharya wrote:
> On Thu, Oct 09, 2003 at 10:38:41AM -0700, Daniel McNeil wrote:
> > On Thu, 2003-10-09 at 04:16, Suparna Bhattacharya wrote:
> > > On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > > > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > > > copying a 88MB file to an already existing preallocated file of 88MB.
> > > > I been using my aiocp program to copy the file using i/o sizes of
> > > > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > > > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > > > as the file is pre-allocated.  When copying the file to a new file
> > > > (O_CREAT|O_DIRECT), I get the following oops:
> > > 
> > > What are the i/o sizes and block sizes for which you get the oops ?
> > > Is this only for large i/o sizes ?
> > 
> > 
> > I've done more testing and it is a little confusing.
> > I originally got the oops running a shell script which copied 4
> > 88MB files one at a time to a sub-directory:
> > 
> > for i in fff ff1 ff2 ff3
> > do
> >         aiocp -b 128k -n 8 -f CREAT -f DIRECT $i junkdir/$i
> > done
> > sync
> > 
> > This script would always cause the oops and the machine would lock up.
> > 
> > I ran aiocp manually using different block sizes (4k-128k) to copy
> > 1 file to a subdirectory.  I removed the file in the subdirectory
> > afterward.  These tests completed without any problems or oopses.
> > 
> > > __aio_run_iocbs should have been called only for buffered i/o, 
> > > so this sounds like an O_DIRECT fallback to buffered i/o.
> > > Possibly after already submitting some blocks direct to BIO,
> > > the i/o completion path for which ends up calling aio_complete
> > > releasing the iocb. That could explain the use-after-free situation
> > > you see.
> > 
> > mm4 has my extra iocb ref count for retries patch.  So the iocb should
> > not be being freed by aio_complete.  The stack trace looks like the
> > fault is on the ctx or ctx->runlist.
> 
> The race I was suspecting is a different one - a case where the dio code
> calls aio_complete before a fallback to buffered i/o, and the latter
> queues up a retry. By the time the retry gets to run the reference to
> the iocb would have gone. (your extra iocb ref count patch wouldn't
> be able to guard against this - the correct solution would be to
> avoid doing aio_complete if we run into -ENOTBLK i.e. when we intend 
> to fallback to buffered i/o).
> 

Could you try applying the following hack and see if it makes a 
difference ?

I was able to recreate an oops running aiocp with the same arguments
that you mentioned on 2.6.0-test6-mm4; and that didn't seem to
occur when I applied this patch.

Note: This is not a complete fix though and probably room for doing this 
in a cleaner way. If what I suspect is going on, we'll need more work to get 
there - like thinking through the case where a request spans an allocated
region followed by a hole.

Regards
Suparna
-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India

----------------------------------------------

AIO-DIO fix: Don't call aio_complete if we are falling back to buffered i/o

diff -urp puremm/fs/direct-io.c linux-2.6.0-test6-mm4/fs/direct-io.c
--- puremm/fs/direct-io.c	2003-10-10 14:26:53.000000000 +0530
+++ linux-2.6.0-test6-mm4/fs/direct-io.c	2003-10-10 14:26:26.000000000 +0530
@@ -208,7 +208,7 @@ static struct page *dio_get_page(struct 
  */
 static void dio_complete(struct dio *dio, loff_t offset, ssize_t bytes)
 {
-	if (dio->end_io)
+	if (dio->end_io && dio->result != -ENOTBLK)
 		dio->end_io(dio->inode, offset, bytes, dio->map_bh.b_private);
 	if (dio->needs_locking)
 		up_read(&dio->inode->i_alloc_sem);
@@ -224,7 +224,8 @@ static void finished_one_bio(struct dio 
 		if (dio->is_async) {
 			dio_complete(dio, dio->block_in_file << dio->blkbits,
 					dio->result);
-			aio_complete(dio->iocb, dio->result, 0);
+			if (dio->result != -ENOTBLK)
+				aio_complete(dio->iocb, dio->result, 0);
 			kfree(dio);
 		}
 	}
@@ -978,6 +979,8 @@ direct_io_worker(int rw, struct kiocb *i
 	 * OK, all BIOs are submitted, so we can decrement bio_count to truly
 	 * reflect the number of to-be-processed BIOs.
 	 */
+	if (ret == -ENOTBLK)
+		dio->result = ret;
 	if (dio->is_async) {
 		if (ret == 0)
 			ret = dio->result;	/* Bytes written */

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
  2003-10-10 11:48         ` Suparna Bhattacharya
@ 2003-10-10 22:11           ` Daniel McNeil
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel McNeil @ 2003-10-10 22:11 UTC (permalink / raw)
  To: Suparna Bhattacharya; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-aio

On Fri, 2003-10-10 at 04:48, Suparna Bhattacharya wrote:

> Could you try applying the following hack and see if it makes a 
> difference ?
> 
> I was able to recreate an oops running aiocp with the same arguments
> that you mentioned on 2.6.0-test6-mm4; and that didn't seem to
> occur when I applied this patch.
> 
> Note: This is not a complete fix though and probably room for doing this 
> in a cleaner way. If what I suspect is going on, we'll need more work to get 
> there - like thinking through the case where a request spans an allocated
> region followed by a hole.
> 
> Regards
> Suparna

good news, I tried the patch and the oops no longer occurs.

I also added code to aiocp to check if the AIO reads are completing out
of order, which would cause the AIO writes to out of order.  The reads
are completing in order.  However, I added code to check if the AIO
writes are completing out of order, and, if fact, they do.  Not very
often, but I got 8 i/o where an i/o farther in file completes before
an earlier i/o.

Daniel


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4
  2003-10-05 19:31 2.6.0-test6-mm4 Walt H
@ 2003-10-05 21:56 ` Walt H
  0 siblings, 0 replies; 15+ messages in thread
From: Walt H @ 2003-10-05 21:56 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 181 bytes --]

Walt H wrote:
> Reverting RD0-initrd-B6.patch allows initrd to
> work again, and my machine to boot. 

However, I get an oops after kernel init and while running the init
scripts.


[-- Attachment #2: decodedoops.txt --]
[-- Type: text/plain, Size: 3978 bytes --]

ksymoops 2.4.9 on i686 2.6.0-test6-mm1.  Options used
     -v /usr/src/linux-2.6.0-test6-mm4/vmlinux (specified)
     -K (specified)
     -L (specified)
     -o /lib/modules/2.6.0-test6-mm4/ (specified)
     -m /boot/System.map-2.6.0-test6-mm4 (specified)

No modules in ksyms, skipping objects
Unable to handle kernel NULL pointer dereference at virtual address 00000034
c01a36d4
*pde = 00000000
Oops: 0000 [#1]
CPU:    0
EIP:    0060:[<c01a36d4>]    Not tainted VLI
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010212
eax: 00000000   ebx: 00000000   ecx: 00007dec   edx: 00000001
esi: 0000000a   edi: f75c46a0   ebp: f7fa2a80   esp: f6cb3e40
ds: 007b   es: 007b   ss: 0068
Stack: f75c46a0 c03221c0 f6b9fc50 c0305643 c01a11c4 f6ba1240 f6b9fc50 0000000d 
       c030563f f75c46a0 ffffffea fffffff4 f6ba213c f6ba20d0 f6ba1240 c01792ef 
       f6ba20d0 f6ba1240 c0322160 00000000 f6cb3f70 f767f500 00000000 f6ba1300 
Call Trace:
 [<c01a11c4>] proc_pident_lookup+0x104/0x260
 [<c01792ef>] real_lookup+0xcf/0x100
 [<c0183592>] dput+0x22/0x2d0
 [<c0179c58>] link_path_walk+0x668/0x9f0
 [<c014ce7d>] buffered_rmqueue+0xed/0x1d0
 [<c012bb4c>] do_exit+0x39c/0x4c0
 [<c019fde4>] proc_info_read+0x74/0x160
 [<c0168ea8>] filp_open+0x68/0x70
 [<c0169ede>] vfs_read+0xbe/0x130
 [<c016a1b2>] sys_read+0x42/0x70
 [<c02cc36e>] sysenter_past_esp+0x43/0x65
Code: f3 01 c0 29 c2 be 0a 00 00 00 89 c8 f7 f6 89 da 89 94 24 b4 00 00 00 89 84 24 b0 00 00 00 8b 87 ac 05 00 00 8b 94 24 c0 00 00 00 <8b> 58 34 8b 70 2c 8b 47 40 89 84 24 ac 00 00 00 8b 87 64 01 00 


>>EIP; c01a36d4 <proc_pid_stat+2c4/5a0>   <=====

>>edi; f75c46a0 <_end+3718bbb0/3fbc4510>
>>ebp; f7fa2a80 <_end+37b69f90/3fbc4510>
>>esp; f6cb3e40 <_end+3687b350/3fbc4510>

Trace; c01a11c4 <proc_pident_lookup+104/260>
Trace; c01792ef <real_lookup+cf/100>
Trace; c0183592 <dput+22/2d0>
Trace; c0179c58 <link_path_walk+668/9f0>
Trace; c014ce7d <buffered_rmqueue+ed/1d0>
Trace; c012bb4c <do_exit+39c/4c0>
Trace; c019fde4 <proc_info_read+74/160>
Trace; c0168ea8 <filp_open+68/70>
Trace; c0169ede <vfs_read+be/130>
Trace; c016a1b2 <sys_read+42/70>
Trace; c02cc36e <sysenter_past_esp+43/65>

This architecture has variable length instructions, decoding before eip
is unreliable, take these instructions with a pinch of salt.

Code;  c01a36a9 <proc_pid_stat+299/5a0>
00000000 <_EIP>:
Code;  c01a36a9 <proc_pid_stat+299/5a0>
   0:   f3 01 c0                  repz add %eax,%eax
Code;  c01a36ac <proc_pid_stat+29c/5a0>
   3:   29 c2                     sub    %eax,%edx
Code;  c01a36ae <proc_pid_stat+29e/5a0>
   5:   be 0a 00 00 00            mov    $0xa,%esi
Code;  c01a36b3 <proc_pid_stat+2a3/5a0>
   a:   89 c8                     mov    %ecx,%eax
Code;  c01a36b5 <proc_pid_stat+2a5/5a0>
   c:   f7 f6                     div    %esi
Code;  c01a36b7 <proc_pid_stat+2a7/5a0>
   e:   89 da                     mov    %ebx,%edx
Code;  c01a36b9 <proc_pid_stat+2a9/5a0>
  10:   89 94 24 b4 00 00 00      mov    %edx,0xb4(%esp,1)
Code;  c01a36c0 <proc_pid_stat+2b0/5a0>
  17:   89 84 24 b0 00 00 00      mov    %eax,0xb0(%esp,1)
Code;  c01a36c7 <proc_pid_stat+2b7/5a0>
  1e:   8b 87 ac 05 00 00         mov    0x5ac(%edi),%eax
Code;  c01a36cd <proc_pid_stat+2bd/5a0>
  24:   8b 94 24 c0 00 00 00      mov    0xc0(%esp,1),%edx

This decode from eip onwards should be reliable

Code;  c01a36d4 <proc_pid_stat+2c4/5a0>
00000000 <_EIP>:
Code;  c01a36d4 <proc_pid_stat+2c4/5a0>   <=====
   0:   8b 58 34                  mov    0x34(%eax),%ebx   <=====
Code;  c01a36d7 <proc_pid_stat+2c7/5a0>
   3:   8b 70 2c                  mov    0x2c(%eax),%esi
Code;  c01a36da <proc_pid_stat+2ca/5a0>
   6:   8b 47 40                  mov    0x40(%edi),%eax
Code;  c01a36dd <proc_pid_stat+2cd/5a0>
   9:   89 84 24 ac 00 00 00      mov    %eax,0xac(%esp,1)
Code;  c01a36e4 <proc_pid_stat+2d4/5a0>
  10:   8b                        .byte 0x8b
Code;  c01a36e5 <proc_pid_stat+2d5/5a0>
  11:   87 64 01 00               xchg   %esp,0x0(%ecx,%eax,1)


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: 2.6.0-test6-mm4
@ 2003-10-05 19:31 Walt H
  2003-10-05 21:56 ` 2.6.0-test6-mm4 Walt H
  0 siblings, 1 reply; 15+ messages in thread
From: Walt H @ 2003-10-05 19:31 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel

I'm having a problem booting 2.6.0-test6-mm(2-4) when using an initrd.
Seems that the initrd never gets loaded, and the root filesystem never
gets mounted as a result. Reverting RD0-initrd-B6.patch allows initrd to
work again, and my machine to boot. I'm using a standard non-initramfs
initrd and a devfs enabled SMP kernel. I don't see any of the printk's
regarding ramdisk/initrd in any boot messages prior to panic. Let me
know if you need anything else. Thanks,

-Walt

mice: PS/2 mouse device common for all mice
input: ImPS/2 Generic Wheel Mouse on isa0060/serio1
serio: i8042 AUX port at 0x60,0x64 irq 12
input: AT Translated Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 2048 buckets, 16Kbytes
TCP: Hash tables configured (established 16384 bind 16384)
NET: Registered protocol family 1
NET: Registered protocol family 17
ACPI: (supports S0 S5)
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
Kernel panic: VFS: Unable to mount root fs on hda3



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2003-10-10 22:11 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-05  8:33 2.6.0-test6-mm4 Andrew Morton
2003-10-05  8:33 ` 2.6.0-test6-mm4 Andrew Morton
2003-10-05  9:26 ` 2.6.0-test6-mm4 Daniele Bellucci
2003-10-05  9:26   ` 2.6.0-test6-mm4 Daniele Bellucci
2003-10-08 23:18 ` 2.6.0-test6-mm4 - oops in __aio_run_iocbs() Daniel McNeil
2003-10-09 11:16   ` Suparna Bhattacharya
2003-10-09 12:59     ` Suparna Bhattacharya
2003-10-09 17:42       ` Daniel McNeil
2003-10-09 17:38     ` Daniel McNeil
2003-10-10  8:34       ` Suparna Bhattacharya
2003-10-10 11:48         ` Suparna Bhattacharya
2003-10-10 22:11           ` Daniel McNeil
2003-10-09 19:24     ` bill davidsen
2003-10-05 19:31 2.6.0-test6-mm4 Walt H
2003-10-05 21:56 ` 2.6.0-test6-mm4 Walt H

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.