X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=ldiskfs%2Fkernel_patches%2Fpatches%2Fext3-wantedi-2.6-rhel4.patch;h=db4a12c6c156c19ed4e4cdbac6b86d9b7811a360;hp=b586a2fdc3557472ae67aa4d228730ddc5b54b48;hb=a56b6687b68421b032b333c1e95a45950f7b625c;hpb=113303973ec9f8484eb2355a1a6ef3c4c7fd6a56 diff --git a/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch index b586a2f..db4a12c 100644 --- a/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-wantedi-2.6-rhel4.patch @@ -1,15 +1,8 @@ - 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 +Index: linux-2.6.9/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 @@ +--- linux-2.6.9.orig/fs/ext3/ialloc.c 2007-03-13 00:47:22.000000000 +0100 ++++ linux-2.6.9/fs/ext3/ialloc.c 2007-07-26 09:23:37.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 +12,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 +54,19 @@ 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 +Index: linux-2.6.9/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 @@ +--- linux-2.6.9.orig/fs/ext3/ioctl.c 2007-03-13 00:47:22.000000000 +0100 ++++ linux-2.6.9/fs/ext3/ioctl.c 2007-07-26 09:25:24.000000000 +0200 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + + int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, +@@ -25,6 +26,31 @@ int ext3_ioctl (struct inode * inode, st ext3_debug ("cmd = %u, arg = %lu\n", cmd, arg); switch (cmd) { @@ -96,12 +97,35 @@ 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 + return put_user(flags, (int __user *) arg); +Index: linux-2.6.9/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 @@ +--- linux-2.6.9.orig/fs/ext3/namei.c 2007-03-13 00:47:27.000000000 +0100 ++++ linux-2.6.9/fs/ext3/namei.c 2007-07-26 09:23:37.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); +@@ -1633,6 +1642,20 @@ static int ext3_add_nondir(handle_t *han return err; } @@ -111,9 +135,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); +} @@ -121,7 +146,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 @@ +@@ -1658,7 +1681,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -130,7 +155,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 @@ +@@ -1692,7 +1715,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -139,7 +164,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 @@ +@@ -1728,7 +1751,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -148,7 +173,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 @@ +@@ -2133,7 +2156,7 @@ retry: if (IS_DIRSYNC(dir)) handle->h_sync = 1; @@ -157,11 +182,11 @@ 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 +Index: linux-2.6.9/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 @@ +--- linux-2.6.9.orig/include/linux/ext3_fs.h 2007-03-13 00:47:22.000000000 +0100 ++++ linux-2.6.9/include/linux/ext3_fs.h 2007-07-26 09:23:37.000000000 +0200 +@@ -741,7 +741,8 @@ extern int ext3fs_dirhash(const char *na dx_hash_info *hinfo); /* ialloc.c */ @@ -171,7 +196,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__ */