+++ /dev/null
-From 731eb1a03a8445cde2cb23ecfb3580c6fa7bb690 Mon Sep 17 00:00:00 2001
-From: Akinobu Mita <akinobu.mita@gmail.com>
-Date: Wed, 3 Mar 2010 23:55:01 -0500
-Subject: [PATCH] ext4: consolidate in_range() definitions
-
-There are duplicate macro definitions of in_range() in mballoc.h and
-balloc.c. This consolidates these two definitions into ext4.h, and
-changes extents.c to use in_range() as well.
-
-Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
-Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
-Cc: Andreas Dilger <adilger@sun.com>
----
- fs/ext4/balloc.c | 3 ---
- fs/ext4/ext4.h | 2 ++
- fs/ext4/extents.c | 4 ++--
- fs/ext4/mballoc.h | 2 --
- 4 files changed, 4 insertions(+), 7 deletions(-)
-
-diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
-index fadbc4d..d2f37a5 100644
---- a/fs/ext4/balloc.c
-+++ b/fs/ext4/balloc.c
-@@ -188,9 +188,6 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
- * when a file system is mounted (see ext4_fill_super).
- */
-
--
--#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
--
- /**
- * ext4_get_group_desc() -- load group descriptor from disk
- * @sb: super block
-diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index 3d85bbb..9b17916 100644
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -1819,6 +1819,8 @@ static inline void set_bitmap_uptodate(struct buffer_head *bh)
- set_bit(BH_BITMAP_UPTODATE, &(bh)->b_state);
- }
-
-+#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
-+
- #endif /* __KERNEL__ */
-
- #endif /* _EXT4_H */
-diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
-index 3c0bae1..94c8ee8 100644
---- a/fs/ext4/extents.c
-+++ b/fs/ext4/extents.c
-@@ -2051,7 +2051,7 @@ ext4_ext_in_cache(struct inode *inode, ext4_lblk_t block,
-
- BUG_ON(cex->ec_type != EXT4_EXT_CACHE_GAP &&
- cex->ec_type != EXT4_EXT_CACHE_EXTENT);
-- if (block >= cex->ec_block && block < cex->ec_block + cex->ec_len) {
-+ if (in_range(block, cex->ec_block, cex->ec_len)) {
- ex->ee_block = cpu_to_le32(cex->ec_block);
- ext4_ext_store_pblock(ex, cex->ec_start);
- ex->ee_len = cpu_to_le16(cex->ec_len);
-@@ -3364,7 +3364,7 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
- */
- ee_len = ext4_ext_get_actual_len(ex);
- /* if found extent covers block, simply return it */
-- if (iblock >= ee_block && iblock < ee_block + ee_len) {
-+ if (in_range(iblock, ee_block, ee_len)) {
- newblock = iblock - ee_block + ee_start;
- /* number of remaining blocks in the extent */
- allocated = ee_len - (iblock - ee_block);
-diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
-index 9b2deed..b619322 100644
---- a/fs/ext4/mballoc.h
-+++ b/fs/ext4/mballoc.h
-@@ -220,8 +220,6 @@ struct ext4_buddy {
- #define EXT4_MB_BITMAP(e4b) ((e4b)->bd_bitmap)
- #define EXT4_MB_BUDDY(e4b) ((e4b)->bd_buddy)
-
--#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
--
- static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb,
- struct ext4_free_extent *fex)
- {
---
-1.7.2.2
-
ext4_lock_group(sb, group);
memcpy(&sg, ext4_get_group_info(sb, group), i);
ext4_unlock_group(sb, group);
- ext4_mb_release_desc(&e4b);
+ ext4_mb_unload_buddy(&e4b);
- seq_printf(seq, "#%-5u: %-5u %-5u %-5u [", group, sg.info.bb_free,
+ seq_printf(seq, "#%-5u: %-5u %-5u %-5u %-5u [", group,
===================================================================
--- linux-stage.orig/fs/ext4/mballoc.c
+++ linux-stage/fs/ext4/mballoc.c
-@@ -2009,9 +2009,13 @@ repeat:
- if (group == EXT4_SB(sb)->s_groups_count)
- group = 0;
-
-- /* quick check to skip empty groups */
-+ /* If there's no chance that this group has a better
-+ * extent, just skip it instead of seeking to read
-+ * block bitmap from disk. Initially ac_b_ex.fe_len = 0,
-+ * so this always skips groups with no free space. */
-+
- grp = ext4_get_group_info(sb, group);
-- if (grp->bb_free == 0)
-+ if (grp->bb_free <= ac->ac_b_ex.fe_len)
- continue;
-
- /*
@@ -2780,7 +2784,7 @@ int ext4_mb_init(struct super_block *sb,
sbi->s_mb_small_req = 256;
+
+#include_next <fiemap.h>
+
+--- linux/fs/ext4/move_extent.c
++++ linux/fs/ext4/move_extent.c
+@@ -483,7 +483,7 @@
+
+ o_start = o_end = oext = orig_path[depth].p_ext;
+ oext_alen = ext4_ext_get_actual_len(oext);
+- start_ext.ee_len = end_ext.ee_len = 0;
++ start_ext.ee_block = start_ext.ee_len = end_ext.ee_len = 0;
+
+ new_ext.ee_block = cpu_to_le32(*from);
+ ext4_ext_store_pblock(&new_ext, ext_pblock(dext));
/*
* The first inode we look at is the journal inode. Don't try
* root first: it may be modified in the journal!
-@@ -3003,6 +3355,8 @@ failed_mount3:
- percpu_counter_destroy(&sbi->s_freeinodes_counter);
- percpu_counter_destroy(&sbi->s_dirs_counter);
- percpu_counter_destroy(&sbi->s_dirtyblocks_counter);
+@@ -2571,6 +2913,8 @@ failed_mount3:
+ else
+ kfree(sbi->s_flex_groups);
+ }
+ if (sbi->s_mmp_tsk)
+ kthread_stop(sbi->s_mmp_tsk);
failed_mount2:
#include <linux/blockgroup_lock.h>
#include <linux/percpu_counter.h>
+#include <linux/dynlocks.h>
-
- /*
- * The fourth extended filesystem constants/structures
+ #ifdef __KERNEL__
+ #include <linux/compat.h>
+ #endif
@@ -56,7 +57,9 @@ struct ext4_inode_info {
__u32 i_flags;
- ext4_fsblk_t i_file_acl;
__u32 i_dtime;
+ ext4_fsblk_t i_file_acl;
-
+ /* following fields for parallel directory operations -bzzz */
+ struct dynlock i_htree_lock;
/* don't use group allocation for large files */
size = max(size, isize);
-- if (size >= sbi->s_mb_stream_request) {
-+ if (size >= sbi->s_mb_large_req) {
+- if (size > sbi->s_mb_stream_request) {
++ if (size > sbi->s_mb_large_req) {
ac->ac_flags |= EXT4_MB_STREAM_ALLOC;
return;
}
ext4-disable-write-bar-by-default.patch
ext4-mballoc-skip-grps.patch
ext4-disable-mb-cache-sles11.patch
-ext4-consolidate-in_range-definitions.patch
ext4-bug23780-remove-i_data_sem-from-walk_space.patch
* version 1.8.5
* Support for kernels:
2.6.16.60-0.42.8 (SLES 10),
- 2.6.32.13-0.5.1 (SLES11),
+ 2.6.32.19-0.2.1 (SLES11),
2.6.18-194.8.1.el5 (RHEL 5)
2.6.18-194.8.1.0.1.el5 (OEL 5)
* Client support for unpatched kernels:
Severity : enhancement
Bugzilla : 21610
-Description: Update SLES11 SP1 kernel to 2.6.32.13-0.5.1.
+Description: Update SLES11 SP1 kernel to 2.6.32.19-0.2.1.
Severity : normal
Bugzilla : 21174
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.13
-# Fri Aug 13 21:28:53 2010
+# Linux kernel version: 2.6.32.19
+# Fri Sep 17 16:09:11 2010
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.13
-# Fri Aug 13 21:28:53 2010
+# Linux kernel version: 2.6.32.19
+# Fri Sep 17 16:09:11 2010
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.13
-# Sat Jul 17 09:56:07 2010
+# Linux kernel version: 2.6.32.19
+# Fri Sep 17 16:15:48 2010
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.13
-# Sat Jul 17 09:56:07 2010
+# Linux kernel version: 2.6.32.19
+# Fri Sep 17 16:15:48 2010
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
lnxmaj="2.6.32"
-lnxmin=".13"
-lnxrel="0.5"
+lnxmin=".19"
+lnxrel="0.2"
# use this when there is an "RPM fix" which means that the name of the
# (source) RPM has been updated but the version of the kernel inside the
# RPM is not also updated
SUPPORTED KERNELS:
2.6-sles10 SLES10: 2.6.16.60-0.42.8
2.6-rhel5 RHEL5: 2.6.18-194.8.1.el5
-2.6-sles11 SLES11: 2.6.32.13-0.5.1
+2.6-sles11 SLES11: 2.6.32.19-0.2.1
2.6-oel5 OEL5: 2.6.18-194.8.1.0.1.el5
CLIENT SUPPORT FOR UNPATCHED KERNELS: