## Automatically generated incremental diff
## From:   linux-2.4.21-bk29
## To:     linux-2.4.21-bk30
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.4.21-bk29/Makefile linux-2.4.21-bk30/Makefile
--- linux-2.4.21-bk29/Makefile	2003-08-09 02:54:34.000000000 -0700
+++ linux-2.4.21-bk30/Makefile	2003-08-09 02:54:40.000000000 -0700
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 21
-EXTRAVERSION = -bk29
+EXTRAVERSION = -bk30
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.21-bk29/drivers/ide/Makefile linux-2.4.21-bk30/drivers/ide/Makefile
--- linux-2.4.21-bk29/drivers/ide/Makefile	2003-08-09 02:54:36.000000000 -0700
+++ linux-2.4.21-bk30/drivers/ide/Makefile	2003-08-09 02:54:41.000000000 -0700
@@ -54,6 +54,7 @@
   obj-y		+= arm/idedriver-arm.o
 else
   ifeq ($(CONFIG_BLK_DEV_HD_ONLY),y)
+	subdir-$(CONFIG_BLK_DEV_HD_ONLY) += legacy
 	obj-y	+= legacy/idedriver-legacy.o
   endif
 endif
diff -urN linux-2.4.21-bk29/drivers/ide/pci/pdc202xx_old.c linux-2.4.21-bk30/drivers/ide/pci/pdc202xx_old.c
--- linux-2.4.21-bk29/drivers/ide/pci/pdc202xx_old.c	2003-08-09 02:54:36.000000000 -0700
+++ linux-2.4.21-bk30/drivers/ide/pci/pdc202xx_old.c	2003-08-09 02:54:41.000000000 -0700
@@ -423,9 +423,9 @@
 		if (ultra_66) {
 			/*
 			 * check to make sure drive on same channel
-			 * is u66 capable
+			 * is u66 capable. Ignore empty slots.
 			 */
-			if (hwif->drives[!(drive->dn%2)].id) {
+			if (hwif->drives[!(drive->dn%2)].present) {
 				if (hwif->drives[!(drive->dn%2)].id->dma_ultra & 0x0078) {
 					hwif->OUTB(CLKSPD | mask, (hwif->dma_master + 0x11));
 				} else {
diff -urN linux-2.4.21-bk29/drivers/ide/pci/siimage.c linux-2.4.21-bk30/drivers/ide/pci/siimage.c
--- linux-2.4.21-bk29/drivers/ide/pci/siimage.c	2003-08-09 02:54:36.000000000 -0700
+++ linux-2.4.21-bk30/drivers/ide/pci/siimage.c	2003-08-09 02:54:41.000000000 -0700
@@ -488,8 +488,6 @@
 	struct hd_driveid *id	= drive->id;
 
 	if ((id->capability & 1) != 0 && drive->autodma) {
-		if (!(hwif->atapi_dma))
-			goto fast_ata_pio;
 		/* Consult the list of known "bad" drives */
 		if (hwif->ide_dma_bad_drive(drive))
 			goto fast_ata_pio;
diff -urN linux-2.4.21-bk29/drivers/ide/pci/via82cxxx.c linux-2.4.21-bk30/drivers/ide/pci/via82cxxx.c
--- linux-2.4.21-bk29/drivers/ide/pci/via82cxxx.c	2003-06-13 07:51:33.000000000 -0700
+++ linux-2.4.21-bk30/drivers/ide/pci/via82cxxx.c	2003-08-09 02:54:41.000000000 -0700
@@ -484,7 +484,7 @@
 			for (i = 24; i >= 0; i -= 8)
 				if (((u >> i) & 0x10) ||
 				    (((u >> i) & 0x20) &&
-				     (((u >> i) & 7) < 8))) {
+				     (((u >> i) & 7) < 6))) {
 					/* BIOS 80-wire bit or
 					 * UDMA w/ < 60ns/cycle
 					 */
diff -urN linux-2.4.21-bk29/drivers/pcmcia/ti113x.h linux-2.4.21-bk30/drivers/pcmcia/ti113x.h
--- linux-2.4.21-bk29/drivers/pcmcia/ti113x.h	2003-08-09 02:54:36.000000000 -0700
+++ linux-2.4.21-bk30/drivers/pcmcia/ti113x.h	2003-08-09 02:54:42.000000000 -0700
@@ -179,7 +179,7 @@
 		u8 irqmux, devctl;
 
 		devctl = config_readb(socket, TI113X_DEVICE_CONTROL);
-		if (devctl & TI113X_DCR_IMODE_MASK != TI12XX_DCR_IMODE_ALL_SERIAL) {
+		if ((devctl & TI113X_DCR_IMODE_MASK) != TI12XX_DCR_IMODE_ALL_SERIAL) {
 			printk (KERN_INFO "ti113x: Routing card interrupts to PCI\n");
 
 			devctl &= ~TI113X_DCR_IMODE_MASK;
diff -urN linux-2.4.21-bk29/drivers/sound/i810_audio.c linux-2.4.21-bk30/drivers/sound/i810_audio.c
--- linux-2.4.21-bk29/drivers/sound/i810_audio.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/drivers/sound/i810_audio.c	2003-08-09 02:54:43.000000000 -0700
@@ -3091,10 +3091,17 @@
 		return -EIO;
 
 	if (pci_set_dma_mask(pci_dev, I810_DMA_MASK)) {
-		printk(KERN_ERR "intel810: architecture does not support"
+		printk(KERN_ERR "i810_audio: architecture does not support"
 		       " 32bit PCI busmaster DMA\n");
 		return -ENODEV;
 	}
+	
+	if( pci_resource_start(pci_dev, 1) == 0)
+	{
+		/* MMIO only ICH5 .. here be dragons .. */
+		printk(KERN_ERR "i810_audio: Pure MMIO interfaces not yet supported.\n");
+		return -ENODEV;
+	}
 
 	if ((card = kmalloc(sizeof(struct i810_card), GFP_KERNEL)) == NULL) {
 		printk(KERN_ERR "i810_audio: out of memory\n");
diff -urN linux-2.4.21-bk29/drivers/sound/via82cxxx_audio.c linux-2.4.21-bk30/drivers/sound/via82cxxx_audio.c
--- linux-2.4.21-bk29/drivers/sound/via82cxxx_audio.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/drivers/sound/via82cxxx_audio.c	2003-08-09 02:54:43.000000000 -0700
@@ -1238,7 +1238,6 @@
 		}
 	/* unknown */
 	default:
-		printk (KERN_WARNING PFX "unknown number of channels\n");
 		val = -EINVAL;
 		break;
 	}
diff -urN linux-2.4.21-bk29/fs/binfmt_elf.c linux-2.4.21-bk30/fs/binfmt_elf.c
--- linux-2.4.21-bk29/fs/binfmt_elf.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/fs/binfmt_elf.c	2003-08-09 02:54:43.000000000 -0700
@@ -480,6 +480,7 @@
 	files = current->files;		/* Refcounted so ok */
 	if(unshare_files() < 0)
 		goto out_free_ph;
+	steal_locks(files, current->files);
 
 	/* exec will make our files private anyway, but for the a.out
 	   loader stuff we need to do it earlier */
@@ -797,7 +798,6 @@
 	if (current->ptrace & PT_PTRACED)
 		send_sig(SIGTRAP, current, 0);
 	retval = 0;
-	steal_locks(files, current->files);
 out:
 	return retval;
 
@@ -813,6 +813,7 @@
 out_free_fh:
 	ftmp = current->files;
 	current->files = files;
+	steal_locks(ftmp, current->files);
 	put_files_struct(ftmp);
 out_free_ph:
 	kfree(elf_phdata);
diff -urN linux-2.4.21-bk29/fs/ext3/inode.c linux-2.4.21-bk30/fs/ext3/inode.c
--- linux-2.4.21-bk29/fs/ext3/inode.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/fs/ext3/inode.c	2003-08-09 02:54:43.000000000 -0700
@@ -2159,8 +2159,6 @@
 		inode->u.ext3_i.i_data[block] = iloc.raw_inode->i_block[block];
 	INIT_LIST_HEAD(&inode->u.ext3_i.i_orphan);
 
-	brelse (iloc.bh);
-
 	if (inode->i_ino == EXT3_ACL_IDX_INO ||
 	    inode->i_ino == EXT3_ACL_DATA_INO)
 		/* Nothing to do */ ;
@@ -2181,6 +2179,7 @@
 	} else 
 		init_special_inode(inode, inode->i_mode,
 				   le32_to_cpu(iloc.raw_inode->i_block[0]));
+	brelse(iloc.bh);
 	ext3_set_inode_flags(inode);
 	return;
 	
diff -urN linux-2.4.21-bk29/fs/inode.c linux-2.4.21-bk30/fs/inode.c
--- linux-2.4.21-bk29/fs/inode.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/fs/inode.c	2003-08-09 02:54:43.000000000 -0700
@@ -1188,12 +1188,34 @@
 {
 	if (inode->i_atime == CURRENT_TIME)
 		return;
-	if ( IS_NOATIME (inode) ) return;
-	if ( IS_NODIRATIME (inode) && S_ISDIR (inode->i_mode) ) return;
-	if ( IS_RDONLY (inode) ) return;
+	if (IS_NOATIME(inode))
+		return;
+	if (IS_NODIRATIME(inode) && S_ISDIR(inode->i_mode)) 
+		return;
+	if (IS_RDONLY(inode)) 
+		return;
 	inode->i_atime = CURRENT_TIME;
 	mark_inode_dirty_sync (inode);
-}   /*  End Function update_atime  */
+}
+
+/**
+ *	update_mctime	-	update the mtime and ctime
+ *	@inode: inode accessed
+ *
+ *	Update the modified and changed times on an inode for writes to special
+ *	files such as fifos.  No change is forced if the timestamps are already
+ *	up-to-date or if the filesystem is readonly.
+ */
+ 
+void update_mctime (struct inode *inode)
+{
+	if (inode->i_mtime == CURRENT_TIME && inode->i_ctime == CURRENT_TIME)
+		return;
+	if (IS_RDONLY(inode))
+		return;
+	inode->i_ctime = inode->i_mtime = CURRENT_TIME;
+	mark_inode_dirty (inode);
+}
 
 
 /*
diff -urN linux-2.4.21-bk29/fs/pipe.c linux-2.4.21-bk30/fs/pipe.c
--- linux-2.4.21-bk29/fs/pipe.c	2002-11-28 15:53:15.000000000 -0800
+++ linux-2.4.21-bk30/fs/pipe.c	2003-08-09 02:54:43.000000000 -0700
@@ -230,8 +230,7 @@
 	/* Signal readers asynchronously that there is more data.  */
 	wake_up_interruptible(PIPE_WAIT(*inode));
 
-	inode->i_ctime = inode->i_mtime = CURRENT_TIME;
-	mark_inode_dirty(inode);
+	update_mctime(inode);
 
 out:
 	up(PIPE_SEM(*inode));
diff -urN linux-2.4.21-bk29/fs/reiserfs/inode.c linux-2.4.21-bk30/fs/reiserfs/inode.c
--- linux-2.4.21-bk29/fs/reiserfs/inode.c	2003-08-09 02:54:37.000000000 -0700
+++ linux-2.4.21-bk30/fs/reiserfs/inode.c	2003-08-09 02:54:43.000000000 -0700
@@ -2181,6 +2181,10 @@
 			inode -> i_flags |= S_IMMUTABLE;
 		else
 			inode -> i_flags &= ~S_IMMUTABLE;
+		if( sd_attrs & REISERFS_APPEND_FL )
+			inode -> i_flags |= S_APPEND;
+		else
+			inode -> i_flags &= ~S_APPEND;
 		if( sd_attrs & REISERFS_NOATIME_FL )
 			inode -> i_flags |= S_NOATIME;
 		else
diff -urN linux-2.4.21-bk29/fs/reiserfs/ioctl.c linux-2.4.21-bk30/fs/reiserfs/ioctl.c
--- linux-2.4.21-bk29/fs/reiserfs/ioctl.c	2002-11-28 15:53:15.000000000 -0800
+++ linux-2.4.21-bk30/fs/reiserfs/ioctl.c	2003-08-09 02:54:43.000000000 -0700
@@ -51,7 +51,7 @@
 		if (get_user(flags, (int *) arg))
 			return -EFAULT;
 
-		if ( ( flags & REISERFS_IMMUTABLE_FL ) && 
+		if ( ( ( flags ^ inode->u.reiserfs_i.i_attrs) & ( REISERFS_IMMUTABLE_FL | REISERFS_APPEND_FL)) && 
 		     !capable( CAP_LINUX_IMMUTABLE ) )
 			return -EPERM;
 			
diff -urN linux-2.4.21-bk29/fs/stat.c linux-2.4.21-bk30/fs/stat.c
--- linux-2.4.21-bk29/fs/stat.c	2001-09-13 16:04:43.000000000 -0700
+++ linux-2.4.21-bk30/fs/stat.c	2003-08-09 02:54:43.000000000 -0700
@@ -37,6 +37,8 @@
 	static int warncount = 5;
 	struct __old_kernel_stat tmp;
 
+	memset(&tmp, 0, sizeof(struct __old_kernel_stat));
+	
 	if (warncount > 0) {
 		warncount--;
 		printk(KERN_WARNING "VFS: Warning: %s using old stat() call. Recompile your binary.\n",
diff -urN linux-2.4.21-bk29/include/linux/fs.h linux-2.4.21-bk30/include/linux/fs.h
--- linux-2.4.21-bk29/include/linux/fs.h	2003-08-09 02:54:38.000000000 -0700
+++ linux-2.4.21-bk30/include/linux/fs.h	2003-08-09 02:54:44.000000000 -0700
@@ -201,6 +201,7 @@
 #include <asm/byteorder.h>
 
 extern void update_atime (struct inode *);
+extern void update_mctime (struct inode *);
 #define UPDATE_ATIME(inode) update_atime (inode)
 
 extern void buffer_init(unsigned long);
diff -urN linux-2.4.21-bk29/include/linux/reiserfs_fs.h linux-2.4.21-bk30/include/linux/reiserfs_fs.h
--- linux-2.4.21-bk29/include/linux/reiserfs_fs.h	2003-08-09 02:54:38.000000000 -0700
+++ linux-2.4.21-bk30/include/linux/reiserfs_fs.h	2003-08-09 02:54:44.000000000 -0700
@@ -867,6 +867,7 @@
 /* we want common flags to have the same values as in ext2,
    so chattr(1) will work without problems */
 #define REISERFS_IMMUTABLE_FL EXT2_IMMUTABLE_FL
+#define REISERFS_APPEND_FL    EXT2_APPEND_FL
 #define REISERFS_SYNC_FL      EXT2_SYNC_FL
 #define REISERFS_NOATIME_FL   EXT2_NOATIME_FL
 #define REISERFS_NODUMP_FL    EXT2_NODUMP_FL
@@ -877,7 +878,7 @@
    Note, that is inheritable: mark directory with this and
    all new files inside will not have tails. 
 
-   Teodore Tso allocated EXT2_NODUMP_FL (0x00008000) for this. Change
+   Teodore Tso allocated EXT2_NOTAIL_FL (0x00008000) for this. Change
    numeric constant to ext2 macro when available. */
 #define REISERFS_NOTAIL_FL    (0x00008000) /* EXT2_NOTAIL_FL */
 
diff -urN linux-2.4.21-bk29/scripts/ver_linux linux-2.4.21-bk30/scripts/ver_linux
--- linux-2.4.21-bk29/scripts/ver_linux	2002-11-28 15:53:16.000000000 -0800
+++ linux-2.4.21-bk30/scripts/ver_linux	2003-08-09 02:54:44.000000000 -0700
@@ -42,6 +42,9 @@
 cardmgr -V 2>&1| grep version | awk \
 'NR==1{print "pcmcia-cs             ", $3}'
 
+quota -V 2>&1 | grep version | awk \
+'NR==1{print "quota-tools           ", $NF}'
+
 pppd --version 2>&1| grep version | awk \
 'NR==1{print "PPP                   ", $3}'
 
