## Automatically generated incremental diff ## From: linux-2.4.28-bk1 ## To: linux-2.4.28-bk2 ## Robot: $Id: make-incremental-diff,v 1.12 2004/01/06 07:19:36 hpa Exp $ diff -urN linux-2.4.28-bk1/Makefile linux-2.4.28-bk2/Makefile --- linux-2.4.28-bk1/Makefile 2004-11-19 02:50:33.306471389 -0800 +++ linux-2.4.28-bk2/Makefile 2004-11-19 02:50:36.273592785 -0800 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 28 -EXTRAVERSION = -bk1 +EXTRAVERSION = -bk2 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -urN linux-2.4.28-bk1/drivers/cdrom/cdrom.c linux-2.4.28-bk2/drivers/cdrom/cdrom.c --- linux-2.4.28-bk1/drivers/cdrom/cdrom.c 2003-11-28 10:26:20.000000000 -0800 +++ linux-2.4.28-bk2/drivers/cdrom/cdrom.c 2004-11-19 02:50:36.275592867 -0800 @@ -2598,9 +2598,7 @@ /* Make sure that /proc/sys/dev is there */ ctl_table cdrom_root_table[] = { -#ifdef CONFIG_PROC_FS {CTL_DEV, "dev", NULL, 0, 0555, cdrom_cdrom_table}, -#endif /* CONFIG_PROC_FS */ {0} }; static struct ctl_table_header *cdrom_sysctl_header; diff -urN linux-2.4.28-bk1/fs/dquot.c linux-2.4.28-bk2/fs/dquot.c --- linux-2.4.28-bk1/fs/dquot.c 2004-08-07 16:26:05.000000000 -0700 +++ linux-2.4.28-bk2/fs/dquot.c 2004-11-19 02:50:36.384597327 -0800 @@ -794,8 +794,13 @@ mark_dquot_dirty(dquot); } +static int flag_print_warnings = 1; + static inline int need_print_warning(struct dquot *dquot, int flag) { + if (!flag_print_warnings) + return 0; + switch (dquot->dq_type) { case USRQUOTA: return current->fsuid == dquot->dq_id && !(dquot->dq_flags & flag); @@ -1498,6 +1503,7 @@ {FS_DQ_ALLOCATED, "allocated_dquots", &dqstats.allocated_dquots, sizeof(int), 0444, NULL, &proc_dointvec}, {FS_DQ_FREE, "free_dquots", &dqstats.free_dquots, sizeof(int), 0444, NULL, &proc_dointvec}, {FS_DQ_SYNCS, "syncs", &dqstats.syncs, sizeof(int), 0444, NULL, &proc_dointvec}, + {FS_DQ_WARNINGS, "warnings", &flag_print_warnings, sizeof(int), 0644, NULL, &proc_dointvec}, {}, }; diff -urN linux-2.4.28-bk1/fs/jfs/inode.c linux-2.4.28-bk2/fs/jfs/inode.c --- linux-2.4.28-bk1/fs/jfs/inode.c 2004-08-07 16:26:05.000000000 -0700 +++ linux-2.4.28-bk2/fs/jfs/inode.c 2004-11-19 02:50:36.384597327 -0800 @@ -130,8 +130,7 @@ * Don't commit if inode has been committed since last being * marked dirty, or if it has been deleted. */ - if (test_cflag(COMMIT_Nolink, inode) || - !test_cflag(COMMIT_Dirty, inode)) + if (inode->i_nlink == 0 || !test_cflag(COMMIT_Dirty, inode)) return 0; if (isReadOnly(inode)) { @@ -149,7 +148,13 @@ tid = txBegin(inode->i_sb, COMMIT_INODE); down(&JFS_IP(inode)->commit_sem); - rc = txCommit(tid, 1, &inode, wait ? COMMIT_SYNC : 0); + + /* + * Retest inode state after taking commit_sem + */ + if (inode->i_nlink && test_cflag(COMMIT_Dirty, inode)) + rc = txCommit(tid, 1, &inode, wait ? COMMIT_SYNC : 0); + txEnd(tid); up(&JFS_IP(inode)->commit_sem); return rc; diff -urN linux-2.4.28-bk1/fs/jfs/jfs_imap.c linux-2.4.28-bk2/fs/jfs/jfs_imap.c --- linux-2.4.28-bk1/fs/jfs/jfs_imap.c 2004-08-07 16:26:05.000000000 -0700 +++ linux-2.4.28-bk2/fs/jfs/jfs_imap.c 2004-11-19 02:50:36.386597409 -0800 @@ -3000,8 +3000,7 @@ goto nextiag; } hiagp = (struct iag *) hbp->data; - hiagp->inofreeback = - le32_to_cpu(iagp->iagnum); + hiagp->inofreeback = iagp->iagnum; iagp->inofreefwd = cpu_to_le32(head); iagp->inofreeback = -1; write_metapage(hbp); @@ -3075,7 +3074,7 @@ if (readSuper(sb, &bh)) return; j_sb = (struct jfs_superblock *)bh->b_data; - j_sb->s_flag |= JFS_BAD_SAIT; + j_sb->s_flag |= cpu_to_le32(JFS_BAD_SAIT); mark_buffer_dirty(bh); ll_rw_block(WRITE, 1, &bh); diff -urN linux-2.4.28-bk1/fs/jfs/jfs_logmgr.c linux-2.4.28-bk2/fs/jfs/jfs_logmgr.c --- linux-2.4.28-bk1/fs/jfs/jfs_logmgr.c 2004-08-07 16:26:05.000000000 -0700 +++ linux-2.4.28-bk2/fs/jfs/jfs_logmgr.c 2004-11-19 02:50:36.388597490 -0800 @@ -1340,6 +1340,8 @@ * unwind on error */ errout30: /* release log page */ + log->wqueue = NULL; + bp->l_wqnext = NULL; lbmFree(bp); errout20: /* release log superblock */ diff -urN linux-2.4.28-bk1/fs/jfs/jfs_mount.c linux-2.4.28-bk2/fs/jfs/jfs_mount.c --- linux-2.4.28-bk1/fs/jfs/jfs_mount.c 2004-11-17 03:54:21.000000000 -0800 +++ linux-2.4.28-bk2/fs/jfs/jfs_mount.c 2004-11-19 02:50:36.389597531 -0800 @@ -323,7 +323,7 @@ */ /* validate fs signature */ if (strncmp(j_sb->s_magic, JFS_MAGIC, 4) || - j_sb->s_version > cpu_to_le32(JFS_VERSION)) { + le32_to_cpu(j_sb->s_version) > JFS_VERSION) { rc = -EINVAL; goto out; } diff -urN linux-2.4.28-bk1/fs/jfs/jfs_xtree.c linux-2.4.28-bk2/fs/jfs/jfs_xtree.c --- linux-2.4.28-bk1/fs/jfs/jfs_xtree.c 2004-08-07 16:26:06.000000000 -0700 +++ linux-2.4.28-bk2/fs/jfs/jfs_xtree.c 2004-11-19 02:50:36.392597654 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (C) International Business Machines Corp., 2000-2003 + * Copyright (C) International Business Machines Corp., 2000-2004 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -951,7 +951,7 @@ /* is inode xtree root extension/inline EA area free ? */ if ((sp->header.flag & BT_ROOT) && (!S_ISDIR(ip->i_mode)) && - (sp->header.maxentry < cpu_to_le16(XTROOTMAXSLOT)) && + (le16_to_cpu(sp->header.maxentry) < XTROOTMAXSLOT) && (JFS_IP(ip)->mode2 & INLINEEA)) { sp->header.maxentry = cpu_to_le16(XTROOTMAXSLOT); JFS_IP(ip)->mode2 &= ~INLINEEA; @@ -1595,7 +1595,6 @@ s64 xaddr; struct tlock *tlck; struct xtlock *xtlck = 0; - int rootsplit = 0; jfs_info("xtExtend: nxoff:0x%lx nxlen:0x%x", (ulong) xoff, xlen); @@ -1651,8 +1650,6 @@ * The xtSplitUp() will insert the entry and unpin the leaf page. */ if (nextindex == le16_to_cpu(p->header.maxentry)) { - rootsplit = p->header.flag & BT_ROOT; - /* xtSpliUp() unpins leaf pages */ split.mp = mp; split.index = index + 1; @@ -1664,16 +1661,21 @@ if ((rc = xtSplitUp(tid, ip, &split, &btstack))) return rc; + /* get back old page */ + XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); + if (rc) + return rc; /* * if leaf root has been split, original root has been * copied to new child page, i.e., original entry now * resides on the new child page; */ - if (rootsplit) { + if (p->header.flag & BT_INTERNAL) { ASSERT(p->header.nextindex == cpu_to_le16(XTENTRYSTART + 1)); xad = &p->xad[XTENTRYSTART]; bn = addressXAD(xad); + XT_PUTPAGE(mp); /* get new child page */ XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); @@ -1685,11 +1687,6 @@ tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); xtlck = (struct xtlock *) & tlck->lock; } - } else { - /* get back old page */ - XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); - if (rc) - return rc; } } /* @@ -1763,7 +1760,6 @@ struct xtlock *xtlck = 0; struct tlock *mtlck; struct maplock *pxdlock; - int rootsplit = 0; /* printf("xtTailgate: nxoff:0x%lx nxlen:0x%x nxaddr:0x%lx\n", @@ -1821,8 +1817,6 @@ * The xtSplitUp() will insert the entry and unpin the leaf page. */ if (nextindex == le16_to_cpu(p->header.maxentry)) { - rootsplit = p->header.flag & BT_ROOT; - /* xtSpliUp() unpins leaf pages */ split.mp = mp; split.index = index + 1; @@ -1834,16 +1828,21 @@ if ((rc = xtSplitUp(tid, ip, &split, &btstack))) return rc; + /* get back old page */ + XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); + if (rc) + return rc; /* * if leaf root has been split, original root has been * copied to new child page, i.e., original entry now * resides on the new child page; */ - if (rootsplit) { + if (p->header.flag & BT_INTERNAL) { ASSERT(p->header.nextindex == cpu_to_le16(XTENTRYSTART + 1)); xad = &p->xad[XTENTRYSTART]; bn = addressXAD(xad); + XT_PUTPAGE(mp); /* get new child page */ XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); @@ -1855,11 +1854,6 @@ tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); xtlck = (struct xtlock *) & tlck->lock; } - } else { - /* get back old page */ - XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); - if (rc) - return rc; } } /* @@ -1949,7 +1943,7 @@ s64 nxaddr, xaddr; struct tlock *tlck; struct xtlock *xtlck = 0; - int rootsplit = 0, newpage = 0; + int newpage = 0; /* there must exist extent to be tailgated */ nxoff = offsetXAD(nxad); @@ -2156,7 +2150,6 @@ /* insert nXAD:recorded */ if (nextindex == le16_to_cpu(p->header.maxentry)) { - rootsplit = p->header.flag & BT_ROOT; /* xtSpliUp() unpins leaf pages */ split.mp = mp; @@ -2169,16 +2162,21 @@ if ((rc = xtSplitUp(tid, ip, &split, &btstack))) return rc; + /* get back old page */ + XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); + if (rc) + return rc; /* * if leaf root has been split, original root has been * copied to new child page, i.e., original entry now * resides on the new child page; */ - if (rootsplit) { + if (p->header.flag & BT_INTERNAL) { ASSERT(p->header.nextindex == cpu_to_le16(XTENTRYSTART + 1)); xad = &p->xad[XTENTRYSTART]; bn = addressXAD(xad); + XT_PUTPAGE(mp); /* get new child page */ XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); @@ -2191,11 +2189,6 @@ xtlck = (struct xtlock *) & tlck->lock; } } else { - /* get back old page */ - XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); - if (rc) - return rc; - /* is nXAD on new page ? */ if (newindex > (le16_to_cpu(p->header.maxentry) >> 1)) { @@ -2309,8 +2302,6 @@ xlen = xlen - nxlen; xaddr = xaddr + nxlen; if (nextindex == le16_to_cpu(p->header.maxentry)) { - rootsplit = p->header.flag & BT_ROOT; - /* printf("xtUpdate.updateLeft.split p:0x%p\n", p); */ @@ -2325,16 +2316,22 @@ if ((rc = xtSplitUp(tid, ip, &split, &btstack))) return rc; + /* get back old page */ + XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); + if (rc) + return rc; + /* * if leaf root has been split, original root has been * copied to new child page, i.e., original entry now * resides on the new child page; */ - if (rootsplit) { + if (p->header.flag & BT_INTERNAL) { ASSERT(p->header.nextindex == cpu_to_le16(XTENTRYSTART + 1)); xad = &p->xad[XTENTRYSTART]; bn = addressXAD(xad); + XT_PUTPAGE(mp); /* get new child page */ XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); @@ -2346,11 +2343,6 @@ tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); xtlck = (struct xtlock *) & tlck->lock; } - } else { - /* get back old page */ - XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); - if (rc) - return rc; } } else { /* if insert into middle, shift right remaining entries */ diff -urN linux-2.4.28-bk1/include/linux/sysctl.h linux-2.4.28-bk2/include/linux/sysctl.h --- linux-2.4.28-bk1/include/linux/sysctl.h 2004-08-07 16:26:06.000000000 -0700 +++ linux-2.4.28-bk2/include/linux/sysctl.h 2004-11-19 02:50:36.443599741 -0800 @@ -627,7 +627,7 @@ FS_LEASES=13, /* int: leases enabled */ FS_DIR_NOTIFY=14, /* int: directory notification enabled */ FS_LEASE_TIME=15, /* int: maximum time to wait for a lease break */ - FS_DQSTATS=16, /* dir: disc quota usage statistics */ + FS_DQSTATS=16, /* dir: disc quota usage statistics and settings */ FS_XFS=17, /* struct: control xfs parameters */ }; @@ -641,6 +641,7 @@ FS_DQ_ALLOCATED = 6, FS_DQ_FREE = 7, FS_DQ_SYNCS = 8, + FS_DQ_WARNINGS = 9, }; /* CTL_DEBUG names: */