* Re: 2.5.64-mm8 @ 2003-03-17 23:19 rwhron 2003-03-17 23:26 ` 2.5.64-mm8 Robert Love 0 siblings, 1 reply; 12+ messages in thread From: rwhron @ 2003-03-17 23:19 UTC (permalink / raw) To: linux-kernel Doing! :) I run a "custom" AIM7 workload on a uniprocessor K6/2. 2.5.64-mm8 finished it. First 2.5 kernel going back to 2.5.49 (at least) to complete that workload. Similarly, the "shared" AIM7 workload wasn't finishing on uniprocessor 2.5.x. 2.5.64-mm8 completed it too. Petr Vandrovec has matroxfb patches for the new fb. Are we getting close to 2.6-pre? :) recent uniprocessor benchmarks at: http://home.earthlink.net/~rwhron/kernel/latest.html -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: 2.5.64-mm8 2003-03-17 23:19 2.5.64-mm8 rwhron @ 2003-03-17 23:26 ` Robert Love 0 siblings, 0 replies; 12+ messages in thread From: Robert Love @ 2003-03-17 23:26 UTC (permalink / raw) To: rwhron; +Cc: linux-kernel On Mon, 2003-03-17 at 18:19, rwhron@earthlink.net wrote: > I run a "custom" AIM7 workload on a uniprocessor K6/2. > 2.5.64-mm8 finished it. First 2.5 kernel going back > to 2.5.49 (at least) to complete that workload. Excellent. > Are we getting close to 2.6-pre? :) Seems like it. I hope so. Robert Love ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: 2.5.64-mm8 @ 2003-03-16 16:18 Shane Shrybman 0 siblings, 0 replies; 12+ messages in thread From: Shane Shrybman @ 2003-03-16 16:18 UTC (permalink / raw) To: linux-kernel Hi, Just booted -mm8 with the AS scheduler and X and gnome start fine now. Good work! Thanks, Shane ^ permalink raw reply [flat|nested] 12+ messages in thread
* 2.5.64-mm8 @ 2003-03-16 10:42 ` Andrew Morton 0 siblings, 0 replies; 12+ messages in thread From: Andrew Morton @ 2003-03-16 10:42 UTC (permalink / raw) To: linux-kernel, linux-mm ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.64/2.5.64-mm8/ . Several fixes to the anticipatory scheduler. It is the default IO scheduler again. The main thing which was fixed here was an interesting deadlock involving keventd, the I/O scheduler, vfork and request_module(). . I should have mentioned that 2.5.64-mm7 included a CPU scheduler tweak from Mike Galbraith which apparently fixes up the various starvation problems which people have been experiencing. That is also in 2.5.64-mm8. Changes since 2.5.64-mm7: -ppc64-compat-flock.patch -ppc64-eeh-fix.patch -ppc64-socketcall-fix.patch -register-tty_devclass.patch Merged +proc-sys-debug.patch Create /proc/sys/debug/0 ... /proc/sys/debug/5. These appear in the kernel as int proc_sys_debug[8]; These are not used for anyting - it is for ah-hoc debugging convenience. +as-jumbo-fix.patch +as-request_fn-in-timer.patch +as-remove-request-fix.patch Anticipatory scheduler fixes -deadline-default.patch Make the anticipatory scheduler the default again. +unplug-from-timer.patch Call q->unplug_fn direct from timer context rather than via schedule_work(). +ext2-no-lock_super-set-s_dirt.patch +ext2-ialloc-no-lock_super.patch +ext2-ialloc-no-lock_super-fixes.patch Avoid lock_super() in the ext2 inode allocator +pci-update-1.patch Update for Russell's PCI rework. +affs-lock_kernel-fix.patch Missing an unlock_kernel(). (Why didn't any of the checkers notice this?) +lseek-ext2_readdir.patch Remove the lock_kernel()s in ext2_readdir/ext3_readdir +inode_setattr-lock_kernel-removal.patch Remove the lock_kernel() around inode_setattr's vmtruncate() call. +raid0-oops-fix.patch Fix oops in RAID0. All 124 patches: linus.patch Latest from Linus mm.patch add -mmN to EXTRAVERSION kgdb.patch proc-sys-debug.patch create /proc/sys/debug/0 ... 7 noirqbalance-fix.patch Fix noirqbalance config_spinline.patch uninline spinlocks for profiling accuracy. ppc64-reloc_hide.patch ppc64-pci-patch.patch Subject: pci patch ppc64-aio-32bit-emulation.patch 32/64bit emulation for aio ppc64-64-bit-exec-fix.patch Pass the load address into ELF_PLAT_INIT() ppc64-scruffiness.patch Fix some PPC64 compile warnings sym-do-160.patch make the SYM driver do 160 MB/sec config-PAGE_OFFSET.patch Configurable kenrel/user memory split ptrace-flush.patch cache flushing in the ptrace code buffer-debug.patch buffer.c debugging warn-null-wakeup.patch ext3-truncate-ordered-pages.patch ext3: explicitly free truncated pages reiserfs_file_write-5.patch tcp-wakeups.patch Use fast wakeups in TCP/IPV4 rcu-stats.patch RCU statistics reporting ext3-journalled-data-assertion-fix.patch Remove incorrect assertion from ext3 nfs-speedup.patch nfs-oom-fix.patch nfs oom fix sk-allocation.patch Subject: Re: nfs oom nfs-more-oom-fix.patch rpciod-atomic-allocations.patch Make rcpiod use atomic allocations linux-isp.patch isp-update-1.patch remove-unused-congestion-stuff.patch Subject: [PATCH] remove unused congestion stuff as-iosched.patch anticipatory I/O scheduler as-debug-BUG-fix.patch as-eject-BUG-fix.patch AS: don't go BUG during cdrom eject as-jumbo-fix.patch AS: OSDL fixes as-request_fn-in-timer.patch Remove the scheduled_work thing as-remove-request-fix.patch cfq-2.patch CFQ scheduler, #2 unplug-from-timer.patch smalldevfs.patch smalldevfs remap-file-pages-2.5.63-a1.patch Subject: [patch] remap-file-pages-2.5.63-A1 hugh-remap-fix.patch hugh's file-offset-in-pte fix fremap-limit-offsets.patch fremap: limit remap_file_pages() file offsets fremap-all-mappings.patch Make all executable mappings be nonlinear filemap_populate-speedup.patch filemap_populate speedup file-offset-in-pte-x86_64.patch x86_64: support for file offsets in pte's file-offset-in-pte-ppc64.patch objrmap-2.5.62-5.patch object-based rmap objrmap-nonlinear-fixes.patch objrmap fix for nonlinear scheduler-tunables.patch scheduler tunables scheduler-starvation-fixes.patch CPU scheduler starvation fixes timer-cleanup.patch timer code cleanup timer-readdition-fix.patch timer re-addition lockup fix show_task-free-stack-fix.patch show_task() fix and cleanup yellowfin-set_bit-fix.patch yellowfin driver set_bit fix htree-nfs-fix.patch Fix ext3 htree / NFS compatibility problems update_atime-ng.patch inode a/c/mtime modification speedup one-sec-times.patch Implement a/c/time speedup in ext2 & ext3 task_prio-fix.patch simple task_prio() fix set_current_state-fs.patch use set_current_state in fs set_current_state-mm.patch use set_current_state in mm copy_thread-leak-fix.patch Fix memory leak in copy_thread slab_store_user-large-objects.patch slab debug: perform redzoning against larger objects file_list_lock-contention-fix.patch file_list_lock contention fixes tty_files-fixes.patch file->f_list locking in tty_io.c file_list_cleanup.patch file_list cleanup file_list-remove-free_list.patch file_table: remove the private freelist file-list-less-locking.patch file_list: less locking vt_ioctl-stack-use.patch stack reduction in drivers/char/vt_ioctl.c fix-mem-equals.patch Fix mem= options no-mmu-stubs.patch a few missing stubs for !CONFIG_MMU nommu-slab.patch slab changes for !CONFIG_MMU nfs-memleak-fix.patch memleak in fs/nfs/inode.c::nfs_get_sb() ufs-memleak-fix.patch Memleak in fs/ufs/util.c hugetlb-unmap_vmas-fix.patch fix the fix for unmap_vmas & hugepages early-writeback-init.patch Early writeback initialisation posix-timers-update.patch posix timers update e100-memleak-fix.patch Memleak in e100 driver pcmcia-1-kill-get_foo_map.patch pcmcia: 1/6 kill get_*_map pcmcia-2-remove-bus_foo-abstractions.patch pcmcia: 2/6: Remove bus_* abstractions pcmcia-3-add-SOCKET_CARDBUS_CONFIG.patch pcmcia: 3/6: add SOCKET_CARDBUS_CONFIG flag pcmcia-4-add-locking.patch pcmcia: 4/6: Add some locking to rsrc_mgr.c pcmcia-5-add-CONFIG_PCMCIA_PROBE.patch pcmcia 5/6: Introduce CONFIG_PCMCIA_PROBE pcmcia-6-remove-old-cardbus-clients.patch pcmcia: 6/6: Remove support for old cardbus clients oops-counters.patch OOPS instance counters io_apic-DO_ACTION-cleanup.patch io-apic.c: DO_ACTION cleanup ext2-ext3-noatime-fix.patch Ext2/3 noatime and dirsync sometimes ignored oprofile-timer-fix.patch fix oprofile timer race htree-nfs-fix-2.patch htree nfs fix ext2-balloc-fix.patch ext2: block allocation fix ext2-no-lock_super.patch concurrent block allocation for ext2 ext2-no-lock-super-whitespace-fixes.patch ext2-no-lock_super-fix-1.patch ext2-no-lock_super-fix-2.patch ext2-no-lock_super-fix-3.patch ext2-no-lock_super-fix-4.patch ext2-no-lock_super-fix-5.patch ext2-no-lock_super-fix-6.patch ext2-no-lock_super-fix-7.patch ext2-no-lock_super-set-s_dirt.patch ext2 block allocator: set s_dirt ext2-ialloc-no-lock_super.patch concurrent inode allocation for ext2 ext2-ialloc-no-lock_super-fixes.patch ext2: concurrent ialloc fixes brlock-removal-1.patch Brlock removal 1/5 - core brlock-removal-2.patch brlock removal 2/5: remove brlock from snap and vlan brlock-removal-3.patch brlock removal 3/5: remove brlock from bridge brlock-removal-4.patch brlock removal 4/5: removal from ipv4/ipv6 brlock-removal-5.patch brlock removal 5/5: remove brlock code pgd_index-comments.patch pgd_index/pmd_index/pte_index commentary pci-6.patch pci-7.patch pci-8.patch pci-9.patch pci-10.patch pci-11.patch pci-12.patch pci-13.patch pci-14.patch pci-15.patch pci-update-1.patch PCI patches: update proc-sysrq-trigger.patch /proc/sysrq-trigger: trigger sysrq functions via /proc aio-bits-fix.patch kiocbClear should use clear_bit instead of set_bit clean-inode-fix.patch initialise inode->i_rdev affs-lock_kernel-fix.patch affs unlock_kernel() fix lseek-ext2_readdir.patch remove lock_kernel() from readdir implementations. inode_setattr-lock_kernel-removal.patch remove lock_kernel() from inode_setattr's vmtruncate() call raid0-oops-fix.patch fix raid0 oops ^ permalink raw reply [flat|nested] 12+ messages in thread
* 2.5.64-mm8 @ 2003-03-16 10:42 ` Andrew Morton 0 siblings, 0 replies; 12+ messages in thread From: Andrew Morton @ 2003-03-16 10:42 UTC (permalink / raw) To: linux-kernel, linux-mm ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.64/2.5.64-mm8/ . Several fixes to the anticipatory scheduler. It is the default IO scheduler again. The main thing which was fixed here was an interesting deadlock involving keventd, the I/O scheduler, vfork and request_module(). . I should have mentioned that 2.5.64-mm7 included a CPU scheduler tweak from Mike Galbraith which apparently fixes up the various starvation problems which people have been experiencing. That is also in 2.5.64-mm8. Changes since 2.5.64-mm7: -ppc64-compat-flock.patch -ppc64-eeh-fix.patch -ppc64-socketcall-fix.patch -register-tty_devclass.patch Merged +proc-sys-debug.patch Create /proc/sys/debug/0 ... /proc/sys/debug/5. These appear in the kernel as int proc_sys_debug[8]; These are not used for anyting - it is for ah-hoc debugging convenience. +as-jumbo-fix.patch +as-request_fn-in-timer.patch +as-remove-request-fix.patch Anticipatory scheduler fixes -deadline-default.patch Make the anticipatory scheduler the default again. +unplug-from-timer.patch Call q->unplug_fn direct from timer context rather than via schedule_work(). +ext2-no-lock_super-set-s_dirt.patch +ext2-ialloc-no-lock_super.patch +ext2-ialloc-no-lock_super-fixes.patch Avoid lock_super() in the ext2 inode allocator +pci-update-1.patch Update for Russell's PCI rework. +affs-lock_kernel-fix.patch Missing an unlock_kernel(). (Why didn't any of the checkers notice this?) +lseek-ext2_readdir.patch Remove the lock_kernel()s in ext2_readdir/ext3_readdir +inode_setattr-lock_kernel-removal.patch Remove the lock_kernel() around inode_setattr's vmtruncate() call. +raid0-oops-fix.patch Fix oops in RAID0. All 124 patches: linus.patch Latest from Linus mm.patch add -mmN to EXTRAVERSION kgdb.patch proc-sys-debug.patch create /proc/sys/debug/0 ... 7 noirqbalance-fix.patch Fix noirqbalance config_spinline.patch uninline spinlocks for profiling accuracy. ppc64-reloc_hide.patch ppc64-pci-patch.patch Subject: pci patch ppc64-aio-32bit-emulation.patch 32/64bit emulation for aio ppc64-64-bit-exec-fix.patch Pass the load address into ELF_PLAT_INIT() ppc64-scruffiness.patch Fix some PPC64 compile warnings sym-do-160.patch make the SYM driver do 160 MB/sec config-PAGE_OFFSET.patch Configurable kenrel/user memory split ptrace-flush.patch cache flushing in the ptrace code buffer-debug.patch buffer.c debugging warn-null-wakeup.patch ext3-truncate-ordered-pages.patch ext3: explicitly free truncated pages reiserfs_file_write-5.patch tcp-wakeups.patch Use fast wakeups in TCP/IPV4 rcu-stats.patch RCU statistics reporting ext3-journalled-data-assertion-fix.patch Remove incorrect assertion from ext3 nfs-speedup.patch nfs-oom-fix.patch nfs oom fix sk-allocation.patch Subject: Re: nfs oom nfs-more-oom-fix.patch rpciod-atomic-allocations.patch Make rcpiod use atomic allocations linux-isp.patch isp-update-1.patch remove-unused-congestion-stuff.patch Subject: [PATCH] remove unused congestion stuff as-iosched.patch anticipatory I/O scheduler as-debug-BUG-fix.patch as-eject-BUG-fix.patch AS: don't go BUG during cdrom eject as-jumbo-fix.patch AS: OSDL fixes as-request_fn-in-timer.patch Remove the scheduled_work thing as-remove-request-fix.patch cfq-2.patch CFQ scheduler, #2 unplug-from-timer.patch smalldevfs.patch smalldevfs remap-file-pages-2.5.63-a1.patch Subject: [patch] remap-file-pages-2.5.63-A1 hugh-remap-fix.patch hugh's file-offset-in-pte fix fremap-limit-offsets.patch fremap: limit remap_file_pages() file offsets fremap-all-mappings.patch Make all executable mappings be nonlinear filemap_populate-speedup.patch filemap_populate speedup file-offset-in-pte-x86_64.patch x86_64: support for file offsets in pte's file-offset-in-pte-ppc64.patch objrmap-2.5.62-5.patch object-based rmap objrmap-nonlinear-fixes.patch objrmap fix for nonlinear scheduler-tunables.patch scheduler tunables scheduler-starvation-fixes.patch CPU scheduler starvation fixes timer-cleanup.patch timer code cleanup timer-readdition-fix.patch timer re-addition lockup fix show_task-free-stack-fix.patch show_task() fix and cleanup yellowfin-set_bit-fix.patch yellowfin driver set_bit fix htree-nfs-fix.patch Fix ext3 htree / NFS compatibility problems update_atime-ng.patch inode a/c/mtime modification speedup one-sec-times.patch Implement a/c/time speedup in ext2 & ext3 task_prio-fix.patch simple task_prio() fix set_current_state-fs.patch use set_current_state in fs set_current_state-mm.patch use set_current_state in mm copy_thread-leak-fix.patch Fix memory leak in copy_thread slab_store_user-large-objects.patch slab debug: perform redzoning against larger objects file_list_lock-contention-fix.patch file_list_lock contention fixes tty_files-fixes.patch file->f_list locking in tty_io.c file_list_cleanup.patch file_list cleanup file_list-remove-free_list.patch file_table: remove the private freelist file-list-less-locking.patch file_list: less locking vt_ioctl-stack-use.patch stack reduction in drivers/char/vt_ioctl.c fix-mem-equals.patch Fix mem= options no-mmu-stubs.patch a few missing stubs for !CONFIG_MMU nommu-slab.patch slab changes for !CONFIG_MMU nfs-memleak-fix.patch memleak in fs/nfs/inode.c::nfs_get_sb() ufs-memleak-fix.patch Memleak in fs/ufs/util.c hugetlb-unmap_vmas-fix.patch fix the fix for unmap_vmas & hugepages early-writeback-init.patch Early writeback initialisation posix-timers-update.patch posix timers update e100-memleak-fix.patch Memleak in e100 driver pcmcia-1-kill-get_foo_map.patch pcmcia: 1/6 kill get_*_map pcmcia-2-remove-bus_foo-abstractions.patch pcmcia: 2/6: Remove bus_* abstractions pcmcia-3-add-SOCKET_CARDBUS_CONFIG.patch pcmcia: 3/6: add SOCKET_CARDBUS_CONFIG flag pcmcia-4-add-locking.patch pcmcia: 4/6: Add some locking to rsrc_mgr.c pcmcia-5-add-CONFIG_PCMCIA_PROBE.patch pcmcia 5/6: Introduce CONFIG_PCMCIA_PROBE pcmcia-6-remove-old-cardbus-clients.patch pcmcia: 6/6: Remove support for old cardbus clients oops-counters.patch OOPS instance counters io_apic-DO_ACTION-cleanup.patch io-apic.c: DO_ACTION cleanup ext2-ext3-noatime-fix.patch Ext2/3 noatime and dirsync sometimes ignored oprofile-timer-fix.patch fix oprofile timer race htree-nfs-fix-2.patch htree nfs fix ext2-balloc-fix.patch ext2: block allocation fix ext2-no-lock_super.patch concurrent block allocation for ext2 ext2-no-lock-super-whitespace-fixes.patch ext2-no-lock_super-fix-1.patch ext2-no-lock_super-fix-2.patch ext2-no-lock_super-fix-3.patch ext2-no-lock_super-fix-4.patch ext2-no-lock_super-fix-5.patch ext2-no-lock_super-fix-6.patch ext2-no-lock_super-fix-7.patch ext2-no-lock_super-set-s_dirt.patch ext2 block allocator: set s_dirt ext2-ialloc-no-lock_super.patch concurrent inode allocation for ext2 ext2-ialloc-no-lock_super-fixes.patch ext2: concurrent ialloc fixes brlock-removal-1.patch Brlock removal 1/5 - core brlock-removal-2.patch brlock removal 2/5: remove brlock from snap and vlan brlock-removal-3.patch brlock removal 3/5: remove brlock from bridge brlock-removal-4.patch brlock removal 4/5: removal from ipv4/ipv6 brlock-removal-5.patch brlock removal 5/5: remove brlock code pgd_index-comments.patch pgd_index/pmd_index/pte_index commentary pci-6.patch pci-7.patch pci-8.patch pci-9.patch pci-10.patch pci-11.patch pci-12.patch pci-13.patch pci-14.patch pci-15.patch pci-update-1.patch PCI patches: update proc-sysrq-trigger.patch /proc/sysrq-trigger: trigger sysrq functions via /proc aio-bits-fix.patch kiocbClear should use clear_bit instead of set_bit clean-inode-fix.patch initialise inode->i_rdev affs-lock_kernel-fix.patch affs unlock_kernel() fix lseek-ext2_readdir.patch remove lock_kernel() from readdir implementations. inode_setattr-lock_kernel-removal.patch remove lock_kernel() from inode_setattr's vmtruncate() call raid0-oops-fix.patch fix raid0 oops -- 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] 12+ messages in thread
* Re: 2.5.64-mm8 2003-03-16 10:42 ` 2.5.64-mm8 Andrew Morton @ 2003-03-16 12:21 ` Roman Zippel -1 siblings, 0 replies; 12+ messages in thread From: Roman Zippel @ 2003-03-16 12:21 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm Hi, On Sun, 16 Mar 2003, Andrew Morton wrote: > +affs-lock_kernel-fix.patch > > Missing an unlock_kernel(). (Why didn't any of the checkers notice this?) Could you replace this the patch below? It removes the kernel lock completely and also fixes a bitmap corruption. bye, Roman --- linux/fs/affs/Changes 18 May 2002 12:58:27 -0000 1.1.1.2 +++ linux/fs/affs/Changes 16 Mar 2003 00:35:30 -0000 @@ -28,6 +28,11 @@ Known bugs: Please direct bug reports to: zippel@linux-m68k.org +Version 3.20 +------------ +- kill kernel lock +- fix for a possible bitmap corruption + Version 3.19 ------------ --- linux/fs/affs/bitmap.c 25 May 2002 16:20:39 -0000 1.1.1.8 +++ linux/fs/affs/bitmap.c 16 Mar 2003 00:35:31 -0000 @@ -185,6 +185,8 @@ find_bmap: /* search for the next bmap buffer with free bits */ i = sbi->s_bmap_count; do { + if (--i < 0) + goto err_full; bmap++; bm++; if (bmap < sbi->s_bmap_count) @@ -192,8 +194,6 @@ find_bmap: /* restart search at zero */ bmap = 0; bm = sbi->s_bitmap; - if (--i <= 0) - goto err_full; } while (!bm->bm_free); blk = bmap * sbi->s_bmap_bits; @@ -216,8 +216,8 @@ find_bmap_bit: mask = ~0UL << (bit & 31); blk &= ~31UL; - tmp = be32_to_cpu(*data) & mask; - if (tmp) + tmp = be32_to_cpu(*data); + if (tmp & mask) goto find_bit; /* scan the rest of the buffer */ @@ -230,10 +230,11 @@ find_bmap_bit: goto find_bmap; } while (!(tmp = *data)); tmp = be32_to_cpu(tmp); + mask = ~0; find_bit: /* finally look for a free bit in the word */ - bit = ffs(tmp) - 1; + bit = ffs(tmp & mask) - 1; blk += bit + sbi->s_reserved; mask2 = mask = 1 << (bit & 31); AFFS_I(inode)->i_lastalloc = blk; @@ -266,8 +267,8 @@ err_bh_read: sbi->s_bmap_bh = NULL; sbi->s_last_bmap = ~0; err_full: - pr_debug("failed\n"); up(&sbi->s_bmlock); + pr_debug("failed\n"); return 0; } --- linux/fs/affs/dir.c 11 Nov 2002 18:56:16 -0000 1.1.1.6 +++ linux/fs/affs/dir.c 16 Mar 2003 00:35:31 -0000 @@ -65,8 +65,6 @@ affs_readdir(struct file *filp, void *di int stored; int res; - lock_kernel(); - pr_debug("AFFS: readdir(ino=%lu,f_pos=%lx)\n",inode->i_ino,(unsigned long)filp->f_pos); stored = 0; @@ -162,7 +160,6 @@ readdir_out: affs_brelse(dir_bh); affs_brelse(fh_bh); affs_unlock_dir(inode); - unlock_kernel(); pr_debug("AFFS: readdir()=%d\n", stored); return res; } --- linux/fs/affs/inode.c 18 Nov 2002 18:46:35 -0000 1.1.1.10 +++ linux/fs/affs/inode.c 16 Mar 2003 00:35:31 -0000 @@ -195,11 +195,9 @@ affs_write_inode(struct inode *inode, in if (!inode->i_nlink) // possibly free block return; - lock_kernel(); bh = affs_bread(sb, inode->i_ino); if (!bh) { affs_error(sb,"write_inode","Cannot read block %lu",inode->i_ino); - unlock_kernel(); return; } tail = AFFS_TAIL(sb, bh); @@ -227,7 +225,7 @@ affs_write_inode(struct inode *inode, in affs_fix_checksum(sb, bh); mark_buffer_dirty_inode(bh, inode); affs_brelse(bh); - unlock_kernel(); + affs_free_prealloc(inode); } int @@ -236,8 +234,6 @@ affs_notify_change(struct dentry *dentry struct inode *inode = dentry->d_inode; int error; - lock_kernel(); - pr_debug("AFFS: notify_change(%lu,0x%x)\n",inode->i_ino,attr->ia_valid); error = inode_change_ok(inode,attr); @@ -257,7 +253,6 @@ affs_notify_change(struct dentry *dentry if (!error && (attr->ia_valid & ATTR_MODE)) mode_to_prot(inode); out: - unlock_kernel(); return error; } @@ -265,15 +260,13 @@ void affs_put_inode(struct inode *inode) { pr_debug("AFFS: put_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); - lock_kernel(); affs_free_prealloc(inode); if (atomic_read(&inode->i_count) == 1) { + down(&inode->i_sem); if (inode->i_size != AFFS_I(inode)->mmu_private) affs_truncate(inode); - //if (inode->i_nlink) - // affs_clear_inode(inode); + up(&inode->i_sem); } - unlock_kernel(); } void @@ -284,9 +277,7 @@ affs_delete_inode(struct inode *inode) if (S_ISREG(inode->i_mode)) affs_truncate(inode); clear_inode(inode); - lock_kernel(); affs_free_block(inode->i_sb, inode->i_ino); - unlock_kernel(); } void --- linux/fs/affs/namei.c 11 Nov 2002 18:56:17 -0000 1.1.1.8 +++ linux/fs/affs/namei.c 16 Mar 2003 00:35:31 -0000 @@ -218,12 +218,10 @@ affs_lookup(struct inode *dir, struct de pr_debug("AFFS: lookup(\"%.*s\")\n",(int)dentry->d_name.len,dentry->d_name.name); - lock_kernel(); affs_lock_dir(dir); bh = affs_find_entry(dir, dentry); affs_unlock_dir(dir); if (IS_ERR(bh)) { - unlock_kernel(); return ERR_PTR(PTR_ERR(bh)); } if (bh) { @@ -240,12 +238,10 @@ affs_lookup(struct inode *dir, struct de affs_brelse(bh); inode = iget(sb, ino); if (!inode) { - unlock_kernel(); return ERR_PTR(-EACCES); } } dentry->d_op = AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations; - unlock_kernel(); d_add(dentry, inode); return NULL; } @@ -253,17 +249,10 @@ affs_lookup(struct inode *dir, struct de int affs_unlink(struct inode *dir, struct dentry *dentry) { - int res; pr_debug("AFFS: unlink(dir=%d, \"%.*s\")\n", (u32)dir->i_ino, (int)dentry->d_name.len, dentry->d_name.name); - if (!dentry->d_inode) - return -ENOENT; - - lock_kernel(); - res = affs_remove_header(dentry); - unlock_kernel(); - return res; + return affs_remove_header(dentry); } int @@ -276,12 +265,9 @@ affs_create(struct inode *dir, struct de pr_debug("AFFS: create(%lu,\"%.*s\",0%o)\n",dir->i_ino,(int)dentry->d_name.len, dentry->d_name.name,mode); - lock_kernel(); inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_mode = mode; mode_to_prot(inode); @@ -294,10 +280,8 @@ affs_create(struct inode *dir, struct de if (error) { inode->i_nlink = 0; iput(inode); - unlock_kernel(); return error; } - unlock_kernel(); return 0; } @@ -310,12 +294,9 @@ affs_mkdir(struct inode *dir, struct den pr_debug("AFFS: mkdir(%lu,\"%.*s\",0%o)\n",dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name,mode); - lock_kernel(); inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_mode = S_IFDIR | mode; mode_to_prot(inode); @@ -328,10 +309,8 @@ affs_mkdir(struct inode *dir, struct den inode->i_nlink = 0; mark_inode_dirty(inode); iput(inode); - unlock_kernel(); return error; } - unlock_kernel(); return 0; } @@ -357,14 +336,10 @@ affs_symlink(struct inode *dir, struct d pr_debug("AFFS: symlink(%lu,\"%.*s\" -> \"%s\")\n",dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name,symname); - lock_kernel(); maxlen = AFFS_SB(sb)->s_hashsize * sizeof(u32) - 1; - error = -ENOSPC; inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_op = &affs_symlink_inode_operations; inode->i_data.a_ops = &affs_symlink_aops; @@ -410,7 +385,6 @@ affs_symlink(struct inode *dir, struct d error = affs_add_entry(dir, inode, dentry, ST_SOFTLINK); if (error) goto err; - unlock_kernel(); return 0; @@ -418,7 +392,6 @@ err: inode->i_nlink = 0; mark_inode_dirty(inode); iput(inode); - unlock_kernel(); return error; } @@ -426,23 +399,11 @@ int affs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) { struct inode *inode = old_dentry->d_inode; - int error; pr_debug("AFFS: link(%u, %u, \"%.*s\")\n", (u32)inode->i_ino, (u32)dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name); - lock_kernel(); - error = affs_add_entry(dir, inode, dentry, ST_LINKFILE); - if (error) { - /* WTF??? */ - inode->i_nlink = 0; - mark_inode_dirty(inode); - iput(inode); - unlock_kernel(); - return error; - } - unlock_kernel(); - return 0; + return affs_add_entry(dir, inode, dentry, ST_LINKFILE); } int @@ -453,21 +414,19 @@ affs_rename(struct inode *old_dir, struc struct buffer_head *bh = NULL; int retval; - lock_kernel(); pr_debug("AFFS: rename(old=%u,\"%*s\" to new=%u,\"%*s\")\n", (u32)old_dir->i_ino, (int)old_dentry->d_name.len, old_dentry->d_name.name, (u32)new_dir->i_ino, (int)new_dentry->d_name.len, new_dentry->d_name.name); - if ((retval = affs_check_name(new_dentry->d_name.name,new_dentry->d_name.len))) - goto done; + retval = affs_check_name(new_dentry->d_name.name,new_dentry->d_name.len); + if (retval) + return retval; /* Unlink destination if it already exists */ if (new_dentry->d_inode) { retval = affs_remove_header(new_dentry); - if (retval) { - unlock_kernel(); + if (retval) return retval; - } } retval = -EIO; @@ -493,6 +452,5 @@ affs_rename(struct inode *old_dir, struc done: mark_buffer_dirty_inode(bh, retval ? old_dir : new_dir); affs_brelse(bh); - unlock_kernel(); return retval; } --- linux/fs/affs/super.c 27 Jan 2003 21:03:20 -0000 1.1.1.15 +++ linux/fs/affs/super.c 16 Mar 2003 00:35:31 -0000 @@ -40,7 +40,6 @@ static void affs_put_super(struct super_block *sb) { struct affs_sb_info *sbi = AFFS_SB(sb); - lock_kernel(); pr_debug("AFFS: put_super()\n"); if (!(sb->s_flags & MS_RDONLY)) { @@ -58,7 +57,6 @@ affs_put_super(struct super_block *sb) affs_brelse(sbi->s_root_bh); kfree(sbi); sb->s_fs_info = NULL; - unlock_kernel(); return; } @@ -67,7 +65,7 @@ affs_write_super(struct super_block *sb) { int clean = 2; struct affs_sb_info *sbi = AFFS_SB(sb); - lock_kernel(); + if (!(sb->s_flags & MS_RDONLY)) { // if (sbi->s_bitmap[i].bm_bh) { // if (buffer_dirty(sbi->s_bitmap[i].bm_bh)) { @@ -81,7 +79,7 @@ affs_write_super(struct super_block *sb) } else sb->s_dirt = 0; - unlock_kernel(); + pr_debug("AFFS: write_super() at %lu, clean=%d\n", get_seconds(), clean); } static kmem_cache_t * affs_inode_cachep; --- linux/fs/affs/symlink.c 11 Nov 2002 18:56:17 -0000 1.1.1.5 +++ linux/fs/affs/symlink.c 16 Mar 2003 00:35:31 -0000 @@ -32,9 +32,7 @@ static int affs_symlink_readpage(struct pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); err = -EIO; - lock_kernel(); bh = affs_bread(inode->i_sb, inode->i_ino); - unlock_kernel(); if (!bh) goto fail; i = 0; @@ -63,9 +61,7 @@ static int affs_symlink_readpage(struct j++; } link[i] = '\0'; - lock_kernel(); affs_brelse(bh); - unlock_kernel(); SetPageUptodate(page); kunmap(page); unlock_page(page); ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: 2.5.64-mm8 @ 2003-03-16 12:21 ` Roman Zippel 0 siblings, 0 replies; 12+ messages in thread From: Roman Zippel @ 2003-03-16 12:21 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm Hi, On Sun, 16 Mar 2003, Andrew Morton wrote: > +affs-lock_kernel-fix.patch > > Missing an unlock_kernel(). (Why didn't any of the checkers notice this?) Could you replace this the patch below? It removes the kernel lock completely and also fixes a bitmap corruption. bye, Roman --- linux/fs/affs/Changes 18 May 2002 12:58:27 -0000 1.1.1.2 +++ linux/fs/affs/Changes 16 Mar 2003 00:35:30 -0000 @@ -28,6 +28,11 @@ Known bugs: Please direct bug reports to: zippel@linux-m68k.org +Version 3.20 +------------ +- kill kernel lock +- fix for a possible bitmap corruption + Version 3.19 ------------ --- linux/fs/affs/bitmap.c 25 May 2002 16:20:39 -0000 1.1.1.8 +++ linux/fs/affs/bitmap.c 16 Mar 2003 00:35:31 -0000 @@ -185,6 +185,8 @@ find_bmap: /* search for the next bmap buffer with free bits */ i = sbi->s_bmap_count; do { + if (--i < 0) + goto err_full; bmap++; bm++; if (bmap < sbi->s_bmap_count) @@ -192,8 +194,6 @@ find_bmap: /* restart search at zero */ bmap = 0; bm = sbi->s_bitmap; - if (--i <= 0) - goto err_full; } while (!bm->bm_free); blk = bmap * sbi->s_bmap_bits; @@ -216,8 +216,8 @@ find_bmap_bit: mask = ~0UL << (bit & 31); blk &= ~31UL; - tmp = be32_to_cpu(*data) & mask; - if (tmp) + tmp = be32_to_cpu(*data); + if (tmp & mask) goto find_bit; /* scan the rest of the buffer */ @@ -230,10 +230,11 @@ find_bmap_bit: goto find_bmap; } while (!(tmp = *data)); tmp = be32_to_cpu(tmp); + mask = ~0; find_bit: /* finally look for a free bit in the word */ - bit = ffs(tmp) - 1; + bit = ffs(tmp & mask) - 1; blk += bit + sbi->s_reserved; mask2 = mask = 1 << (bit & 31); AFFS_I(inode)->i_lastalloc = blk; @@ -266,8 +267,8 @@ err_bh_read: sbi->s_bmap_bh = NULL; sbi->s_last_bmap = ~0; err_full: - pr_debug("failed\n"); up(&sbi->s_bmlock); + pr_debug("failed\n"); return 0; } --- linux/fs/affs/dir.c 11 Nov 2002 18:56:16 -0000 1.1.1.6 +++ linux/fs/affs/dir.c 16 Mar 2003 00:35:31 -0000 @@ -65,8 +65,6 @@ affs_readdir(struct file *filp, void *di int stored; int res; - lock_kernel(); - pr_debug("AFFS: readdir(ino=%lu,f_pos=%lx)\n",inode->i_ino,(unsigned long)filp->f_pos); stored = 0; @@ -162,7 +160,6 @@ readdir_out: affs_brelse(dir_bh); affs_brelse(fh_bh); affs_unlock_dir(inode); - unlock_kernel(); pr_debug("AFFS: readdir()=%d\n", stored); return res; } --- linux/fs/affs/inode.c 18 Nov 2002 18:46:35 -0000 1.1.1.10 +++ linux/fs/affs/inode.c 16 Mar 2003 00:35:31 -0000 @@ -195,11 +195,9 @@ affs_write_inode(struct inode *inode, in if (!inode->i_nlink) // possibly free block return; - lock_kernel(); bh = affs_bread(sb, inode->i_ino); if (!bh) { affs_error(sb,"write_inode","Cannot read block %lu",inode->i_ino); - unlock_kernel(); return; } tail = AFFS_TAIL(sb, bh); @@ -227,7 +225,7 @@ affs_write_inode(struct inode *inode, in affs_fix_checksum(sb, bh); mark_buffer_dirty_inode(bh, inode); affs_brelse(bh); - unlock_kernel(); + affs_free_prealloc(inode); } int @@ -236,8 +234,6 @@ affs_notify_change(struct dentry *dentry struct inode *inode = dentry->d_inode; int error; - lock_kernel(); - pr_debug("AFFS: notify_change(%lu,0x%x)\n",inode->i_ino,attr->ia_valid); error = inode_change_ok(inode,attr); @@ -257,7 +253,6 @@ affs_notify_change(struct dentry *dentry if (!error && (attr->ia_valid & ATTR_MODE)) mode_to_prot(inode); out: - unlock_kernel(); return error; } @@ -265,15 +260,13 @@ void affs_put_inode(struct inode *inode) { pr_debug("AFFS: put_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); - lock_kernel(); affs_free_prealloc(inode); if (atomic_read(&inode->i_count) == 1) { + down(&inode->i_sem); if (inode->i_size != AFFS_I(inode)->mmu_private) affs_truncate(inode); - //if (inode->i_nlink) - // affs_clear_inode(inode); + up(&inode->i_sem); } - unlock_kernel(); } void @@ -284,9 +277,7 @@ affs_delete_inode(struct inode *inode) if (S_ISREG(inode->i_mode)) affs_truncate(inode); clear_inode(inode); - lock_kernel(); affs_free_block(inode->i_sb, inode->i_ino); - unlock_kernel(); } void --- linux/fs/affs/namei.c 11 Nov 2002 18:56:17 -0000 1.1.1.8 +++ linux/fs/affs/namei.c 16 Mar 2003 00:35:31 -0000 @@ -218,12 +218,10 @@ affs_lookup(struct inode *dir, struct de pr_debug("AFFS: lookup(\"%.*s\")\n",(int)dentry->d_name.len,dentry->d_name.name); - lock_kernel(); affs_lock_dir(dir); bh = affs_find_entry(dir, dentry); affs_unlock_dir(dir); if (IS_ERR(bh)) { - unlock_kernel(); return ERR_PTR(PTR_ERR(bh)); } if (bh) { @@ -240,12 +238,10 @@ affs_lookup(struct inode *dir, struct de affs_brelse(bh); inode = iget(sb, ino); if (!inode) { - unlock_kernel(); return ERR_PTR(-EACCES); } } dentry->d_op = AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations; - unlock_kernel(); d_add(dentry, inode); return NULL; } @@ -253,17 +249,10 @@ affs_lookup(struct inode *dir, struct de int affs_unlink(struct inode *dir, struct dentry *dentry) { - int res; pr_debug("AFFS: unlink(dir=%d, \"%.*s\")\n", (u32)dir->i_ino, (int)dentry->d_name.len, dentry->d_name.name); - if (!dentry->d_inode) - return -ENOENT; - - lock_kernel(); - res = affs_remove_header(dentry); - unlock_kernel(); - return res; + return affs_remove_header(dentry); } int @@ -276,12 +265,9 @@ affs_create(struct inode *dir, struct de pr_debug("AFFS: create(%lu,\"%.*s\",0%o)\n",dir->i_ino,(int)dentry->d_name.len, dentry->d_name.name,mode); - lock_kernel(); inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_mode = mode; mode_to_prot(inode); @@ -294,10 +280,8 @@ affs_create(struct inode *dir, struct de if (error) { inode->i_nlink = 0; iput(inode); - unlock_kernel(); return error; } - unlock_kernel(); return 0; } @@ -310,12 +294,9 @@ affs_mkdir(struct inode *dir, struct den pr_debug("AFFS: mkdir(%lu,\"%.*s\",0%o)\n",dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name,mode); - lock_kernel(); inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_mode = S_IFDIR | mode; mode_to_prot(inode); @@ -328,10 +309,8 @@ affs_mkdir(struct inode *dir, struct den inode->i_nlink = 0; mark_inode_dirty(inode); iput(inode); - unlock_kernel(); return error; } - unlock_kernel(); return 0; } @@ -357,14 +336,10 @@ affs_symlink(struct inode *dir, struct d pr_debug("AFFS: symlink(%lu,\"%.*s\" -> \"%s\")\n",dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name,symname); - lock_kernel(); maxlen = AFFS_SB(sb)->s_hashsize * sizeof(u32) - 1; - error = -ENOSPC; inode = affs_new_inode(dir); - if (!inode) { - unlock_kernel(); + if (!inode) return -ENOSPC; - } inode->i_op = &affs_symlink_inode_operations; inode->i_data.a_ops = &affs_symlink_aops; @@ -410,7 +385,6 @@ affs_symlink(struct inode *dir, struct d error = affs_add_entry(dir, inode, dentry, ST_SOFTLINK); if (error) goto err; - unlock_kernel(); return 0; @@ -418,7 +392,6 @@ err: inode->i_nlink = 0; mark_inode_dirty(inode); iput(inode); - unlock_kernel(); return error; } @@ -426,23 +399,11 @@ int affs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) { struct inode *inode = old_dentry->d_inode; - int error; pr_debug("AFFS: link(%u, %u, \"%.*s\")\n", (u32)inode->i_ino, (u32)dir->i_ino, (int)dentry->d_name.len,dentry->d_name.name); - lock_kernel(); - error = affs_add_entry(dir, inode, dentry, ST_LINKFILE); - if (error) { - /* WTF??? */ - inode->i_nlink = 0; - mark_inode_dirty(inode); - iput(inode); - unlock_kernel(); - return error; - } - unlock_kernel(); - return 0; + return affs_add_entry(dir, inode, dentry, ST_LINKFILE); } int @@ -453,21 +414,19 @@ affs_rename(struct inode *old_dir, struc struct buffer_head *bh = NULL; int retval; - lock_kernel(); pr_debug("AFFS: rename(old=%u,\"%*s\" to new=%u,\"%*s\")\n", (u32)old_dir->i_ino, (int)old_dentry->d_name.len, old_dentry->d_name.name, (u32)new_dir->i_ino, (int)new_dentry->d_name.len, new_dentry->d_name.name); - if ((retval = affs_check_name(new_dentry->d_name.name,new_dentry->d_name.len))) - goto done; + retval = affs_check_name(new_dentry->d_name.name,new_dentry->d_name.len); + if (retval) + return retval; /* Unlink destination if it already exists */ if (new_dentry->d_inode) { retval = affs_remove_header(new_dentry); - if (retval) { - unlock_kernel(); + if (retval) return retval; - } } retval = -EIO; @@ -493,6 +452,5 @@ affs_rename(struct inode *old_dir, struc done: mark_buffer_dirty_inode(bh, retval ? old_dir : new_dir); affs_brelse(bh); - unlock_kernel(); return retval; } --- linux/fs/affs/super.c 27 Jan 2003 21:03:20 -0000 1.1.1.15 +++ linux/fs/affs/super.c 16 Mar 2003 00:35:31 -0000 @@ -40,7 +40,6 @@ static void affs_put_super(struct super_block *sb) { struct affs_sb_info *sbi = AFFS_SB(sb); - lock_kernel(); pr_debug("AFFS: put_super()\n"); if (!(sb->s_flags & MS_RDONLY)) { @@ -58,7 +57,6 @@ affs_put_super(struct super_block *sb) affs_brelse(sbi->s_root_bh); kfree(sbi); sb->s_fs_info = NULL; - unlock_kernel(); return; } @@ -67,7 +65,7 @@ affs_write_super(struct super_block *sb) { int clean = 2; struct affs_sb_info *sbi = AFFS_SB(sb); - lock_kernel(); + if (!(sb->s_flags & MS_RDONLY)) { // if (sbi->s_bitmap[i].bm_bh) { // if (buffer_dirty(sbi->s_bitmap[i].bm_bh)) { @@ -81,7 +79,7 @@ affs_write_super(struct super_block *sb) } else sb->s_dirt = 0; - unlock_kernel(); + pr_debug("AFFS: write_super() at %lu, clean=%d\n", get_seconds(), clean); } static kmem_cache_t * affs_inode_cachep; --- linux/fs/affs/symlink.c 11 Nov 2002 18:56:17 -0000 1.1.1.5 +++ linux/fs/affs/symlink.c 16 Mar 2003 00:35:31 -0000 @@ -32,9 +32,7 @@ static int affs_symlink_readpage(struct pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); err = -EIO; - lock_kernel(); bh = affs_bread(inode->i_sb, inode->i_ino); - unlock_kernel(); if (!bh) goto fail; i = 0; @@ -63,9 +61,7 @@ static int affs_symlink_readpage(struct j++; } link[i] = '\0'; - lock_kernel(); affs_brelse(bh); - unlock_kernel(); SetPageUptodate(page); kunmap(page); unlock_page(page); -- 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] 12+ messages in thread
* Re: 2.5.64-mm8 2003-03-16 10:42 ` 2.5.64-mm8 Andrew Morton @ 2003-03-16 13:49 ` Mike Galbraith -1 siblings, 0 replies; 12+ messages in thread From: Mike Galbraith @ 2003-03-16 13:49 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm At 02:42 AM 3/16/2003 -0800, Andrew Morton wrote: >. I should have mentioned that 2.5.64-mm7 included a CPU scheduler tweak > from Mike Galbraith which apparently fixes up the various starvation > problems which people have been experiencing. That is also in 2.5.64-mm8. (hopefully, soon to be replaced by a groovy Ingo patch) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: 2.5.64-mm8 @ 2003-03-16 13:49 ` Mike Galbraith 0 siblings, 0 replies; 12+ messages in thread From: Mike Galbraith @ 2003-03-16 13:49 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm At 02:42 AM 3/16/2003 -0800, Andrew Morton wrote: >. I should have mentioned that 2.5.64-mm7 included a CPU scheduler tweak > from Mike Galbraith which apparently fixes up the various starvation > problems which people have been experiencing. That is also in 2.5.64-mm8. (hopefully, soon to be replaced by a groovy Ingo patch) -- 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] 12+ messages in thread
* Re: 2.5.64-mm8 2003-03-16 10:42 ` 2.5.64-mm8 Andrew Morton @ 2003-03-16 17:12 ` Helge Hafting -1 siblings, 0 replies; 12+ messages in thread From: Helge Hafting @ 2003-03-16 17:12 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm mm8 is good, anticipatory scheduling seems to work fine with software raid 0 & 1 now. :-) It seems to boot noticeably quicker than mm2, possibly a result of the memory mapping speedup. Helge Hafting ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: 2.5.64-mm8 @ 2003-03-16 17:12 ` Helge Hafting 0 siblings, 0 replies; 12+ messages in thread From: Helge Hafting @ 2003-03-16 17:12 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm mm8 is good, anticipatory scheduling seems to work fine with software raid 0 & 1 now. :-) It seems to boot noticeably quicker than mm2, possibly a result of the memory mapping speedup. Helge Hafting -- 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] 12+ messages in thread
* Re: 2.5.64-mm8 2003-03-16 10:42 ` 2.5.64-mm8 Andrew Morton ` (3 preceding siblings ...) (?) @ 2003-03-16 19:20 ` Josh McKinney -1 siblings, 0 replies; 12+ messages in thread From: Josh McKinney @ 2003-03-16 19:20 UTC (permalink / raw) To: linux-kernel On approximately Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote: > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.64/2.5.64-mm8/ > Maybe I am just slow but it seems that -mm8 didn't make it to kernel.org from where I am sitting. -- Josh McKinney | Webmaster: http://joshandangie.org -------------------------------------------------------------------------- Linux, the choice | Mate, this parrot wouldn't VOOM if you put of a GNU generation -o) | four million volts through it! -- Monty Kernel 2.5.64-mm6 /\ | Python on a Athlon-XP _\_v | | ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2003-03-17 23:15 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-03-17 23:19 2.5.64-mm8 rwhron 2003-03-17 23:26 ` 2.5.64-mm8 Robert Love -- strict thread matches above, loose matches on Subject: below -- 2003-03-16 16:18 2.5.64-mm8 Shane Shrybman 2003-03-16 10:42 2.5.64-mm8 Andrew Morton 2003-03-16 10:42 ` 2.5.64-mm8 Andrew Morton 2003-03-16 12:21 ` 2.5.64-mm8 Roman Zippel 2003-03-16 12:21 ` 2.5.64-mm8 Roman Zippel 2003-03-16 13:49 ` 2.5.64-mm8 Mike Galbraith 2003-03-16 13:49 ` 2.5.64-mm8 Mike Galbraith 2003-03-16 17:12 ` 2.5.64-mm8 Helge Hafting 2003-03-16 17:12 ` 2.5.64-mm8 Helge Hafting 2003-03-16 19:20 ` 2.5.64-mm8 Josh McKinney
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.