From 31e1dbf5a16d19ac34a95f6ccd4a815e10306cef Mon Sep 17 00:00:00 2001 From: bwzhou Date: Tue, 20 May 2008 09:07:37 +0000 Subject: [PATCH] Branch b1_6 b=13285 r=adilger, deen 1. updated ext3-mballoc3-core.patch and added ext3-max-dir-size.patch to limit the maximum size of a directory; 2. updated other ldiskfs patches to resolve patch conflicts caused by the above two new patches; 3. added a test case in sanity.sh. --- .../kernel_patches/patches/ext3-max-dir-size.patch | 113 ++++++++++++++ .../patches/ext3-mballoc3-2.6.18.patch | 4 +- .../patches/ext3-mballoc3-2.6.22.patch | 4 +- .../patches/ext3-mballoc3-core.patch | 163 ++++++++++++++------- .../patches/ext3-mmp-2.6-rhel4.patch | 6 +- .../patches/ext3-mmp-2.6-sles10.patch | 6 +- .../patches/ext3-mmp-2.6.18-vanilla.patch | 6 +- .../patches/ext3-mmp-2.6.22-vanilla.patch | 6 +- .../kernel_patches/series/ldiskfs-2.6-rhel4.series | 1 + .../kernel_patches/series/ldiskfs-2.6-rhel5.series | 1 + .../series/ldiskfs-2.6-sles10.series | 1 + .../kernel_patches/series/ldiskfs-2.6-suse.series | 1 + .../series/ldiskfs-2.6.18-vanilla.series | 1 + .../series/ldiskfs-2.6.22-vanilla.series | 1 + 14 files changed, 246 insertions(+), 68 deletions(-) create mode 100644 ldiskfs/kernel_patches/patches/ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/patches/ext3-max-dir-size.patch b/ldiskfs/kernel_patches/patches/ext3-max-dir-size.patch new file mode 100644 index 0000000..e7621ef --- /dev/null +++ b/ldiskfs/kernel_patches/patches/ext3-max-dir-size.patch @@ -0,0 +1,113 @@ +diff -pur linux-2.6.9-full.mid/fs/ext3/ialloc.c linux-2.6.9-full/fs/ext3/ialloc.c +--- linux-2.6.9-full.mid/fs/ext3/ialloc.c 2008-04-16 13:49:22.000000000 +0800 ++++ linux-2.6.9-full/fs/ext3/ialloc.c 2008-04-16 15:26:40.000000000 +0800 +@@ -440,6 +440,9 @@ struct inode *ext3_new_inode(handle_t *h + if (!dir || !dir->i_nlink) + return ERR_PTR(-EPERM); + ++ if (ext3_max_dir_size > 0 && i_size_read(dir) >= ext3_max_dir_size) ++ return ERR_PTR(-EFBIG); ++ + sb = dir->i_sb; + inode = new_inode(sb); + if (!inode) +diff -pur linux-2.6.9-full.mid/fs/ext3/super.c linux-2.6.9-full/fs/ext3/super.c +--- linux-2.6.9-full.mid/fs/ext3/super.c 2008-05-06 16:07:23.000000000 +0800 ++++ linux-2.6.9-full/fs/ext3/super.c 2008-05-12 02:05:36.000000000 +0800 +@@ -2610,6 +2610,53 @@ static struct file_system_type ext3_fs_t + .fs_flags = FS_REQUIRES_DEV, + }; + ++/* ++ * max directory size tunable ++ */ ++#define EXT3_DEFAULT_MAX_DIR_SIZE 0 ++#define EXT3_MAX_DIR_SIZE_NAME "max_dir_size" ++ ++unsigned long ext3_max_dir_size; ++ ++static int ext3_max_dir_size_read(char *page, char **start, off_t off, ++ int count, int *eof, void *data) ++{ ++ int len; ++ ++ *eof = 1; ++ if (off != 0) ++ return 0; ++ ++ len = sprintf(page, "%lu\n", ext3_max_dir_size); ++ *start = page; ++ return len; ++} ++ ++static int ext3_max_dir_size_write(struct file *file, const char *buffer, ++ unsigned long count, void *data) ++{ ++ char str[32]; ++ unsigned long value; ++ char *end; ++ ++ if (count >= sizeof(str)) { ++ printk(KERN_ERR "EXT3-fs: %s string too long, max %u bytes\n", ++ EXT3_MAX_DIR_SIZE_NAME, (int)sizeof(str)); ++ return -EOVERFLOW; ++ } ++ ++ if (copy_from_user(str, buffer, count)) ++ return -EFAULT; ++ ++ value = simple_strtol(str, &end, 0); ++ if (value < 0) ++ return -ERANGE; ++ ++ ext3_max_dir_size = value; ++ return count; ++} ++ ++ + #define EXT3_ROOT "ext3" + struct proc_dir_entry *proc_root_ext3; + +@@ -2628,8 +2675,22 @@ int __init init_ext3_proc(void) + goto out_mb_proc; + } + ++ proc = create_proc_entry(EXT3_MAX_DIR_SIZE_NAME, ++ S_IFREG | S_IRUGO | S_IWUSR, proc_root_ext3); ++ if (proc == NULL) { ++ printk(KERN_ERR "EXT3-fs: Unable to create %s/%s\n", ++ EXT3_ROOT, EXT3_MAX_DIR_SIZE_NAME); ++ ret = -ENOMEM; ++ goto out_proc_root; ++ } ++ ++ proc->data = NULL; ++ proc->read_proc = ext3_max_dir_size_read; ++ proc->write_proc = ext3_max_dir_size_write; + return 0; + ++out_proc_root: ++ remove_proc_entry(EXT3_ROOT, proc_root_fs); + out_mb_proc: + exit_ext3_mb_proc(); + out: +@@ -2639,6 +2700,7 @@ out: + void exit_ext3_proc(void) + { + exit_ext3_mb_proc(); ++ remove_proc_entry(EXT3_MAX_DIR_SIZE_NAME, proc_root_ext3); + remove_proc_entry(EXT3_ROOT, proc_root_fs); + } + +diff -pur linux-2.6.9-full.mid/include/linux/ext3_fs.h linux-2.6.9-full/include/linux/ext3_fs.h +--- linux-2.6.9-full.mid/include/linux/ext3_fs.h 2008-04-16 14:02:18.000000000 +0800 ++++ linux-2.6.9-full/include/linux/ext3_fs.h 2008-04-15 00:59:38.000000000 +0800 +@@ -854,6 +854,8 @@ extern struct proc_dir_entry *proc_root_ + extern int __init init_ext3_proc(void); + extern void exit_ext3_proc(void); + ++extern unsigned long ext3_max_dir_size; ++ + extern void ext3_error (struct super_block *, const char *, const char *, ...) + __attribute__ ((format (printf, 3, 4))); + extern void __ext3_std_error (struct super_block *, const char *, int); diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch index c7854ce..bc93136 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.18.patch @@ -101,8 +101,8 @@ Index: linux-2.6.18.8/include/linux/ext3_fs.h extern void ext3_mb_release_blocks(struct super_block *, int); extern void ext3_mb_release_blocks(struct super_block *, int); extern void ext3_mb_discard_inode_preallocations(struct inode *); - extern int __init init_ext3_proc(void); - extern void exit_ext3_proc(void); + extern int __init init_ext3_mb_proc(void); + extern void exit_ext3_mb_proc(void); -extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, unsigned long, int, int *); +extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, + unsigned long, int, unsigned long *); diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.22.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.22.patch index 7ce15fe..68ca8ae 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.22.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc3-2.6.22.patch @@ -101,8 +101,8 @@ Index: linux-2.6.22.19/include/linux/ext3_fs.h extern void ext3_mb_release_blocks(struct super_block *, int); extern void ext3_mb_release_blocks(struct super_block *, int); extern void ext3_mb_discard_inode_preallocations(struct inode *); - extern int __init init_ext3_proc(void); - extern void exit_ext3_proc(void); + extern int __init init_ext3_mb_proc(void); + extern void exit_ext3_mb_proc(void); -extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, unsigned long, int, int *); +extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, + unsigned long, int, unsigned long *); diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch index f1d9bd6..ac840d0 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc3-core.patch @@ -62,13 +62,24 @@ Index: linux-2.6.9-full/include/linux/ext3_fs.h +extern void ext3_mb_release_blocks(struct super_block *, int); +extern void ext3_mb_release_blocks(struct super_block *, int); +extern void ext3_mb_discard_inode_preallocations(struct inode *); -+extern int __init init_ext3_proc(void); -+extern void exit_ext3_proc(void); ++extern int __init init_ext3_mb_proc(void); ++extern void exit_ext3_mb_proc(void); +extern void ext3_mb_free_blocks(handle_t *, struct inode *, unsigned long, unsigned long, int, int *); + /* inode.c */ extern int ext3_block_truncate_page(handle_t *, struct page *, +@@ -804,6 +850,10 @@ extern int ext3_group_extend(struct supe + unsigned long n_blocks_count); + + /* super.c */ ++extern struct proc_dir_entry *proc_root_ext3; ++extern int __init init_ext3_proc(void); ++extern void exit_ext3_proc(void); ++ + extern void ext3_error (struct super_block *, const char *, const char *, ...) + __attribute__ ((format (printf, 3, 4))); + extern void __ext3_std_error (struct super_block *, const char *, int); Index: linux-2.6.9-full/include/linux/ext3_fs_sb.h =================================================================== --- linux-2.6.9-full.orig/include/linux/ext3_fs_sb.h 2007-06-08 23:44:07.000000000 +0400 @@ -105,7 +116,7 @@ Index: linux-2.6.9-full/include/linux/ext3_fs_sb.h + int s_mb_history_cur; + int s_mb_history_max; + int s_mb_history_num; -+ struct proc_dir_entry *s_mb_proc; ++ struct proc_dir_entry *s_dev_proc; + spinlock_t s_mb_history_lock; + int s_mb_history_filter; + @@ -147,17 +158,83 @@ Index: linux-2.6.9-full/fs/ext3/super.c ext3_ext_release(sb); ext3_xattr_put_super(sb); journal_destroy(sbi->s_journal); -@@ -463,6 +464,8 @@ static struct inode *ext3_alloc_inode(st +@@ -438,6 +439,8 @@ void ext3_put_super (struct super_block + invalidate_bdev(sbi->journal_bdev, 0); + ext3_blkdev_remove(sbi); + } ++ remove_proc_entry(sb->s_id, proc_root_ext3); ++ sbi->s_dev_proc = NULL; + sb->s_fs_info = NULL; + kfree(sbi); + return; +@@ -463,6 +466,8 @@ static struct inode *ext3_alloc_inode(st ei->vfs_inode.i_version = 1; - + memset(&ei->i_cached_extent, 0, sizeof(ei->i_cached_extent)); + INIT_LIST_HEAD(&ei->i_prealloc_list); + spin_lock_init(&ei->i_prealloc_lock); return &ei->vfs_inode; } -@@ -2576,7 +2579,13 @@ static struct file_system_type ext3_fs_t +@@ -1353,6 +1358,13 @@ static int ext3_fill_super (struct super + sbi->s_mount_opt = 0; + sbi->s_resuid = EXT3_DEF_RESUID; + sbi->s_resgid = EXT3_DEF_RESGID; ++ sbi->s_dev_proc = proc_mkdir(sb->s_id, proc_root_ext3); ++ if (sbi->s_dev_proc == NULL) { ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", sb->s_id); ++ sb->s_fs_info = NULL; ++ kfree(sbi); ++ return -ENOMEM; ++ } + + blocksize = sb_min_blocksize(sb, EXT3_MIN_BLOCK_SIZE); + if (!blocksize) { +@@ -1729,6 +1741,8 @@ failed_mount: + ext3_blkdev_remove(sbi); + brelse(bh); + out_fail: ++ remove_proc_entry(sb->s_id, proc_root_ext3); ++ sbi->s_dev_proc = NULL; + sb->s_fs_info = NULL; + kfree(sbi); + return -EINVAL; +@@ -2593,9 +2607,47 @@ static struct file_system_type ext3_fs_t + .fs_flags = FS_REQUIRES_DEV, + }; ++#define EXT3_ROOT "ext3" ++struct proc_dir_entry *proc_root_ext3; ++ ++int __init init_ext3_proc(void) ++{ ++ struct proc_dir_entry *proc; ++ int ret; ++ ++ if ((ret = init_ext3_mb_proc())) ++ goto out; ++ ++ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); ++ if (proc_root_ext3 == NULL) { ++ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); ++ ret = -ENOMEM; ++ goto out_mb_proc; ++ } ++ ++ return 0; ++ ++out_mb_proc: ++ exit_ext3_mb_proc(); ++out: ++ return ret; ++} ++ ++void exit_ext3_proc(void) ++{ ++ exit_ext3_mb_proc(); ++ remove_proc_entry(EXT3_ROOT, proc_root_fs); ++} ++ static int __init init_ext3_fs(void) { - int err = init_ext3_xattr(); @@ -171,19 +248,19 @@ Index: linux-2.6.9-full/fs/ext3/super.c if (err) return err; err = init_inodecache(); -@@ -2598,6 +2607,7 @@ static void __exit exit_ext3_fs(void) +@@ -2617,6 +2669,7 @@ static void __exit exit_ext3_fs(void) unregister_filesystem(&ext3_fs_type); destroy_inodecache(); exit_ext3_xattr(); + exit_ext3_proc(); } - int ext3_prep_san_write(struct inode *inode, long *blocks, + int ext3_map_inode_page(struct inode *inode, struct page *page, Index: linux-2.6.9-full/fs/ext3/mballoc.c =================================================================== --- linux-2.6.9-full.orig/fs/ext3/mballoc.c 2007-10-17 21:59:51.072534980 +0400 +++ linux-2.6.9-full/fs/ext3/mballoc.c 2007-10-17 23:09:22.000000000 +0400 -@@ -0,0 +1,4398 @@ +@@ -0,0 +1,4380 @@ +/* + * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com + * Written by Alex Tomas @@ -642,8 +719,6 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + +#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1) + -+static struct proc_dir_entry *proc_root_ext3; -+ +int ext3_create (struct inode *, struct dentry *, int, struct nameidata *); +struct buffer_head * read_block_bitmap(struct super_block *, unsigned int); +unsigned long ext3_new_blocks_old(handle_t *handle, struct inode *inode, @@ -2358,8 +2433,8 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c +{ + struct ext3_sb_info *sbi = EXT3_SB(sb); + -+ remove_proc_entry("mb_groups", sbi->s_mb_proc); -+ remove_proc_entry("mb_history", sbi->s_mb_proc); ++ remove_proc_entry("mb_groups", sbi->s_dev_proc); ++ remove_proc_entry("mb_history", sbi->s_dev_proc); + + if (sbi->s_mb_history) + kfree(sbi->s_mb_history); @@ -2370,14 +2445,14 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + struct ext3_sb_info *sbi = EXT3_SB(sb); + int i; + -+ if (sbi->s_mb_proc != NULL) { ++ if (sbi->s_dev_proc != NULL) { + struct proc_dir_entry *p; -+ p = create_proc_entry("mb_history", S_IRUGO, sbi->s_mb_proc); ++ p = create_proc_entry("mb_history", S_IRUGO, sbi->s_dev_proc); + if (p) { + p->proc_fops = &ext3_mb_seq_history_fops; + p->data = sb; + } -+ p = create_proc_entry("mb_groups", S_IRUGO, sbi->s_mb_proc); ++ p = create_proc_entry("mb_groups", S_IRUGO, sbi->s_dev_proc); + if (p) { + p->proc_fops = &ext3_mb_seq_groups_fops; + p->data = sb; @@ -2764,7 +2839,6 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + mb_debug("freed %u blocks in %u structures\n", count, count2); +} + -+#define EXT3_ROOT "ext3" +#define EXT3_MB_STATS_NAME "stats" +#define EXT3_MB_MAX_TO_SCAN_NAME "max_to_scan" +#define EXT3_MB_MIN_TO_SCAN_NAME "min_to_scan" @@ -2972,17 +3046,13 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + +int ext3_mb_init_per_dev_proc(struct super_block *sb) +{ -+ mode_t mode = S_IFREG | S_IRUGO | S_IWUSR; + struct ext3_sb_info *sbi = EXT3_SB(sb); ++ mode_t mode = S_IFREG | S_IRUGO | S_IWUSR; + struct proc_dir_entry *proc; -+ char devname[64], *name; -+ -+ snprintf(devname, sizeof(devname) - 1, "%s", -+ bdevname(sb->s_bdev, devname)); -+ sbi->s_mb_proc = proc_mkdir(devname, proc_root_ext3); ++ char *name; + + name = EXT3_MB_STATS_NAME; -+ proc = create_proc_entry(name, mode, sbi->s_mb_proc); ++ proc = create_proc_entry(name, mode, sbi->s_dev_proc); + if (proc == NULL) + goto err_out; + proc->data = sbi; @@ -2990,7 +3060,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + proc->write_proc = ext3_mb_stats_write; + + name = EXT3_MB_MAX_TO_SCAN_NAME; -+ proc = create_proc_entry(name, mode, sbi->s_mb_proc); ++ proc = create_proc_entry(name, mode, sbi->s_dev_proc); + if (proc == NULL) + goto err_out; + proc->data = sbi; @@ -2998,7 +3068,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + proc->write_proc = ext3_mb_max_to_scan_write; + + name = EXT3_MB_MIN_TO_SCAN_NAME; -+ proc = create_proc_entry(name, mode, sbi->s_mb_proc); ++ proc = create_proc_entry(name, mode, sbi->s_dev_proc); + if (proc == NULL) + goto err_out; + proc->data = sbi; @@ -3006,7 +3076,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + proc->write_proc = ext3_mb_min_to_scan_write; + + name = EXT3_MB_ORDER2_REQ; -+ proc = create_proc_entry(name, mode, sbi->s_mb_proc); ++ proc = create_proc_entry(name, mode, sbi->s_dev_proc); + if (proc == NULL) + goto err_out; + proc->data = sbi; @@ -3014,7 +3084,7 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + proc->write_proc = ext3_mb_order2_req_write; + + name = EXT3_MB_STREAM_REQ; -+ proc = create_proc_entry(name, mode, sbi->s_mb_proc); ++ proc = create_proc_entry(name, mode, sbi->s_dev_proc); + if (proc == NULL) + goto err_out; + proc->data = sbi; @@ -3025,13 +3095,11 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + +err_out: + printk(KERN_ERR "EXT3-fs: Unable to create %s\n", name); -+ remove_proc_entry(EXT3_MB_STREAM_REQ, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_ORDER2_REQ, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_MIN_TO_SCAN_NAME, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_STATS_NAME, sbi->s_mb_proc); -+ remove_proc_entry(devname, proc_root_ext3); -+ sbi->s_mb_proc = NULL; ++ remove_proc_entry(EXT3_MB_STREAM_REQ, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_ORDER2_REQ, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_MIN_TO_SCAN_NAME, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_STATS_NAME, sbi->s_dev_proc); + + return -ENOMEM; +} @@ -3039,24 +3107,20 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c +int ext3_mb_destroy_per_dev_proc(struct super_block *sb) +{ + struct ext3_sb_info *sbi = EXT3_SB(sb); -+ char devname[64]; + -+ if (sbi->s_mb_proc == NULL) ++ if (sbi->s_dev_proc == NULL) + return -EINVAL; + -+ snprintf(devname, sizeof(devname) - 1, "%s", -+ bdevname(sb->s_bdev, devname)); -+ remove_proc_entry(EXT3_MB_STREAM_REQ, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_ORDER2_REQ, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_MIN_TO_SCAN_NAME, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, sbi->s_mb_proc); -+ remove_proc_entry(EXT3_MB_STATS_NAME, sbi->s_mb_proc); -+ remove_proc_entry(devname, proc_root_ext3); ++ remove_proc_entry(EXT3_MB_STREAM_REQ, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_ORDER2_REQ, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_MIN_TO_SCAN_NAME, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_MAX_TO_SCAN_NAME, sbi->s_dev_proc); ++ remove_proc_entry(EXT3_MB_STATS_NAME, sbi->s_dev_proc); + + return 0; +} + -+int __init init_ext3_proc(void) ++int __init init_ext3_mb_proc(void) +{ + ext3_pspace_cachep = + kmem_cache_create("ext3_prealloc_space", @@ -3065,18 +3129,13 @@ Index: linux-2.6.9-full/fs/ext3/mballoc.c + if (ext3_pspace_cachep == NULL) + return -ENOMEM; + -+ proc_root_ext3 = proc_mkdir(EXT3_ROOT, proc_root_fs); -+ if (proc_root_ext3 == NULL) -+ printk(KERN_ERR "EXT3-fs: Unable to create %s\n", EXT3_ROOT); -+ + return 0; +} + -+void exit_ext3_proc(void) ++void exit_ext3_mb_proc(void) +{ + /* XXX: synchronize_rcu(); */ + kmem_cache_destroy(ext3_pspace_cachep); -+ remove_proc_entry(EXT3_ROOT, proc_root_fs); +} + + diff --git a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch index 3a86d41..ea3b19a 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-rhel4.patch @@ -18,10 +18,10 @@ Index: linux-2.6.9/fs/ext3/super.c + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); + + remove_proc_entry(sb->s_id, proc_root_ext3); + sbi->s_dev_proc = NULL; sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -1431,6 +1436,314 @@ static unsigned long descriptor_loc(stru +@@ -1439,6 +1444,314 @@ static unsigned long descriptor_loc(stru return (first_data_block + has_super + (bg * sbi->s_blocks_per_group)); } diff --git a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch index c9637f6..04635f5 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6-sles10.patch @@ -18,10 +18,10 @@ Index: linux-2.6.16.46-0.14/fs/ext3/super.c + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); + + remove_proc_entry(sb->s_id, proc_root_ext3); + sbi->s_dev_proc = NULL; sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -1521,6 +1526,313 @@ static unsigned long descriptor_loc(stru +@@ -1529,6 +1534,313 @@ static unsigned long descriptor_loc(stru return (first_data_block + has_super + (bg * sbi->s_blocks_per_group)); } diff --git a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch index b7c4a1c..26f86b8 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.18-vanilla.patch @@ -18,10 +18,10 @@ Index: linux-2.6.18/fs/ext3/super.c + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); + + remove_proc_entry(sb->s_id, proc_root_ext3); + sbi->s_dev_proc = NULL; sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -1528,6 +1533,313 @@ static ext3_fsblk_t descriptor_loc(struc +@@ -1536,6 +1541,313 @@ static ext3_fsblk_t descriptor_loc(struc return (has_super + ext3_group_first_block_no(sb, bg)); } diff --git a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch index afb34e1..c7fd5f6 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mmp-2.6.22-vanilla.patch @@ -18,10 +18,10 @@ Index: linux-2.6.18/fs/ext3/super.c + if (sbi->s_mmp_tsk) + kthread_stop(sbi->s_mmp_tsk); + + remove_proc_entry(sb->s_id, proc_root_ext3); + sbi->s_dev_proc = NULL; sb->s_fs_info = NULL; - kfree(sbi); - return; -@@ -1528,6 +1533,313 @@ static ext3_fsblk_t descriptor_loc(struc +@@ -1536,6 +1541,313 @@ static ext3_fsblk_t descriptor_loc(struc return (has_super + ext3_group_first_block_no(sb, bg)); } diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series index de9e3e3..3d46e12 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series @@ -23,3 +23,4 @@ ext3-unlink-race.patch ext3-mmp-2.6-rhel4.patch ext3-fiemap-2.6-sles10.patch ext3-external-journal-2.6.9.patch +ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series index 48c0813..27ce713 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series @@ -19,3 +19,4 @@ ext3-unlink-race.patch ext3-fiemap-2.6.18-vanilla.patch ext3-statfs-2.6-rhel5.patch ext3-lookup-dotdot-2.6.9.patch +ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series index 32a431c..faf2196 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series @@ -23,3 +23,4 @@ ext3-mmp-2.6-sles10.patch ext3-fiemap-2.6-sles10.patch ext3-statfs-2.6-sles10.patch ext3-lookup-dotdot-2.6.9.patch +ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series index 2b89fb4..b1e5ee8 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series @@ -22,3 +22,4 @@ ext3-uninit-2.6-suse.patch ext3-nanosecond-2.6-suse.patch ext3-fiemap-stub-suse.patch ext3-external-journal-2.6.5.patch +ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series index 4b1cdf5..2af174b 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series @@ -19,3 +19,4 @@ ext3-mmp-2.6.18-vanilla.patch ext3-handle-directory-corruption-better.patch ext3-fiemap-2.6.18-vanilla.patch ext3-lookup-dotdot-2.6.9.patch +ext3-max-dir-size.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series index 4ab651d..e256a98 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series @@ -20,3 +20,4 @@ ext3-statfs-2.6.22.patch ext3-lookup-dotdot-2.6.9.patch ext3-unlink-race.patch ext3-export-journal-api.patch +ext3-max-dir-size.patch -- 1.8.3.1