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
On Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote:
>...
> +affs-lock_kernel-fix.patch
>
> Missing an unlock_kernel(). (Why didn't any of the checkers notice this?)
>...
It seems noone tried to compile the patched file:
<-- snip -->
...
gcc -Wp,-MD,fs/affs/.dir.o.d -D__KERNEL__ -Iinclude -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6
-Iinclude/asm-i386/mach-default -g -nostdinc -iwithprefix include
-DKBUILD_BASENAME=dir -DKBUILD_MODNAME=affs -c -o fs/affs/dir.o
fs/affs/dir.c
fs/affs/dir.c: In function `affs_readdir':
fs/affs/dir.c:81: `ret' undeclared (first use in this function)
fs/affs/dir.c:81: (Each undeclared identifier is reported only once
fs/affs/dir.c:81: for each function it appears in.)
make[2]: *** [fs/affs/dir.o] Error 1
<-- snip -->
The following patch solves it:
--- linux-2.5.64-mm8/fs/affs/dir.c.old 2003-03-16 12:39:54.000000000 +0100
+++ linux-2.5.64-mm8/fs/affs/dir.c 2003-03-16 12:43:30.000000000 +0100
@@ -78,7 +78,7 @@
if (f_pos == 0) {
filp->private_data = (void *)0;
if (filldir(dirent, ".", 1, f_pos, inode->i_ino, DT_DIR) < 0) {
- ret = 0;
+ res = 0;
goto out;
}
filp->f_pos = f_pos = 1;
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
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: [email protected]
+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);
On Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote:
>...
> All 124 patches:
>
> linus.patch
> Latest from Linus
>...
The following problem seems to come from Linus' tree:
tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
drivers/atm/idt77252.c still needs it:
<-- snip -->
...
gcc -Wp,-MD,drivers/atm/.idt77252.o.d -D__KERNEL__ -Iinclude -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6
-Iinclude/asm-i386/mach-default -g -nostdinc -iwithprefix include -g
-DKBUILD_BASENAME=idt77252 -DKBUILD_MODNAME=idt77252 -c -o
drivers/atm/idt77252.o drivers/atm/idt77252.c
drivers/atm/idt77252.c: In function `alloc_scq':
drivers/atm/idt77252.c:669: warning: unsigned int format, different type arg (arg 5)
drivers/atm/idt77252.c: In function `push_on_scq':
drivers/atm/idt77252.c:733: structure has no member named `tx_inuse'
drivers/atm/idt77252.c: In function `idt77252_send_oam':
drivers/atm/idt77252.c:2028: structure has no member named `tx_inuse'
make[2]: *** [drivers/atm/idt77252.o] Error 1
<-- snip -->
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
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)
On Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote:
>...
> All 124 patches:
>
> linus.patch
> Latest from Linus
>...
Another compile error that seems to come from Linus' tree:
<-- snip -->
...
gcc -Wp,-MD,drivers/media/radio/.miropcm20-rds.o.d -D__KERNEL__
-Iinclude -Wall -Wstrict-prototypes -Wno-trigraphs -O2
-fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2
-march=k6 -Iinclude/asm-i386/mach-default -g -nostdinc -iwithprefix include -DKBUILD_BASENAME=miropcm20_rds
-DKBUILD_MODNAME=miropcm20_rds -c -o drivers/media/radio/miropcm20-rds.o
drivers/media/radio/miropcm20-rds.c
drivers/media/radio/miropcm20-rds.c:117: request for member `fops' in something not a structure or union
drivers/media/radio/miropcm20-rds.c:117: initializer element is not constant
drivers/media/radio/miropcm20-rds.c:117: (near initialization for `rds_miscdev.name')
drivers/media/radio/miropcm20-rds.c: In function `miropcm20_rds_init':
drivers/media/radio/miropcm20-rds.c:133: parse error before `return'
drivers/media/radio/miropcm20-rds.c: In function `miropcm20_rds_cleanup':
drivers/media/radio/miropcm20-rds.c:140: parse error before `}'
drivers/media/radio/miropcm20-rds.c:145: parse error at end of input
drivers/media/radio/miropcm20-rds.c:121: warning: `miropcm20_rds_init' defined but not used
make[3]: *** [drivers/media/radio/miropcm20-rds.o] Error 1
<-- snip -->
It would be nice if everyone would try to compile the patched files
before submitting patches...
Below are the trivial fixes:
--- linux-2.5.64-mm8/drivers/media/radio/miropcm20-rds.c.old 2003-03-16 14:34:17.000000000 +0100
+++ linux-2.5.64-mm8/drivers/media/radio/miropcm20-rds.c 2003-03-16 14:35:05.000000000 +0100
@@ -113,7 +113,7 @@
static struct miscdevice rds_miscdev = {
.minor = MISC_DYNAMIC_MINOR,
- .name = "radiotext"
+ .name = "radiotext",
.fops = &rds_fops,
};
@@ -128,7 +128,7 @@
error = devfs_mk_symlink(NULL, "v4l/rds/radiotext", 0,
"../misc/radiotext", NULL, NULL);
if (error)
- misc_deregister(&rds_miscdev)
+ misc_deregister(&rds_miscdev);
return error;
}
@@ -136,7 +136,7 @@
static void __exit miropcm20_rds_cleanup(void)
{
devfs_remove("v4l/rds/radiotext");
- misc_deregister(&rds_miscdev)
+ misc_deregister(&rds_miscdev);
}
module_init(miropcm20_rds_init);
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
On Sun, Mar 16, 2003 at 02:02:11PM +0100, Adrian Bunk wrote:
> On Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote:
> >...
> > All 124 patches:
> >
> > linus.patch
> > Latest from Linus
> >...
>
> The following problem seems to come from Linus' tree:
>
> tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
> drivers/atm/idt77252.c still needs it:
>...
The same problem is present in net/atm/pppoatm.c:
<-- snip -->
...
gcc -Wp,-MD,net/atm/.pppoatm.o.d -D__KERNEL__ -Iinclude -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6
-Iinclude/asm-i386/mach-default -g -nostdinc -iwithprefix include
-DKBUILD_BASENAME=pppoatm -DKBUILD_MODNAME=pppoatm -c -o
net/atm/pppoatm.o net/atm/pppoatm.c
net/atm/pppoatm.c: In function `pppoatm_send':
net/atm/pppoatm.c:234: structure has no member named `tx_inuse'
make[2]: *** [net/atm/pppoatm.o] Error 1
<-- snip -->
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
Hi,
Just booted -mm8 with the AS scheduler and X and gnome start fine now.
Good work!
Thanks,
Shane
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
On Sun, Mar 16, 2003 at 02:02:11PM +0100, Adrian Bunk wrote:
> On Sun, Mar 16, 2003 at 02:42:39AM -0800, Andrew Morton wrote:
> >...
> > All 124 patches:
> >
> > linus.patch
> > Latest from Linus
> >...
>
> The following problem seems to come from Linus' tree:
>
> tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
> drivers/atm/idt77252.c still needs it:
>...
I got a third (and last since the kernel compilation is now finished)
compile error:
<-- snip -->
...
gcc -Wp,-MD,net/sched/.sch_atm.o.d -D__KERNEL__ -Iinclude -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6
-Iinclude/asm-i386/mach-default -g -nostdinc -iwithprefix include
-DKBUILD_BASENAME=sch_atm -DKBUILD_MODNAME=sch_atm -c -o
net/sched/sch_atm.o net/sched/sch_atm.c
net/sched/sch_atm.c: In function `sch_atm_dequeue':
net/sched/sch_atm.c:511: structure has no member named `tx_inuse'
make[2]: *** [net/sched/sch_atm.o] Error 1
<-- snip -->
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
I get many errors at the final linking when compiling a kernel with
CONFIG_NUMA enabled but CONFIG_SMP disabled:
<-- snip -->
...
/home/bunk/linux/kernel-2.5/linux-2.5.64-mm8/include/asm/topology.h:41:
undefined reference to `cpu_2_node'
...
<-- snip -->
the problem is that include/asm-i386/topology.h says:
<-- snip -->
...
#ifdef CONFIG_NUMA
...
extern volatile int cpu_2_node[];
...
<-- snip -->
but cpu_2_node is in arch/i386/kernel/smpboot.c that only gets included
with CONFIG_SMP.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
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 |
|
> I get many errors at the final linking when compiling a kernel with
> CONFIG_NUMA enabled but CONFIG_SMP disabled:
Well don't do that then ;-)
# Common NUMA Features
config NUMA
bool "Numa Memory Allocation Support"
depends on (HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT && ACPI && !ACPI_HT_
ONLY)))
I guess SMP should be added to the dependencies, but the whole things
getting a little twisted. Let me try and sort it out properly this afternoon.
M.
>> I get many errors at the final linking when compiling a kernel with
>> CONFIG_NUMA enabled but CONFIG_SMP disabled:
>
> Well don't do that then ;-)
>
> # Common NUMA Features
> config NUMA
> bool "Numa Memory Allocation Support"
> depends on (HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT && ACPI && !ACPI_HT_
> ONLY)))
>
> I guess SMP should be added to the dependencies, but the whole things
> getting a little twisted. Let me try and sort it out properly this afternoon.
Ah ... maybe you were referring to the bit when Andy was going to get this
working on a standard PC for distros (actually, they still have SMP images,
I think ... but still). Not quite finished yet, and Andy's off on vacation ;-)
Avoid that combo for now ... will fix soon.
M.
On Sun, Mar 16, 2003 at 11:44:06AM -0800, Martin J. Bligh wrote:
> >> I get many errors at the final linking when compiling a kernel with
> >> CONFIG_NUMA enabled but CONFIG_SMP disabled:
> >
> > Well don't do that then ;-)
> >
> > # Common NUMA Features
> > config NUMA
> > bool "Numa Memory Allocation Support"
> > depends on (HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT && ACPI && !ACPI_HT_
> > ONLY)))
> >
> > I guess SMP should be added to the dependencies, but the whole things
> > getting a little twisted. Let me try and sort it out properly this afternoon.
>
> Ah ... maybe you were referring to the bit when Andy was going to get this
> working on a standard PC for distros (actually, they still have SMP images,
I ran into it since -mm adds a " || X86_PC" to the depends line of
CONFIG_NUMA.
> I think ... but still). Not quite finished yet, and Andy's off on vacation ;-)
> Avoid that combo for now ... will fix soon.
It's not an extremely urgent problem.
> M.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
In message <[email protected]>,Adrian Bunk writes:
> tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
> drivers/atm/idt77252.c still needs it:
it doesnt need it -- it just needs to use the right member. the following
patch should fix the current errors. i missed these bits during my
earlier changes.
Index: linux/net/sched/sch_atm.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/net/sched/sch_atm.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- linux/net/sched/sch_atm.c 20 Feb 2003 13:46:33 -0000 1.1.1.1
+++ linux/net/sched/sch_atm.c 11 Mar 2003 15:20:25 -0000 1.2
@@ -508,7 +508,7 @@
ATM_SKB(skb)->vcc = flow->vcc;
memcpy(skb_push(skb,flow->hdr_len),flow->hdr,
flow->hdr_len);
- atomic_add(skb->truesize,&flow->vcc->tx_inuse);
+ atomic_add(skb->truesize,&flow->vcc->sk->wmem_alloc);
ATM_SKB(skb)->iovcnt = 0;
/* atm.atm_options are already set by atm_tc_enqueue */
(void) flow->vcc->send(flow->vcc,skb);
Index: linux/net/atm/pppoatm.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/net/atm/pppoatm.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 pppoatm.c
--- linux/net/atm/pppoatm.c 20 Feb 2003 13:46:30 -0000 1.1.1.1
+++ linux/net/atm/pppoatm.c 15 Mar 2003 14:35:27 -0000
@@ -231,7 +231,7 @@
kfree_skb(skb);
return 1;
}
- atomic_add(skb->truesize, &ATM_SKB(skb)->vcc->tx_inuse);
+ atomic_add(skb->truesize, &ATM_SKB(skb)->vcc->sk->wmem_alloc);
ATM_SKB(skb)->iovcnt = 0;
ATM_SKB(skb)->atm_options = ATM_SKB(skb)->vcc->atm_options;
DPRINTK("(unit %d): atm_skb(%p)->vcc(%p)->dev(%p)\n",
Index: linux/drivers/atm/idt77252.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/drivers/atm/idt77252.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 idt77252.c
--- linux/drivers/atm/idt77252.c 20 Feb 2003 13:45:03 -0000 1.1.1.1
+++ linux/drivers/atm/idt77252.c 16 Mar 2003 13:17:56 -0000
@@ -730,7 +730,7 @@
struct atm_vcc *vcc = vc->tx_vcc;
vc->estimator->cells += (skb->len + 47) / 48;
- if (atomic_read(&vcc->tx_inuse) > (vcc->sk->sndbuf >> 1)) {
+ if (atomic_read(&vcc->sk->wmem_alloc) > (vcc->sk->sndbuf >> 1)) {
u32 cps = vc->estimator->maxcps;
vc->estimator->cps = cps;
@@ -2025,7 +2025,7 @@
atomic_inc(&vcc->stats->tx_err);
return -ENOMEM;
}
- atomic_add(skb->truesize + ATM_PDU_OVHD, &vcc->tx_inuse);
+ atomic_add(skb->truesize + ATM_PDU_OVHD, &vcc->sk->wmem_alloc);
ATM_SKB(skb)->iovcnt = 0;
memcpy(skb_put(skb, 52), cell, 52);
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
On Mon, 2003-03-17 at 18:19, [email protected] 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
On Mon, Mar 17, 2003 at 10:43:15AM -0500, chas williams wrote:
> In message <[email protected]>,Adrian Bunk writes:
> > tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
> > drivers/atm/idt77252.c still needs it:
>
> it doesnt need it -- it just needs to use the right member. the following
> patch should fix the current errors. i missed these bits during my
> earlier changes.
>...
Thanks, your patch fixes all tx_inuse compilation errors I observed.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
From: chas williams <[email protected]>
Date: Mon, 17 Mar 2003 10:43:15 -0500
In message <[email protected]>,Adrian Bunk writes:
> tx_inuse was removed from struct atm_vcc in include/linux/atmdev.h but
> drivers/atm/idt77252.c still needs it:
it doesnt need it -- it just needs to use the right member. the following
patch should fix the current errors. i missed these bits during my
earlier changes.
Applied, thanks Chas.