X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fkernel_patches%2Fpatches%2Fext3-wantedi-2.6-rhel4.patch;h=26d854bd60d1e90e6302f81a5ed9c68374fee16e;hp=b586a2fdc3557472ae67aa4d228730ddc5b54b48;hb=418d83a1b8d336fb9867cf8a033293975bb51161;hpb=1e4133bba894f2091e2527e2d6d33f993975f6af diff --git a/lustre/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch b/lustre/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch index b586a2f..26d854b 100644 --- a/lustre/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch +++ b/lustre/kernel_patches/patches/ext3-wantedi-2.6-rhel4.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 RH_2_6_9_42_0_3.orig/fs/ext3/ialloc.c RH_2_6_9_42_0_3/fs/ext3/ialloc.c +--- RH_2_6_9_42_0_3.orig/fs/ext3/ialloc.c 2006-10-23 13:32:46.000000000 +0300 ++++ RH_2_6_9_42_0_3/fs/ext3/ialloc.c 2007-02-16 07:22:28.000000000 +0200 +@@ -419,7 +419,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,7 +11,7 @@ Index: uml-2.6.3/fs/ext3/ialloc.c { struct super_block *sb; struct buffer_head *bitmap_bh = NULL; -@@ -448,6 +449,41 @@ +@@ -447,6 +448,41 @@ struct inode *ext3_new_inode(handle_t *h sbi = EXT3_SB(sb); es = sbi->s_es; @@ -61,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 RH_2_6_9_42_0_3.orig/fs/ext3/ioctl.c RH_2_6_9_42_0_3/fs/ext3/ioctl.c +--- RH_2_6_9_42_0_3.orig/fs/ext3/ioctl.c 2006-10-23 13:32:46.000000000 +0300 ++++ RH_2_6_9_42_0_3/fs/ext3/ioctl.c 2007-02-16 07:22:28.000000000 +0200 +@@ -25,6 +25,31 @@ int ext3_ioctl (struct inode * inode, st ext3_debug ("cmd = %u, arg = %lu\n", cmd, arg); switch (cmd) { @@ -96,12 +87,34 @@ 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 @@ + return put_user(flags, (int __user *) arg); +diff -urp RH_2_6_9_42_0_3.orig/fs/ext3/namei.c RH_2_6_9_42_0_3/fs/ext3/namei.c +--- RH_2_6_9_42_0_3.orig/fs/ext3/namei.c 2006-10-23 13:32:59.000000000 +0300 ++++ RH_2_6_9_42_0_3/fs/ext3/namei.c 2007-02-22 18:58:13.000000000 +0200 +@@ -97,6 +97,7 @@ struct dx_entry + __le32 block; + }; + ++ + /* + * dx_root_info is laid out so that if it should somehow get overlaid by a + * dirent the two low bits of the hash version will be zero. Therefore, the +@@ -141,6 +142,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); +@@ -1624,6 +1633,20 @@ static int ext3_add_nondir(handle_t *han return err; } @@ -111,9 +124,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->magc == LVFS_DENTRY_PARAM_MAGIC) ++ inum = param->p_inum; + } + return ext3_new_inode(handle, dir, mode, inum); +} @@ -121,7 +135,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 +1672,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -130,7 +144,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 @@ +@@ -1683,7 +1706,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -139,7 +153,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 @@ +@@ -1719,7 +1742,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -148,7 +162,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 @@ +@@ -2124,7 +2147,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -157,11 +171,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 -@@ -707,7 +708,8 @@ +diff -urp RH_2_6_9_42_0_3.orig/include/linux/ext3_fs.h RH_2_6_9_42_0_3/include/linux/ext3_fs.h +--- RH_2_6_9_42_0_3.orig/include/linux/ext3_fs.h 2006-10-23 13:32:46.000000000 +0300 ++++ RH_2_6_9_42_0_3/include/linux/ext3_fs.h 2007-02-16 07:22:28.000000000 +0200 +@@ -741,7 +741,8 @@ extern int ext3fs_dirhash(const char *na dx_hash_info *hinfo); /* ialloc.c */ @@ -171,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,6 @@ +@@ -833,4 +834,6 @@ extern struct inode_operations ext3_fast #endif /* __KERNEL__ */