From b860551715b45a130a8f543816201833e19f0a35 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 23 Nov 2007 15:13:52 -0500 Subject: [PATCH] Import 2.1.55 --- Makefile | 2 +- arch/i386/kernel/entry.S | 20 ++++++++++---------- drivers/char/Config.in | 2 +- drivers/scsi/Config.in | 2 +- fs/affs/inode.c | 2 +- fs/ext2/ialloc.c | 3 ++- fs/inode.c | 11 ++++++++++- fs/minix/bitmap.c | 2 +- fs/sysv/ialloc.c | 2 +- 9 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 13a1b0b50b9a..24d65bc41d2f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 1 -SUBLEVEL = 54 +SUBLEVEL = 55 ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/) diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index 32256f7bfec9..21bf047099e6 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S @@ -373,7 +373,7 @@ ENTRY(sys_call_table) .long SYMBOL_NAME(sys_mknod) .long SYMBOL_NAME(sys_chmod) /* 15 */ .long SYMBOL_NAME(sys_chown) - .long 0 /* old break syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */ .long SYMBOL_NAME(sys_stat) .long SYMBOL_NAME(sys_lseek) .long SYMBOL_NAME(sys_getpid) /* 20 */ @@ -387,11 +387,11 @@ ENTRY(sys_call_table) .long SYMBOL_NAME(sys_fstat) .long SYMBOL_NAME(sys_pause) .long SYMBOL_NAME(sys_utime) /* 30 */ - .long 0 /* old stty syscall holder */ - .long 0 /* old gtty syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */ .long SYMBOL_NAME(sys_access) .long SYMBOL_NAME(sys_nice) - .long 0 /* 35 */ /* old ftime syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */ .long SYMBOL_NAME(sys_sync) .long SYMBOL_NAME(sys_kill) .long SYMBOL_NAME(sys_rename) @@ -400,7 +400,7 @@ ENTRY(sys_call_table) .long SYMBOL_NAME(sys_dup) .long SYMBOL_NAME(sys_pipe) .long SYMBOL_NAME(sys_times) - .long 0 /* old prof syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */ .long SYMBOL_NAME(sys_brk) /* 45 */ .long SYMBOL_NAME(sys_setgid) .long SYMBOL_NAME(sys_getgid) @@ -408,13 +408,13 @@ ENTRY(sys_call_table) .long SYMBOL_NAME(sys_geteuid) .long SYMBOL_NAME(sys_getegid) /* 50 */ .long SYMBOL_NAME(sys_acct) - .long 0 /* old phys syscall holder */ - .long 0 /* old lock syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old phys syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */ .long SYMBOL_NAME(sys_ioctl) .long SYMBOL_NAME(sys_fcntl) /* 55 */ - .long 0 /* old mpx syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */ .long SYMBOL_NAME(sys_setpgid) - .long 0 /* old ulimit syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */ .long SYMBOL_NAME(sys_olduname) .long SYMBOL_NAME(sys_umask) /* 60 */ .long SYMBOL_NAME(sys_chroot) @@ -454,7 +454,7 @@ ENTRY(sys_call_table) .long SYMBOL_NAME(sys_fchown) /* 95 */ .long SYMBOL_NAME(sys_getpriority) .long SYMBOL_NAME(sys_setpriority) - .long 0 /* old profil syscall holder */ + .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */ .long SYMBOL_NAME(sys_statfs) .long SYMBOL_NAME(sys_fstatfs) /* 100 */ .long SYMBOL_NAME(sys_ioperm) diff --git a/drivers/char/Config.in b/drivers/char/Config.in index 7cb2041a90f2..eee723670d23 100644 --- a/drivers/char/Config.in +++ b/drivers/char/Config.in @@ -104,7 +104,7 @@ if [ "$CONFIG_WATCHDOG" != "n" ]; then tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT fi bool 'Enhanced Real Time Clock Support' CONFIG_RTC -if [ "$CONFIG_PPC" == "y" ]; then +if [ "$CONFIG_PPC" = "y" ]; then bool 'Tadpole ANA H8 Support' CONFIG_H8 fi tristate '/dev/nvram support' CONFIG_NVRAM diff --git a/drivers/scsi/Config.in b/drivers/scsi/Config.in index 45fa070a9ba7..a137680cbdbd 100644 --- a/drivers/scsi/Config.in +++ b/drivers/scsi/Config.in @@ -108,7 +108,7 @@ dep_tristate 'UltraStor 14F/34F support' CONFIG_SCSI_U14_34F $CONFIG_SCSI fi dep_tristate 'UltraStor SCSI support' CONFIG_SCSI_ULTRASTOR $CONFIG_SCSI #dep_tristate 'SCSI debugging host adapter' CONFIG_SCSI_DEBUG $CONFIG_SCSI -if [ "$CONFIG_PPC" == "y" ]; then +if [ "$CONFIG_PPC" = "y" ]; then dep_tristate 'MESH (Power Mac internal SCSI) support' CONFIG_SCSI_MESH $CONFIG_SCSI if [ "$CONFIG_SCSI_MESH" != "n" ]; then int ' maximum synchronous transfer rate (MB/s) (0 = async)' CONFIG_SCSI_MESH_SYNC_RATE 5 diff --git a/fs/affs/inode.c b/fs/affs/inode.c index c0515764c32c..1999902eb204 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c @@ -908,7 +908,6 @@ affs_new_inode(const struct inode *dir) inode->i_dev = sb->s_dev; inode->i_uid = current->fsuid; inode->i_gid = current->fsgid; - mark_inode_dirty(inode); inode->i_ino = block; inode->i_op = NULL; inode->i_blocks = 0; @@ -928,6 +927,7 @@ affs_new_inode(const struct inode *dir) inode->u.affs_i.i_lastblock = -1; insert_inode_hash(inode); + mark_inode_dirty(inode); return inode; } diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index 833f69ff9a64..19b38753bae4 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c @@ -448,7 +448,7 @@ repeat: mode |= S_ISGID; } else inode->i_gid = current->fsgid; - mark_inode_dirty(inode); + inode->i_ino = j; inode->i_blksize = PAGE_SIZE; /* This is the optimal IO size (for stat), not the fs block size */ inode->i_blocks = 0; @@ -468,6 +468,7 @@ repeat: if (inode->u.ext2_i.i_flags & EXT2_SYNC_FL) inode->i_flags |= MS_SYNCHRONOUS; insert_inode_hash(inode); + mark_inode_dirty(inode); inc_inode_version (inode, gdp, mode); unlock_super (sb); diff --git a/fs/inode.c b/fs/inode.c index cac5ffd4c869..7c98812222c3 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -62,7 +62,16 @@ struct { int max_inodes = NR_INODE; /* - * Put the inode on the super block's dirty list + * Put the inode on the super block's dirty list. + * + * CAREFUL! We mark it dirty unconditionally, but + * move it onto the dirty list only if it is hashed. + * If it was not hashed, it will never be added to + * the dirty list even if it is later hashed, as it + * will have been marked dirty already. + * + * In short, make sure you hash any inodes _before_ + * you start marking them dirty.. */ void __mark_inode_dirty(struct inode *inode) { diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c index 9e27ee118878..69b8e4e4cc33 100644 --- a/fs/minix/bitmap.c +++ b/fs/minix/bitmap.c @@ -255,12 +255,12 @@ struct inode * minix_new_inode(const struct inode * dir) inode->i_dev = sb->s_dev; inode->i_uid = current->fsuid; inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid; - mark_inode_dirty(inode); inode->i_ino = j; inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; inode->i_op = NULL; inode->i_blocks = inode->i_blksize = 0; insert_inode_hash(inode); + mark_inode_dirty(inode); return inode; } diff --git a/fs/sysv/ialloc.c b/fs/sysv/ialloc.c index fa0b3cf952d6..120c71ad1b28 100644 --- a/fs/sysv/ialloc.c +++ b/fs/sysv/ialloc.c @@ -154,12 +154,12 @@ struct inode * sysv_new_inode(const struct inode * dir) inode->i_dev = sb->s_dev; inode->i_uid = current->fsuid; inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid; - mark_inode_dirty(inode); inode->i_ino = ino; inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; inode->i_op = NULL; inode->i_blocks = inode->i_blksize = 0; insert_inode_hash(inode); + mark_inode_dirty(inode); /* Change directory entry: */ inode->i_mode = 0; /* for sysv_write_inode() */ inode->i_size = 0; /* ditto */ -- 2.39.5