update to 2.6.25-rc5-git3
no new conflicts svn path=/dists/trunk/linux-2.6/; revision=11589
This commit is contained in:
parent
400d76c9a3
commit
07a6ff34cd
|
@ -89,6 +89,29 @@ index fb7b361..d803c5c 100644
|
||||||
|
|
||||||
Reading them will give you information about the state of this cpuset:
|
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
|
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
|
diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
|
||||||
index 2075c06..0bd3274 100644
|
index 2075c06..0bd3274 100644
|
||||||
--- a/Documentation/kernel-doc-nano-HOWTO.txt
|
--- a/Documentation/kernel-doc-nano-HOWTO.txt
|
||||||
|
@ -1317,6 +1340,84 @@ index 9cebc9e..8b4e854 100644
|
||||||
set_c0_status(SRB_TIMOCLK);
|
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, ¤t->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
|
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
|
||||||
index 3a7054e..019657c 100644
|
index 3a7054e..019657c 100644
|
||||||
--- a/arch/powerpc/sysdev/fsl_soc.c
|
--- a/arch/powerpc/sysdev/fsl_soc.c
|
||||||
|
@ -1330,6 +1431,110 @@ index 3a7054e..019657c 100644
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init of_find_i2c_driver(struct device_node *node,
|
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
|
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
|
||||||
index 44ad160..b58fb89 100644
|
index 44ad160..b58fb89 100644
|
||||||
--- a/arch/um/drivers/ubd_kern.c
|
--- a/arch/um/drivers/ubd_kern.c
|
||||||
|
@ -1641,6 +1846,19 @@ index f3972b1..720c4c5 100644
|
||||||
|
|
||||||
/* pci-mmconfig.c */
|
/* 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
|
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
|
||||||
index 90d20c6..215d186 100644
|
index 90d20c6..215d186 100644
|
||||||
--- a/drivers/ata/libata-sff.c
|
--- a/drivers/ata/libata-sff.c
|
||||||
|
@ -4403,6 +4621,19 @@ index 4747490..c5030f9 100644
|
||||||
-MODULE_AUTHOR("Red Hat, Inc. - David Woodhouse <dwmw2@cambridge.redhat.com>");
|
-MODULE_AUTHOR("Red Hat, Inc. - David Woodhouse <dwmw2@cambridge.redhat.com>");
|
||||||
+MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
|
+MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
|
||||||
MODULE_DESCRIPTION("Parsing code for RedBoot Flash Image System (FIS) tables");
|
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
|
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
|
||||||
index 715a444..b2ccdcb 100644
|
index 715a444..b2ccdcb 100644
|
||||||
--- a/drivers/of/of_i2c.c
|
--- a/drivers/of/of_i2c.c
|
||||||
|
@ -4742,6 +4973,23 @@ index 41620c0..799337f 100644
|
||||||
unregister_chrdev(SPIDEV_MAJOR, spidev_spi.driver.name);
|
unregister_chrdev(SPIDEV_MAJOR, spidev_spi.driver.name);
|
||||||
}
|
}
|
||||||
module_exit(spidev_exit);
|
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
|
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
|
||||||
index 5fa8b76..97aff8d 100644
|
index 5fa8b76..97aff8d 100644
|
||||||
--- a/drivers/video/console/fbcon.c
|
--- a/drivers/video/console/fbcon.c
|
||||||
|
@ -5031,6 +5279,273 @@ index 28cfd0b..77278e9 100644
|
||||||
end = (__le32 *)dind->b_data + EXT3_ADDR_PER_BLOCK(sb);
|
end = (__le32 *)dind->b_data + EXT3_ADDR_PER_BLOCK(sb);
|
||||||
|
|
||||||
/* Get each reserved primary GDT block and verify it holds backups */
|
/* 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
|
diff --git a/fs/libfs.c b/fs/libfs.c
|
||||||
index b004dfa..892d41c 100644
|
index b004dfa..892d41c 100644
|
||||||
--- a/fs/libfs.c
|
--- a/fs/libfs.c
|
||||||
|
@ -5564,6 +6079,84 @@ index f413085..d490779 100644
|
||||||
|
|
||||||
#ifdef CONFIG_MIGRATION
|
#ifdef CONFIG_MIGRATION
|
||||||
extern int buffer_migrate_page(struct address_space *,
|
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
|
diff --git a/include/linux/msg.h b/include/linux/msg.h
|
||||||
index 6f3b8e7..56abf15 100644
|
index 6f3b8e7..56abf15 100644
|
||||||
--- a/include/linux/msg.h
|
--- a/include/linux/msg.h
|
||||||
|
@ -5595,6 +6188,40 @@ index c42bc7f..53ea3dc 100644
|
||||||
* Steven J. Hill <sjhill@realitydiluted.com>
|
* Steven J. Hill <sjhill@realitydiluted.com>
|
||||||
* Thomas Gleixner <tglx@linutronix.de>
|
* Thomas Gleixner <tglx@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
|
diff --git a/include/linux/slab.h b/include/linux/slab.h
|
||||||
index 805ed4b..c2ad350 100644
|
index 805ed4b..c2ad350 100644
|
||||||
--- a/include/linux/slab.h
|
--- a/include/linux/slab.h
|
||||||
|
@ -5998,6 +6625,65 @@ index dca93fc..3abd084 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
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
|
diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c
|
||||||
index 5daefad..7750c97 100644
|
index 5daefad..7750c97 100644
|
||||||
--- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
|
--- a/net/ipv4/netfilter/nf_nat_snmp_basic.c
|
||||||
|
@ -6764,3 +7450,15 @@ index abde5b9..548c9cc 100644
|
||||||
/*
|
/*
|
||||||
* Init to 0x02109204 :
|
* Init to 0x02109204 :
|
||||||
* Clock accuracy = 0 (1000ppm)
|
* 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 */
|
|
@ -1,4 +1,4 @@
|
||||||
+ bugfix/all/patch-2.6.26-rc5-git2
|
+ bugfix/all/patch-2.6.26-rc5-git3
|
||||||
+ debian/version.patch
|
+ debian/version.patch
|
||||||
+ debian/kernelvariables.patch
|
+ debian/kernelvariables.patch
|
||||||
+ debian/doc-build-parallel.patch
|
+ debian/doc-build-parallel.patch
|
||||||
|
|
Loading…
Reference in New Issue