[kernel] r11589 - in dists/trunk/linux-2.6/debian/patches: bugfix/all series

Maximilian Attems maks at alioth.debian.org
Mon Jun 9 22:11:00 UTC 2008


Author: maks
Date: Mon Jun  9 22:07:04 2008
New Revision: 11589

Log:
update to 2.6.25-rc5-git3

no new conflicts


Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git3
      - copied, changed from r11582, /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git2
Removed:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git2
Modified:
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1

Copied: dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git3 (from r11582, /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git2)
==============================================================================
--- /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git2	(original)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.26-rc5-git3	Mon Jun  9 22:07:04 2008
@@ -89,6 +89,29 @@
  
  Reading them will give you information about the state of this cpuset:
  the CPUs and Memory Nodes it can use, the processes that are using
+diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
+index 560f88d..0c5086d 100644
+--- a/Documentation/filesystems/ext4.txt
++++ b/Documentation/filesystems/ext4.txt
+@@ -139,8 +139,16 @@ commit=nrsec	(*)	Ext4 can be told to sync all its data and metadata
+ 			Setting it to very large values will improve
+ 			performance.
+ 
+-barrier=1		This enables/disables barriers.  barrier=0 disables
+-			it, barrier=1 enables it.
++barrier=<0|1(*)>	This enables/disables the use of write barriers in
++			the jbd code.  barrier=0 disables, barrier=1 enables.
++			This also requires an IO stack which can support
++			barriers, and if jbd gets an error on a barrier
++			write, it will disable again with a warning.
++			Write barriers enforce proper on-disk ordering
++			of journal commits, making volatile disk write caches
++			safe to use, at some performance penalty.  If
++			your disks are battery-backed in one way or another,
++			disabling barriers may safely improve performance.
+ 
+ orlov		(*)	This enables the new Orlov block allocator. It is
+ 			enabled by default.
 diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
 index 2075c06..0bd3274 100644
 --- a/Documentation/kernel-doc-nano-HOWTO.txt
@@ -1317,6 +1340,84 @@
  	set_c0_status(SRB_TIMOCLK);
  }
  
+diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
+index f5e0b2a..d53b84e 100644
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -221,8 +221,8 @@ image-$(CONFIG_WARP)			+= cuImage.warp
+ image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
+ 
+ # Board ports in arch/powerpc/platform/8xx/Kconfig
+-image-$(CONFIG_PPC_MPC86XADS)		+= cuImage.mpc866ads
+-image-$(CONFIG_PPC_MPC885ADS)		+= cuImage.mpc885ads
++image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
++image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
+ image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
+ image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
+ 					   dtbImage.adder875-redboot
+diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
+index 5275074..30eedfc 100644
+--- a/arch/powerpc/kernel/pci_64.c
++++ b/arch/powerpc/kernel/pci_64.c
+@@ -189,7 +189,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
+ 
+ 	dev->cfg_size = pci_cfg_space_size(dev);
+ 
+-	sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus),
++	dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(bus),
+ 		dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn));
+ 	dev->class = get_int_prop(node, "class-code", 0);
+ 	dev->revision = get_int_prop(node, "revision-id", 0);
+diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
+index faeb8f2..da7c058 100644
+--- a/arch/powerpc/kernel/signal_64.c
++++ b/arch/powerpc/kernel/signal_64.c
+@@ -87,6 +87,7 @@ static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
+ #ifdef CONFIG_ALTIVEC
+ 	elf_vrreg_t __user *v_regs = (elf_vrreg_t __user *)(((unsigned long)sc->vmx_reserve + 15) & ~0xful);
+ #endif
++	unsigned long msr = regs->msr;
+ 	long err = 0;
+ 
+ 	flush_fp_to_thread(current);
+@@ -102,7 +103,7 @@ static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
+ 		/* set MSR_VEC in the MSR value in the frame to indicate that sc->v_reg)
+ 		 * contains valid data.
+ 		 */
+-		regs->msr |= MSR_VEC;
++		msr |= MSR_VEC;
+ 	}
+ 	/* We always copy to/from vrsave, it's 0 if we don't have or don't
+ 	 * use altivec.
+@@ -114,6 +115,7 @@ static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
+ 	err |= __put_user(&sc->gp_regs, &sc->regs);
+ 	WARN_ON(!FULL_REGS(regs));
+ 	err |= __copy_to_user(&sc->gp_regs, regs, GP_REGS_SIZE);
++	err |= __put_user(msr, &sc->gp_regs[PT_MSR]);
+ 	err |= __copy_to_user(&sc->fp_regs, &current->thread.fpr, FP_REGS_SIZE);
+ 	err |= __put_user(signr, &sc->signal);
+ 	err |= __put_user(handler, &sc->handler);
+diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
+index f67e118..51f82d8 100644
+--- a/arch/powerpc/mm/mem.c
++++ b/arch/powerpc/mm/mem.c
+@@ -151,6 +151,7 @@ out:
+ 	return ret;
+ }
+ #endif /* CONFIG_MEMORY_HOTREMOVE */
++#endif /* CONFIG_MEMORY_HOTPLUG */
+ 
+ /*
+  * walk_memory_resource() needs to make sure there is no holes in a given
+@@ -184,8 +185,6 @@ walk_memory_resource(unsigned long start_pfn, unsigned long nr_pages, void *arg,
+ }
+ EXPORT_SYMBOL_GPL(walk_memory_resource);
+ 
+-#endif /* CONFIG_MEMORY_HOTPLUG */
+-
+ void show_mem(void)
+ {
+ 	unsigned long total = 0, reserved = 0;
 diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
 index 3a7054e..019657c 100644
 --- a/arch/powerpc/sysdev/fsl_soc.c
@@ -1330,6 +1431,110 @@
  };
  
  static int __init of_find_i2c_driver(struct device_node *node,
+diff --git a/arch/sh/Makefile b/arch/sh/Makefile
+index 8050b03..fb7b1b1 100644
+--- a/arch/sh/Makefile
++++ b/arch/sh/Makefile
+@@ -41,6 +41,8 @@ cflags-$(CONFIG_CPU_SH5)		:= $(call cc-option,-m5-32media-nofpu,)
+ cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= -mb
+ cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -ml
+ 
++cflags-y	+= $(call cc-option,-mno-fdpic)
++
+ #
+ # -Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that
+ # support it, while -Wa,-dsp by itself limits the range of usable opcodes
+diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
+index 566ce79..a0470f2 100644
+--- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
++++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
+@@ -16,6 +16,21 @@
+ 
+ static struct plat_sci_port sci_platform_data[] = {
+ 	{
++		.mapbase        = 0xffe00000,
++		.flags          = UPF_BOOT_AUTOCONF,
++		.type           = PORT_SCIF,
++		.irqs           = { 80, 80, 80, 80 },
++	},{
++		.mapbase        = 0xffe10000,
++		.flags          = UPF_BOOT_AUTOCONF,
++		.type           = PORT_SCIF,
++		.irqs           = { 81, 81, 81, 81 },
++	},{
++		.mapbase        = 0xffe20000,
++		.flags          = UPF_BOOT_AUTOCONF,
++		.type           = PORT_SCIF,
++		.irqs           = { 82, 82, 82, 82 },
++	},{
+ 		.mapbase	= 0xa4e30000,
+ 		.flags		= UPF_BOOT_AUTOCONF,
+ 		.type		= PORT_SCI,
+@@ -73,9 +88,35 @@ static struct platform_device rtc_device = {
+ 	.resource	= rtc_resources,
+ };
+ 
++static struct resource sh7723_usb_host_resources[] = {
++	[0] = {
++		.name	= "r8a66597_hcd",
++		.start	= 0xa4d80000,
++		.end	= 0xa4d800ff,
++		.flags	= IORESOURCE_MEM,
++	},
++	[1] = {
++		.start	= 65,
++		.end	= 65,
++		.flags	= IORESOURCE_IRQ,
++	},
++};
++
++static struct platform_device sh7723_usb_host_device = {
++	.name		= "r8a66597_hcd",
++	.id		= 0,
++	.dev = {
++		.dma_mask		= NULL,         /*  not use dma */
++		.coherent_dma_mask	= 0xffffffff,
++	},
++	.num_resources	= ARRAY_SIZE(sh7723_usb_host_resources),
++	.resource	= sh7723_usb_host_resources,
++};
++
+ static struct platform_device *sh7723_devices[] __initdata = {
+ 	&sci_device,
+ 	&rtc_device,
++	&sh7723_usb_host_device,
+ };
+ 
+ static int __init sh7723_devices_setup(void)
+diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
+index ae2b222..f189a55 100644
+--- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
++++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
+@@ -291,8 +291,9 @@ static struct intc_sense_reg irq_sense_registers[] __initdata = {
+ };
+ 
+ static DECLARE_INTC_DESC(intc_irq_desc, "sh7763-irq", irq_vectors,
+-			 NULL, NULL, irq_mask_registers, irq_prio_registers,
+-			 irq_sense_registers);
++			NULL, irq_mask_registers, irq_prio_registers,
++			irq_sense_registers);
++
+ 
+ /* External interrupt pins in IRL mode */
+ static struct intc_vect irl_vectors[] __initdata = {
+@@ -324,10 +325,10 @@ static struct intc_mask_reg irl7654_mask_registers[] __initdata = {
+ };
+ 
+ static DECLARE_INTC_DESC(intc_irl7654_desc, "sh7763-irl7654", irl_vectors,
+-			 NULL, NULL, irl7654_mask_registers, NULL, NULL);
++			NULL, irl7654_mask_registers, NULL, NULL);
+ 
+ static DECLARE_INTC_DESC(intc_irl3210_desc, "sh7763-irl3210", irl_vectors,
+-			 NULL, NULL, irl3210_mask_registers, NULL, NULL);
++			NULL, irl3210_mask_registers, NULL, NULL);
+ 
+ #define INTC_ICR0	0xffd00000
+ #define INTC_INTMSK0	0xffd00044
 diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
 index 44ad160..b58fb89 100644
 --- a/arch/um/drivers/ubd_kern.c
@@ -1641,6 +1846,19 @@
  
  /* pci-mmconfig.c */
  
+diff --git a/block/genhd.c b/block/genhd.c
+index 129ad93..b922d48 100644
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -660,6 +660,8 @@ dev_t blk_lookup_devt(const char *name, int part)
+ 
+ 	mutex_lock(&block_class_lock);
+ 	list_for_each_entry(dev, &block_class.devices, node) {
++		if (dev->type != &disk_type)
++			continue;
+ 		if (strcmp(dev->bus_id, name) == 0) {
+ 			struct gendisk *disk = dev_to_disk(dev);
+ 
 diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
 index 90d20c6..215d186 100644
 --- a/drivers/ata/libata-sff.c
@@ -4403,6 +4621,19 @@
 -MODULE_AUTHOR("Red Hat, Inc. - David Woodhouse <dwmw2 at cambridge.redhat.com>");
 +MODULE_AUTHOR("David Woodhouse <dwmw2 at infradead.org>");
  MODULE_DESCRIPTION("Parsing code for RedBoot Flash Image System (FIS) tables");
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index dd0ec9e..f4182cf 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2426,7 +2426,7 @@ config CHELSIO_T3
+ 
+ config EHEA
+ 	tristate "eHEA Ethernet support"
+-	depends on IBMEBUS && INET && SPARSEMEM && MEMORY_HOTPLUG
++	depends on IBMEBUS && INET && SPARSEMEM
+ 	select INET_LRO
+ 	---help---
+ 	  This driver supports the IBM pSeries eHEA ethernet adapter.
 diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
 index 715a444..b2ccdcb 100644
 --- a/drivers/of/of_i2c.c
@@ -4742,6 +4973,23 @@
  	unregister_chrdev(SPIDEV_MAJOR, spidev_spi.driver.name);
  }
  module_exit(spidev_exit);
+diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
+index 1ef6df3..228797e 100644
+--- a/drivers/usb/host/Kconfig
++++ b/drivers/usb/host/Kconfig
+@@ -300,8 +300,8 @@ config USB_R8A66597_HCD
+ 	  module will be called r8a66597-hcd.
+ 
+ config SUPERH_ON_CHIP_R8A66597
+-	boolean "Enable SuperH on-chip USB like the R8A66597"
+-	depends on USB_R8A66597_HCD && CPU_SUBTYPE_SH7366
++	boolean "Enable SuperH on-chip R8A66597 USB"
++	depends on USB_R8A66597_HCD && (CPU_SUBTYPE_SH7366 || CPU_SUBTYPE_SH7723)
+ 	help
+-	   Renesas SuperH processor has USB like the R8A66597.
+-	   This driver supported processor is SH7366.
++	   This driver enables support for the on-chip R8A66597 in the
++	   SH7366 and SH7723 processors.
 diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
 index 5fa8b76..97aff8d 100644
 --- a/drivers/video/console/fbcon.c
@@ -5031,6 +5279,273 @@
  	end = (__le32 *)dind->b_data + EXT3_ADDR_PER_BLOCK(sb);
  
  	/* Get each reserved primary GDT block and verify it holds backups */
+diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
+index 30494c5..9cc80b9 100644
+--- a/fs/ext4/balloc.c
++++ b/fs/ext4/balloc.c
+@@ -43,6 +43,46 @@ void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr,
+ 
+ }
+ 
++static int ext4_block_in_group(struct super_block *sb, ext4_fsblk_t block,
++			ext4_group_t block_group)
++{
++	ext4_group_t actual_group;
++	ext4_get_group_no_and_offset(sb, block, &actual_group, 0);
++	if (actual_group == block_group)
++		return 1;
++	return 0;
++}
++
++static int ext4_group_used_meta_blocks(struct super_block *sb,
++				ext4_group_t block_group)
++{
++	ext4_fsblk_t tmp;
++	struct ext4_sb_info *sbi = EXT4_SB(sb);
++	/* block bitmap, inode bitmap, and inode table blocks */
++	int used_blocks = sbi->s_itb_per_group + 2;
++
++	if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG)) {
++		struct ext4_group_desc *gdp;
++		struct buffer_head *bh;
++
++		gdp = ext4_get_group_desc(sb, block_group, &bh);
++		if (!ext4_block_in_group(sb, ext4_block_bitmap(sb, gdp),
++					block_group))
++			used_blocks--;
++
++		if (!ext4_block_in_group(sb, ext4_inode_bitmap(sb, gdp),
++					block_group))
++			used_blocks--;
++
++		tmp = ext4_inode_table(sb, gdp);
++		for (; tmp < ext4_inode_table(sb, gdp) +
++				sbi->s_itb_per_group; tmp++) {
++			if (!ext4_block_in_group(sb, tmp, block_group))
++				used_blocks -= 1;
++		}
++	}
++	return used_blocks;
++}
+ /* Initializes an uninitialized block bitmap if given, and returns the
+  * number of blocks free in the group. */
+ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
+@@ -105,20 +145,34 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
+ 	free_blocks = group_blocks - bit_max;
+ 
+ 	if (bh) {
+-		ext4_fsblk_t start;
++		ext4_fsblk_t start, tmp;
++		int flex_bg = 0;
+ 
+ 		for (bit = 0; bit < bit_max; bit++)
+ 			ext4_set_bit(bit, bh->b_data);
+ 
+ 		start = ext4_group_first_block_no(sb, block_group);
+ 
+-		/* Set bits for block and inode bitmaps, and inode table */
+-		ext4_set_bit(ext4_block_bitmap(sb, gdp) - start, bh->b_data);
+-		ext4_set_bit(ext4_inode_bitmap(sb, gdp) - start, bh->b_data);
+-		for (bit = (ext4_inode_table(sb, gdp) - start),
+-		     bit_max = bit + sbi->s_itb_per_group; bit < bit_max; bit++)
+-			ext4_set_bit(bit, bh->b_data);
++		if (EXT4_HAS_INCOMPAT_FEATURE(sb,
++					      EXT4_FEATURE_INCOMPAT_FLEX_BG))
++			flex_bg = 1;
+ 
++		/* Set bits for block and inode bitmaps, and inode table */
++		tmp = ext4_block_bitmap(sb, gdp);
++		if (!flex_bg || ext4_block_in_group(sb, tmp, block_group))
++			ext4_set_bit(tmp - start, bh->b_data);
++
++		tmp = ext4_inode_bitmap(sb, gdp);
++		if (!flex_bg || ext4_block_in_group(sb, tmp, block_group))
++			ext4_set_bit(tmp - start, bh->b_data);
++
++		tmp = ext4_inode_table(sb, gdp);
++		for (; tmp < ext4_inode_table(sb, gdp) +
++				sbi->s_itb_per_group; tmp++) {
++			if (!flex_bg ||
++				ext4_block_in_group(sb, tmp, block_group))
++				ext4_set_bit(tmp - start, bh->b_data);
++		}
+ 		/*
+ 		 * Also if the number of blocks within the group is
+ 		 * less than the blocksize * 8 ( which is the size
+@@ -126,8 +180,7 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
+ 		 */
+ 		mark_bitmap_end(group_blocks, sb->s_blocksize * 8, bh->b_data);
+ 	}
+-
+-	return free_blocks - sbi->s_itb_per_group - 2;
++	return free_blocks - ext4_group_used_meta_blocks(sb, block_group);
+ }
+ 
+ 
+diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
+index 873ad9b..c9900aa 100644
+--- a/fs/ext4/mballoc.c
++++ b/fs/ext4/mballoc.c
+@@ -2745,8 +2745,6 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
+ 	sbi = EXT4_SB(sb);
+ 	es = sbi->s_es;
+ 
+-	ext4_debug("using block group %lu(%d)\n", ac->ac_b_ex.fe_group,
+-			gdp->bg_free_blocks_count);
+ 
+ 	err = -EIO;
+ 	bitmap_bh = read_block_bitmap(sb, ac->ac_b_ex.fe_group);
+@@ -2762,6 +2760,9 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
+ 	if (!gdp)
+ 		goto out_err;
+ 
++	ext4_debug("using block group %lu(%d)\n", ac->ac_b_ex.fe_group,
++			gdp->bg_free_blocks_count);
++
+ 	err = ext4_journal_get_write_access(handle, gdp_bh);
+ 	if (err)
+ 		goto out_err;
+@@ -3094,8 +3095,7 @@ static void ext4_mb_use_inode_pa(struct ext4_allocation_context *ac,
+ static void ext4_mb_use_group_pa(struct ext4_allocation_context *ac,
+ 				struct ext4_prealloc_space *pa)
+ {
+-	unsigned len = ac->ac_o_ex.fe_len;
+-
++	unsigned int len = ac->ac_o_ex.fe_len;
+ 	ext4_get_group_no_and_offset(ac->ac_sb, pa->pa_pstart,
+ 					&ac->ac_b_ex.fe_group,
+ 					&ac->ac_b_ex.fe_start);
+diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
+index 9f086a6..9ecb92f 100644
+--- a/fs/ext4/resize.c
++++ b/fs/ext4/resize.c
+@@ -563,7 +563,8 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode,
+ 	}
+ 
+ 	blk = EXT4_SB(sb)->s_sbh->b_blocknr + 1 + EXT4_SB(sb)->s_gdb_count;
+-	data = (__le32 *)dind->b_data + EXT4_SB(sb)->s_gdb_count;
++	data = (__le32 *)dind->b_data + (EXT4_SB(sb)->s_gdb_count %
++					 EXT4_ADDR_PER_BLOCK(sb));
+ 	end = (__le32 *)dind->b_data + EXT4_ADDR_PER_BLOCK(sb);
+ 
+ 	/* Get each reserved primary GDT block and verify it holds backups */
+diff --git a/fs/ext4/super.c b/fs/ext4/super.c
+index 09d9359..cb96f12 100644
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -671,6 +671,7 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs)
+ 	unsigned long def_mount_opts;
+ 	struct super_block *sb = vfs->mnt_sb;
+ 	struct ext4_sb_info *sbi = EXT4_SB(sb);
++	journal_t *journal = sbi->s_journal;
+ 	struct ext4_super_block *es = sbi->s_es;
+ 
+ 	def_mount_opts = le32_to_cpu(es->s_default_mount_opts);
+@@ -729,8 +730,15 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs)
+ 		seq_printf(seq, ",commit=%u",
+ 			   (unsigned) (sbi->s_commit_interval / HZ));
+ 	}
+-	if (test_opt(sb, BARRIER))
+-		seq_puts(seq, ",barrier=1");
++	/*
++	 * We're changing the default of barrier mount option, so
++	 * let's always display its mount state so it's clear what its
++	 * status is.
++	 */
++	seq_puts(seq, ",barrier=");
++	seq_puts(seq, test_opt(sb, BARRIER) ? "1" : "0");
++	if (test_opt(sb, JOURNAL_ASYNC_COMMIT))
++		seq_puts(seq, ",journal_async_commit");
+ 	if (test_opt(sb, NOBH))
+ 		seq_puts(seq, ",nobh");
+ 	if (!test_opt(sb, EXTENTS))
+@@ -1907,6 +1915,7 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
+ 	sbi->s_resgid = le16_to_cpu(es->s_def_resgid);
+ 
+ 	set_opt(sbi->s_mount_opt, RESERVATION);
++	set_opt(sbi->s_mount_opt, BARRIER);
+ 
+ 	/*
+ 	 * turn on extents feature by default in ext4 filesystem
+@@ -2189,6 +2198,29 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
+ 	    EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL)) {
+ 		if (ext4_load_journal(sb, es, journal_devnum))
+ 			goto failed_mount3;
++		if (!(sb->s_flags & MS_RDONLY) &&
++		    EXT4_SB(sb)->s_journal->j_failed_commit) {
++			printk(KERN_CRIT "EXT4-fs error (device %s): "
++			       "ext4_fill_super: Journal transaction "
++			       "%u is corrupt\n", sb->s_id, 
++			       EXT4_SB(sb)->s_journal->j_failed_commit);
++			if (test_opt (sb, ERRORS_RO)) {
++				printk (KERN_CRIT
++					"Mounting filesystem read-only\n");
++				sb->s_flags |= MS_RDONLY;
++				EXT4_SB(sb)->s_mount_state |= EXT4_ERROR_FS;
++				es->s_state |= cpu_to_le16(EXT4_ERROR_FS);
++			}
++			if (test_opt(sb, ERRORS_PANIC)) {
++				EXT4_SB(sb)->s_mount_state |= EXT4_ERROR_FS;
++				es->s_state |= cpu_to_le16(EXT4_ERROR_FS);
++				ext4_commit_super(sb, es, 1);
++				printk(KERN_CRIT
++				       "EXT4-fs (device %s): mount failed\n",
++				      sb->s_id);
++				goto failed_mount4;
++			}
++		}
+ 	} else if (journal_inum) {
+ 		if (ext4_create_journal(sb, es, journal_inum))
+ 			goto failed_mount3;
+diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
+index 4d99685..a2ed72f 100644
+--- a/fs/jbd2/commit.c
++++ b/fs/jbd2/commit.c
+@@ -168,6 +168,7 @@ static int journal_submit_commit_record(journal_t *journal,
+ 		spin_unlock(&journal->j_state_lock);
+ 
+ 		/* And try again, without the barrier */
++		lock_buffer(bh);
+ 		set_buffer_uptodate(bh);
+ 		set_buffer_dirty(bh);
+ 		ret = submit_bh(WRITE, bh);
+diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
+index 5d0405a..058f50f 100644
+--- a/fs/jbd2/recovery.c
++++ b/fs/jbd2/recovery.c
+@@ -344,6 +344,7 @@ static int calc_chksums(journal_t *journal, struct buffer_head *bh,
+ 			*crc32_sum = crc32_be(*crc32_sum, (void *)obh->b_data,
+ 				     obh->b_size);
+ 		}
++		put_bh(obh);
+ 	}
+ 	return 0;
+ }
+@@ -610,9 +611,8 @@ static int do_one_pass(journal_t *journal,
+ 				chksum_err = chksum_seen = 0;
+ 
+ 				if (info->end_transaction) {
+-					printk(KERN_ERR "JBD: Transaction %u "
+-						"found to be corrupt.\n",
+-						next_commit_ID - 1);
++					journal->j_failed_commit =
++						info->end_transaction;
+ 					brelse(bh);
+ 					break;
+ 				}
+@@ -643,10 +643,8 @@ static int do_one_pass(journal_t *journal,
+ 
+ 					if (!JBD2_HAS_INCOMPAT_FEATURE(journal,
+ 					   JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)){
+-						printk(KERN_ERR
+-						       "JBD: Transaction %u "
+-						       "found to be corrupt.\n",
+-						       next_commit_ID);
++						journal->j_failed_commit =
++							next_commit_ID;
+ 						brelse(bh);
+ 						break;
+ 					}
 diff --git a/fs/libfs.c b/fs/libfs.c
 index b004dfa..892d41c 100644
 --- a/fs/libfs.c
@@ -5564,6 +6079,84 @@
  
  #ifdef CONFIG_MIGRATION
  extern int buffer_migrate_page(struct address_space *,
+diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
+index 05e2b30..d147f0f 100644
+--- a/include/linux/jbd2.h
++++ b/include/linux/jbd2.h
+@@ -919,6 +919,9 @@ struct journal_s
+ 	struct proc_dir_entry	*j_proc_entry;
+ 	struct transaction_stats_s j_stats;
+ 
++	/* Failed journal commit ID */
++	unsigned int		j_failed_commit;
++
+ 	/*
+ 	 * An opaque pointer to fs-private information.  ext3 puts its
+ 	 * superblock pointer here
+diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
+index 73e3586..ea9f5ad 100644
+--- a/include/linux/memory_hotplug.h
++++ b/include/linux/memory_hotplug.h
+@@ -77,14 +77,6 @@ extern int __add_pages(struct zone *zone, unsigned long start_pfn,
+ extern int __remove_pages(struct zone *zone, unsigned long start_pfn,
+ 	unsigned long nr_pages);
+ 
+-/*
+- * Walk through all memory which is registered as resource.
+- * arg is (start_pfn, nr_pages, private_arg_pointer)
+- */
+-extern int walk_memory_resource(unsigned long start_pfn,
+-			unsigned long nr_pages, void *arg,
+-			int (*func)(unsigned long, unsigned long, void *));
+-
+ #ifdef CONFIG_NUMA
+ extern int memory_add_physaddr_to_nid(u64 start);
+ #else
+@@ -199,6 +191,14 @@ static inline void register_page_bootmem_info_node(struct pglist_data *pgdat)
+ 
+ #endif /* ! CONFIG_MEMORY_HOTPLUG */
+ 
++/*
++ * Walk through all memory which is registered as resource.
++ * arg is (start_pfn, nr_pages, private_arg_pointer)
++ */
++extern int walk_memory_resource(unsigned long start_pfn,
++			unsigned long nr_pages, void *arg,
++			int (*func)(unsigned long, unsigned long, void *));
++
+ extern int add_memory(int nid, u64 start, u64 size);
+ extern int arch_add_memory(int nid, u64 start, u64 size);
+ extern int remove_memory(u64 start, u64 size);
+diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h
+index b03b274..81cd36b 100644
+--- a/include/linux/msdos_fs.h
++++ b/include/linux/msdos_fs.h
+@@ -57,12 +57,6 @@
+ #define MSDOS_DOT	".          "	/* ".", padded to MSDOS_NAME chars */
+ #define MSDOS_DOTDOT	"..         "	/* "..", padded to MSDOS_NAME chars */
+ 
+-/* media of boot sector */
+-static inline int fat_valid_media(u8 media)
+-{
+-	return 0xf8 <= media || media == 0xf0;
+-}
+-
+ #define FAT_FIRST_ENT(s, x)	((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : \
+ 	MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
+ 
+@@ -334,6 +328,12 @@ static inline void fatwchar_to16(__u8 *dst, const wchar_t *src, size_t len)
+ #endif
+ }
+ 
++/* media of boot sector */
++static inline int fat_valid_media(u8 media)
++{
++	return 0xf8 <= media || media == 0xf0;
++}
++
+ /* fat/cache.c */
+ extern void fat_cache_inval_inode(struct inode *inode);
+ extern int fat_get_cluster(struct inode *inode, int cluster,
 diff --git a/include/linux/msg.h b/include/linux/msg.h
 index 6f3b8e7..56abf15 100644
 --- a/include/linux/msg.h
@@ -5595,6 +6188,40 @@
   *                     Steven J. Hill <sjhill at realitydiluted.com>
   *		       Thomas Gleixner <tglx at linutronix.de>
   *
+diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
+index 590cff3..f31debf 100644
+--- a/include/linux/page-flags.h
++++ b/include/linux/page-flags.h
+@@ -306,5 +306,29 @@ static inline void __ClearPageTail(struct page *page)
+ }
+ 
+ #endif /* !PAGEFLAGS_EXTENDED */
++
++#define PAGE_FLAGS	(1 << PG_lru   | 1 << PG_private   | 1 << PG_locked | \
++			 1 << PG_buddy | 1 << PG_writeback | \
++			 1 << PG_slab  | 1 << PG_swapcache | 1 << PG_active)
++
++/*
++ * Flags checked in bad_page().  Pages on the free list should not have
++ * these flags set.  It they are, there is a problem.
++ */
++#define PAGE_FLAGS_CLEAR_WHEN_BAD (PAGE_FLAGS | 1 << PG_reclaim | 1 << PG_dirty)
++
++/*
++ * Flags checked when a page is freed.  Pages being freed should not have
++ * these flags set.  It they are, there is a problem.
++ */
++#define PAGE_FLAGS_CHECK_AT_FREE (PAGE_FLAGS | 1 << PG_reserved)
++
++/*
++ * Flags checked when a page is prepped for return by the page allocator.
++ * Pages being prepped should not have these flags set.  It they are, there
++ * is a problem.
++ */
++#define PAGE_FLAGS_CHECK_AT_PREP (PAGE_FLAGS | 1 << PG_reserved | 1 << PG_dirty)
++
+ #endif /* !__GENERATING_BOUNDS_H */
+ #endif	/* PAGE_FLAGS_H */
 diff --git a/include/linux/slab.h b/include/linux/slab.h
 index 805ed4b..c2ad350 100644
 --- a/include/linux/slab.h
@@ -5998,6 +6625,65 @@
  }
  
  /*
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 8e83f02..2f55295 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -237,16 +237,7 @@ static void bad_page(struct page *page)
+ 	printk(KERN_EMERG "Trying to fix it up, but a reboot is needed\n"
+ 		KERN_EMERG "Backtrace:\n");
+ 	dump_stack();
+-	page->flags &= ~(1 << PG_lru	|
+-			1 << PG_private |
+-			1 << PG_locked	|
+-			1 << PG_active	|
+-			1 << PG_dirty	|
+-			1 << PG_reclaim |
+-			1 << PG_slab    |
+-			1 << PG_swapcache |
+-			1 << PG_writeback |
+-			1 << PG_buddy );
++	page->flags &= ~PAGE_FLAGS_CLEAR_WHEN_BAD;
+ 	set_page_count(page, 0);
+ 	reset_page_mapcount(page);
+ 	page->mapping = NULL;
+@@ -463,16 +454,7 @@ static inline int free_pages_check(struct page *page)
+ 		(page->mapping != NULL)  |
+ 		(page_get_page_cgroup(page) != NULL) |
+ 		(page_count(page) != 0)  |
+-		(page->flags & (
+-			1 << PG_lru	|
+-			1 << PG_private |
+-			1 << PG_locked	|
+-			1 << PG_active	|
+-			1 << PG_slab	|
+-			1 << PG_swapcache |
+-			1 << PG_writeback |
+-			1 << PG_reserved |
+-			1 << PG_buddy ))))
++		(page->flags & PAGE_FLAGS_CHECK_AT_FREE)))
+ 		bad_page(page);
+ 	if (PageDirty(page))
+ 		__ClearPageDirty(page);
+@@ -616,17 +598,7 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
+ 		(page->mapping != NULL)  |
+ 		(page_get_page_cgroup(page) != NULL) |
+ 		(page_count(page) != 0)  |
+-		(page->flags & (
+-			1 << PG_lru	|
+-			1 << PG_private	|
+-			1 << PG_locked	|
+-			1 << PG_active	|
+-			1 << PG_dirty	|
+-			1 << PG_slab    |
+-			1 << PG_swapcache |
+-			1 << PG_writeback |
+-			1 << PG_reserved |
+-			1 << PG_buddy ))))
++		(page->flags & PAGE_FLAGS_CHECK_AT_PREP)))
+ 		bad_page(page);
+ 
+ 	/*
 diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c
 index 5daefad..7750c97 100644
 --- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
@@ -6764,3 +7450,15 @@
  	/*
  	 *  Init to 0x02109204 :
  	 *  Clock accuracy    = 0     (1000ppm)
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 518b7ca..b0a2a26 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -8642,6 +8642,7 @@ static struct hda_verb alc262_sony_unsol_verbs[] = {
+ 
+ 	{0x15, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
+ 	{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
++	{}
+ };
+ 
+ /* mute/unmute internal speaker according to the hp jack and mute state */

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	Mon Jun  9 22:07:04 2008
@@ -1,4 +1,4 @@
-+ bugfix/all/patch-2.6.26-rc5-git2
++ bugfix/all/patch-2.6.26-rc5-git3
 + debian/version.patch
 + debian/kernelvariables.patch
 + debian/doc-build-parallel.patch



More information about the Kernel-svn-changes mailing list