X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=ldiskfs%2Fkernel_patches%2Fpatches%2Fext3-wantedi-2.6-suse.patch;h=e38bedb486c0630d363ec63f48590546d4e1282b;hb=ca61fc852e15afd6540ea7a07e3dde4dd35a4410;hp=a4867a5b260f01485ccf6cc72d4610e45aeb8bad;hpb=3de901fceee79de12a31428bcc6ba3a00f10d1fe;p=fs%2Flustre-release.git diff --git a/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-suse.patch index a4867a5..e38bedb 100644 --- a/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-suse.patch @@ -1,15 +1,7 @@ - fs/ext3/ialloc.c | 35 ++++++++++++++++++++++++++++++++++- - fs/ext3/ioctl.c | 25 +++++++++++++++++++++++++ - fs/ext3/namei.c | 21 +++++++++++++++++---- - include/linux/dcache.h | 5 +++++ - include/linux/ext3_fs.h | 5 ++++- - 5 files changed, 85 insertions(+), 6 deletions(-) - -Index: uml-2.6.3/fs/ext3/ialloc.c -=================================================================== ---- uml-2.6.3.orig/fs/ext3/ialloc.c 2004-02-20 15:00:48.000000000 +0800 -+++ uml-2.6.3/fs/ext3/ialloc.c 2004-02-21 00:24:45.202693776 +0800 -@@ -420,7 +420,8 @@ +diff -urp linux-2.6.5-7.282.orig/fs/ext3/ialloc.c linux-2.6.5-7.282/fs/ext3/ialloc.c +--- linux-2.6.5-7.282.orig/fs/ext3/ialloc.c 2006-08-30 17:12:13.000000000 +0300 ++++ linux-2.6.5-7.282/fs/ext3/ialloc.c 2007-02-16 07:43:08.000000000 +0200 +@@ -420,7 +420,8 @@ static int find_group_other(struct super * For other inodes, search forward from the parent directory's block * group to find a free inode. */ @@ -19,16 +11,19 @@ Index: uml-2.6.3/fs/ext3/ialloc.c { struct super_block *sb; struct buffer_head *bitmap_bh = NULL; -@@ -448,6 +449,38 @@ +@@ -448,6 +449,41 @@ struct inode *ext3_new_inode(handle_t *h sbi = EXT3_SB(sb); es = sbi->s_es; + if (goal) { + group = (goal - 1) / EXT3_INODES_PER_GROUP(sb); + ino = (goal - 1) % EXT3_INODES_PER_GROUP(sb); ++ err = -EIO; ++ + gdp = ext3_get_group_desc(sb, group, &bh2); ++ if (!gdp) ++ goto fail; + -+ err = -EIO; + bitmap_bh = read_inode_bitmap (sb, group); + if (!bitmap_bh) + goto fail; @@ -58,11 +53,10 @@ Index: uml-2.6.3/fs/ext3/ialloc.c if (S_ISDIR(mode)) { if (test_opt (sb, OLDALLOC)) group = find_group_dir(sb, dir); -Index: uml-2.6.3/fs/ext3/ioctl.c -=================================================================== ---- uml-2.6.3.orig/fs/ext3/ioctl.c 2004-01-09 14:59:26.000000000 +0800 -+++ uml-2.6.3/fs/ext3/ioctl.c 2004-02-21 00:21:04.541239416 +0800 -@@ -24,6 +24,31 @@ +diff -urp linux-2.6.5-7.282.orig/fs/ext3/ioctl.c linux-2.6.5-7.282/fs/ext3/ioctl.c +--- linux-2.6.5-7.282.orig/fs/ext3/ioctl.c 2006-08-30 17:12:13.000000000 +0300 ++++ linux-2.6.5-7.282/fs/ext3/ioctl.c 2007-02-16 07:43:08.000000000 +0200 +@@ -25,6 +25,31 @@ int ext3_ioctl (struct inode * inode, st ext3_debug ("cmd = %u, arg = %lu\n", cmd, arg); switch (cmd) { @@ -94,11 +88,25 @@ Index: uml-2.6.3/fs/ext3/ioctl.c case EXT3_IOC_GETFLAGS: flags = ei->i_flags & EXT3_FL_USER_VISIBLE; return put_user(flags, (int *) arg); -Index: uml-2.6.3/fs/ext3/namei.c -=================================================================== ---- uml-2.6.3.orig/fs/ext3/namei.c 2004-02-20 15:01:27.000000000 +0800 -+++ uml-2.6.3/fs/ext3/namei.c 2004-02-21 00:21:04.611228776 +0800 -@@ -1617,6 +1617,19 @@ +diff -urp linux-2.6.5-7.282.orig/fs/ext3/namei.c linux-2.6.5-7.282/fs/ext3/namei.c +--- linux-2.6.5-7.282.orig/fs/ext3/namei.c 2006-08-30 17:12:34.000000000 +0300 ++++ linux-2.6.5-7.282/fs/ext3/namei.c 2007-02-16 07:46:13.000000000 +0200 +@@ -144,6 +144,14 @@ struct dx_map_entry + u32 offs; + }; + ++#define LVFS_DENTRY_PARAM_MAGIC 20070216UL ++struct lvfs_dentry_params ++{ ++ unsigned long p_inum; ++ void *p_ptr; ++ u32 magic; ++}; ++ + #ifdef CONFIG_EXT3_INDEX + static inline unsigned dx_get_block (struct dx_entry *entry); + static void dx_set_block (struct dx_entry *entry, unsigned value); +@@ -1625,6 +1633,20 @@ static int ext3_add_nondir(handle_t *han return err; } @@ -108,9 +116,10 @@ Index: uml-2.6.3/fs/ext3/namei.c + unsigned long inum = 0; + + if (dentry->d_fsdata != NULL) { -+ struct dentry_params *param = -+ (struct dentry_params *) dentry->d_fsdata; -+ inum = param->p_inum; ++ struct lvfs_dentry_params *param = dentry->d_fsdata; ++ ++ if (param->magic == LVFS_DENTRY_PARAM_MAGIC) ++ inum = param->p_inum; + } + return ext3_new_inode(handle, dir, mode, inum); +} @@ -118,7 +127,7 @@ Index: uml-2.6.3/fs/ext3/namei.c /* * By the time this is called, we already have created * the directory cache entry for the new file, but it -@@ -1640,7 +1653,7 @@ +@@ -1649,7 +1671,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -127,7 +136,7 @@ Index: uml-2.6.3/fs/ext3/namei.c err = PTR_ERR(inode); if (!IS_ERR(inode)) { inode->i_op = &ext3_file_inode_operations; -@@ -1670,7 +1683,7 @@ +@@ -1682,7 +1704,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -136,7 +145,7 @@ Index: uml-2.6.3/fs/ext3/namei.c err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); -@@ -1702,7 +1715,7 @@ +@@ -1718,7 +1740,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -145,7 +154,7 @@ Index: uml-2.6.3/fs/ext3/namei.c err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -@@ -2094,7 +2107,7 @@ +@@ -2113,7 +2135,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -154,11 +163,10 @@ Index: uml-2.6.3/fs/ext3/namei.c err = PTR_ERR(inode); if (IS_ERR(inode)) goto out_stop; -Index: uml-2.6.3/include/linux/ext3_fs.h -=================================================================== ---- uml-2.6.3.orig/include/linux/ext3_fs.h 2004-01-09 14:59:44.000000000 +0800 -+++ uml-2.6.3/include/linux/ext3_fs.h 2004-02-21 00:21:04.613228472 +0800 -@@ -203,6 +203,7 @@ +diff -urp linux-2.6.5-7.282.orig/include/linux/ext3_fs.h linux-2.6.5-7.282/include/linux/ext3_fs.h +--- linux-2.6.5-7.282.orig/include/linux/ext3_fs.h 2006-08-30 17:12:13.000000000 +0300 ++++ linux-2.6.5-7.282/include/linux/ext3_fs.h 2007-02-16 07:43:08.000000000 +0200 +@@ -203,6 +203,7 @@ struct ext3_group_desc #define EXT3_IOC_SETFLAGS _IOW('f', 2, long) #define EXT3_IOC_GETVERSION _IOR('f', 3, long) #define EXT3_IOC_SETVERSION _IOW('f', 4, long) @@ -166,7 +174,7 @@ Index: uml-2.6.3/include/linux/ext3_fs.h #define EXT3_IOC_GETVERSION_OLD _IOR('v', 1, long) #define EXT3_IOC_SETVERSION_OLD _IOW('v', 2, long) #ifdef CONFIG_JBD_DEBUG -@@ -707,7 +708,8 @@ +@@ -712,7 +713,8 @@ extern int ext3fs_dirhash(const char *na dx_hash_info *hinfo); /* ialloc.c */ @@ -176,7 +184,7 @@ Index: uml-2.6.3/include/linux/ext3_fs.h extern void ext3_free_inode (handle_t *, struct inode *); extern struct inode * ext3_orphan_get (struct super_block *, unsigned long); extern unsigned long ext3_count_free_inodes (struct super_block *); -@@ -792,4 +794,5 @@ +@@ -797,4 +799,5 @@ extern struct inode_operations ext3_fast #endif /* __KERNEL__ */