From: shadow Date: Thu, 22 Feb 2007 17:53:17 +0000 (+0000) Subject: remove ext3-wantedi-misc patch. X-Git-Tag: v1_7_100~305 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=418d83a1b8d336fb9867cf8a033293975bb51161 remove ext3-wantedi-misc patch. struct dentry_params renamed to lvfs_dentry_params and moved into lvfs_linux.h b=11248 r=adilger --- 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..26d854b 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,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__ */ 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 33535dc..4270094 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,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 @@ +@@ -448,6 +449,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 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) { @@ -97,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; } @@ -111,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); +} @@ -121,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; @@ -130,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; @@ -139,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; @@ -148,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; @@ -157,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) @@ -169,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 */ @@ -179,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__ */ diff --git a/lustre/include/linux/lvfs_linux.h b/lustre/include/linux/lvfs_linux.h index ab759c0..c7b0f7d 100644 --- a/lustre/include/linux/lvfs_linux.h +++ b/lustre/include/linux/lvfs_linux.h @@ -35,6 +35,15 @@ struct l_readdir_callback { struct list_head *lrc_list; }; +#define LVFS_DENTRY_PARAM_MAGIC 20070216UL +struct lvfs_dentry_params +{ + unsigned long ldp_inum; + void *ldp_ptr; + __u32 ldp_magic; +}; +#define LVFS_DENTRY_PARAMS_INIT { .ldp_magic = LVFS_DENTRY_PARAM_MAGIC } + # if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) # define BDEVNAME_DECLARE_STORAGE(foo) char foo[BDEVNAME_SIZE] # define ll_bdevname(SB, STORAGE) __bdevname(kdev_t_to_nr(SB->s_dev), STORAGE) 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__ */ diff --git a/lustre/kernel_patches/patches/ext3-wantedi-2.6-suse.patch b/lustre/kernel_patches/patches/ext3-wantedi-2.6-suse.patch index 33535dc..4270094 100644 --- a/lustre/kernel_patches/patches/ext3-wantedi-2.6-suse.patch +++ b/lustre/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,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 @@ +@@ -448,6 +449,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 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) { @@ -97,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; } @@ -111,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); +} @@ -121,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; @@ -130,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; @@ -139,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; @@ -148,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; @@ -157,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) @@ -169,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 */ @@ -179,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__ */ diff --git a/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6-suse.patch b/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6-suse.patch deleted file mode 100644 index 0f52cf6..0000000 --- a/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6-suse.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: uml-2.6.3/include/linux/dcache.h -=================================================================== ---- uml-2.6.3.orig/include/linux/dcache.h 2004-02-21 00:19:14.365988600 +0800 -+++ uml-2.6.3/include/linux/dcache.h 2004-02-21 00:21:04.612228624 +0800 -@@ -25,6 +25,11 @@ - - #define IS_ROOT(x) ((x) == (x)->d_parent) - -+struct dentry_params { -+ unsigned long p_inum; -+ void *p_ptr; -+}; -+ - /* - * "quick string" -- eases parameter passing, but more importantly - * saves "metadata" about the string (ie length and the hash). diff --git a/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6.18-vanilla.patch b/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6.18-vanilla.patch deleted file mode 100644 index 11c6ada..0000000 --- a/lustre/kernel_patches/patches/ext3-wantedi-misc-2.6.18-vanilla.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: linux-2.6/include/linux/dcache.h -=================================================================== ---- linux-2.6.orig/include/linux/dcache.h 2006-07-15 16:11:52.000000000 +0800 -+++ linux-2.6/include/linux/dcache.h 2006-07-15 16:12:04.000000000 +0800 -@@ -24,6 +24,11 @@ struct vfsmount; - - #define IS_ROOT(x) ((x) == (x)->d_parent) - -+struct dentry_params { -+ unsigned long p_inum; -+ void *p_ptr; -+}; -+ - /* - * "quick string" -- eases parameter passing, but more importantly - * saves "metadata" about the string (ie length and the hash). diff --git a/lustre/kernel_patches/patches/extN-wantedi-2.4.21-chaos.patch b/lustre/kernel_patches/patches/extN-wantedi-2.4.21-chaos.patch index 97bba05..3dba64d 100644 --- a/lustre/kernel_patches/patches/extN-wantedi-2.4.21-chaos.patch +++ b/lustre/kernel_patches/patches/extN-wantedi-2.4.21-chaos.patch @@ -1,76 +1,7 @@ - fs/ext3/ialloc.c | 40 ++++++++++++++++++++++++++++++++++++++-- - fs/ext3/inode.c | 2 +- - fs/ext3/ioctl.c | 25 +++++++++++++++++++++++++ - fs/ext3/namei.c | 21 +++++++++++++++++---- - include/linux/dcache.h | 5 +++++ - include/linux/ext3_fs.h | 5 ++++- - 6 files changed, 90 insertions(+), 8 deletions(-) - -Index: linux-2.4.21-chaos/fs/ext3/namei.c -=================================================================== ---- linux-2.4.21-chaos.orig/fs/ext3/namei.c 2003-12-12 16:18:41.000000000 +0300 -+++ linux-2.4.21-chaos/fs/ext3/namei.c 2003-12-12 16:18:53.000000000 +0300 -@@ -1534,6 +1534,19 @@ - return err; - } - -+static struct inode * ext3_new_inode_wantedi(handle_t *handle, struct inode *dir, -+ int mode, struct dentry *dentry) -+{ -+ unsigned long inum = 0; -+ -+ if (dentry->d_fsdata != NULL) { -+ struct dentry_params *param = -+ (struct dentry_params *) dentry->d_fsdata; -+ inum = param->p_inum; -+ } -+ return ext3_new_inode(handle, dir, mode, inum); -+} -+ - /* - * By the time this is called, we already have created - * the directory cache entry for the new file, but it -@@ -1557,7 +1570,7 @@ - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, mode); -+ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); - err = PTR_ERR(inode); - if (!IS_ERR(inode)) { - inode->i_op = &ext3_file_inode_operations; -@@ -1585,7 +1598,7 @@ - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, mode); -+ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); - err = PTR_ERR(inode); - if (!IS_ERR(inode)) { - init_special_inode(inode, inode->i_mode, rdev); -@@ -1618,7 +1631,7 @@ - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, S_IFDIR | mode); -+ inode = ext3_new_inode_wantedi (handle, dir, S_IFDIR | mode, dentry); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; -@@ -2012,7 +2025,7 @@ - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, S_IFLNK|S_IRWXUGO); -+ inode = ext3_new_inode_wantedi (handle, dir, S_IFLNK|S_IRWXUGO, dentry); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; -Index: linux-2.4.21-chaos/fs/ext3/ialloc.c -=================================================================== ---- linux-2.4.21-chaos.orig/fs/ext3/ialloc.c 2003-12-12 16:18:52.000000000 +0300 -+++ linux-2.4.21-chaos/fs/ext3/ialloc.c 2003-12-12 16:18:53.000000000 +0300 -@@ -330,7 +330,8 @@ +diff -urp linux-2.4.21.orig/fs/ext3/ialloc.c linux-2.4.21/fs/ext3/ialloc.c +--- linux-2.4.21.orig/fs/ext3/ialloc.c 2007-02-16 10:23:09.000000000 +0200 ++++ linux-2.4.21/fs/ext3/ialloc.c 2007-02-16 10:30:28.000000000 +0200 +@@ -330,7 +330,8 @@ int ext3_itable_block_used(struct super_ * For other inodes, search forward from the parent directory's block * group to find a free inode. */ @@ -80,7 +11,7 @@ Index: linux-2.4.21-chaos/fs/ext3/ialloc.c { struct super_block * sb; struct buffer_head * bh; -@@ -359,7 +360,41 @@ +@@ -359,7 +360,41 @@ struct inode * ext3_new_inode (handle_t init_rwsem(&ei->truncate_sem); lock_super (sb); @@ -123,7 +54,7 @@ Index: linux-2.4.21-chaos/fs/ext3/ialloc.c repeat: gdp = NULL; i = 0; -@@ -474,6 +509,7 @@ +@@ -474,6 +509,7 @@ repeat: } goto repeat; } @@ -131,11 +62,10 @@ Index: linux-2.4.21-chaos/fs/ext3/ialloc.c j += i * EXT3_INODES_PER_GROUP(sb) + 1; if (j < EXT3_FIRST_INO(sb) || j > le32_to_cpu(es->s_inodes_count)) { ext3_error (sb, "ext3_new_inode", -Index: linux-2.4.21-chaos/fs/ext3/inode.c -=================================================================== ---- linux-2.4.21-chaos.orig/fs/ext3/inode.c 2003-12-12 16:18:52.000000000 +0300 -+++ linux-2.4.21-chaos/fs/ext3/inode.c 2003-12-12 16:18:53.000000000 +0300 -@@ -2233,7 +2233,7 @@ +diff -urp linux-2.4.21.orig/fs/ext3/inode.c linux-2.4.21/fs/ext3/inode.c +--- linux-2.4.21.orig/fs/ext3/inode.c 2007-02-16 10:23:09.000000000 +0200 ++++ linux-2.4.21/fs/ext3/inode.c 2007-02-16 10:30:28.000000000 +0200 +@@ -2235,7 +2235,7 @@ void ext3_truncate_thread(struct inode * if (IS_ERR(handle)) goto out_truncate; @@ -144,11 +74,10 @@ Index: linux-2.4.21-chaos/fs/ext3/inode.c if (IS_ERR(new_inode)) { ext3_debug("truncate inode %lu directly (no new inodes)\n", old_inode->i_ino); -Index: linux-2.4.21-chaos/fs/ext3/ioctl.c -=================================================================== ---- linux-2.4.21-chaos.orig/fs/ext3/ioctl.c 2003-12-12 16:18:40.000000000 +0300 -+++ linux-2.4.21-chaos/fs/ext3/ioctl.c 2003-12-12 16:18:53.000000000 +0300 -@@ -24,6 +24,31 @@ +diff -urp linux-2.4.21.orig/fs/ext3/ioctl.c linux-2.4.21/fs/ext3/ioctl.c +--- linux-2.4.21.orig/fs/ext3/ioctl.c 2007-02-16 10:23:09.000000000 +0200 ++++ linux-2.4.21/fs/ext3/ioctl.c 2007-02-16 10:30:28.000000000 +0200 +@@ -24,6 +24,31 @@ int ext3_ioctl (struct inode * inode, st ext3_debug ("cmd = %u, arg = %lu\n", cmd, arg); switch (cmd) { @@ -180,11 +109,85 @@ Index: linux-2.4.21-chaos/fs/ext3/ioctl.c case EXT3_IOC_GETFLAGS: flags = ei->i_flags & EXT3_FL_USER_VISIBLE; return put_user(flags, (int *) arg); -Index: linux-2.4.21-chaos/include/linux/ext3_fs.h -=================================================================== ---- linux-2.4.21-chaos.orig/include/linux/ext3_fs.h 2003-12-12 16:18:52.000000000 +0300 -+++ linux-2.4.21-chaos/include/linux/ext3_fs.h 2003-12-12 16:18:53.000000000 +0300 -@@ -204,6 +204,7 @@ +diff -urp linux-2.4.21.orig/fs/ext3/namei.c linux-2.4.21/fs/ext3/namei.c +--- linux-2.4.21.orig/fs/ext3/namei.c 2007-02-16 10:23:09.000000000 +0200 ++++ linux-2.4.21/fs/ext3/namei.c 2007-02-16 10:32:17.000000000 +0200 +@@ -143,6 +143,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); +@@ -1542,6 +1550,20 @@ static int ext3_add_nondir(handle_t *han + return err; + } + ++static struct inode * ext3_new_inode_wantedi(handle_t *handle, struct inode *dir, ++ int mode, struct dentry *dentry) ++{ ++ unsigned long inum = 0; ++ ++ if (dentry->d_fsdata != NULL) { ++ 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); ++} ++ + /* + * By the time this is called, we already have created + * the directory cache entry for the new file, but it +@@ -1565,7 +1587,7 @@ static int ext3_create (struct inode * d + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, mode); ++ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); + err = PTR_ERR(inode); + if (!IS_ERR(inode)) { + inode->i_op = &ext3_file_inode_operations; +@@ -1593,7 +1615,7 @@ static int ext3_mknod (struct inode * di + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, mode); ++ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); + err = PTR_ERR(inode); + if (!IS_ERR(inode)) { + init_special_inode(inode, inode->i_mode, rdev); +@@ -1626,7 +1648,7 @@ static int ext3_mkdir(struct inode * dir + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, S_IFDIR | mode); ++ inode = ext3_new_inode_wantedi (handle, dir, S_IFDIR | mode, dentry); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; +@@ -2056,7 +2078,7 @@ static int ext3_symlink (struct inode * + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, S_IFLNK|S_IRWXUGO); ++ inode = ext3_new_inode_wantedi (handle, dir, S_IFLNK|S_IRWXUGO, dentry); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; +diff -urp linux-2.4.21.orig/include/linux/ext3_fs.h linux-2.4.21/include/linux/ext3_fs.h +--- linux-2.4.21.orig/include/linux/ext3_fs.h 2007-02-16 10:23:09.000000000 +0200 ++++ linux-2.4.21/include/linux/ext3_fs.h 2007-02-16 10:30:28.000000000 +0200 +@@ -204,6 +204,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) @@ -192,7 +195,7 @@ Index: linux-2.4.21-chaos/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 -@@ -671,7 +672,8 @@ +@@ -671,7 +672,8 @@ extern int ext3fs_dirhash(const char *na dx_hash_info *hinfo); /* ialloc.c */ @@ -202,25 +205,9 @@ Index: linux-2.4.21-chaos/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 *); -@@ -763,4 +765,5 @@ +@@ -763,4 +765,5 @@ extern struct inode_operations ext3_fast #endif /* __KERNEL__ */ +#define EXT3_IOC_CREATE_INUM _IOW('f', 5, long) #endif /* _LINUX_EXT3_FS_H */ -Index: linux-2.4.21-chaos/include/linux/dcache.h -=================================================================== ---- linux-2.4.21-chaos.orig/include/linux/dcache.h 2003-12-12 16:18:06.000000000 +0300 -+++ linux-2.4.21-chaos/include/linux/dcache.h 2003-12-12 16:18:53.000000000 +0300 -@@ -63,6 +63,11 @@ - - #define IS_ROOT(x) ((x) == (x)->d_parent) - -+struct dentry_params { -+ unsigned long p_inum; -+ void *p_ptr; -+}; -+ - /* - * "quick string" -- eases parameter passing, but more importantly - * saves "metadata" about the string (ie length and the hash). diff --git a/lustre/kernel_patches/patches/extN-wantedi.patch b/lustre/kernel_patches/patches/extN-wantedi.patch index 359dc63..e9cb3bc 100644 --- a/lustre/kernel_patches/patches/extN-wantedi.patch +++ b/lustre/kernel_patches/patches/extN-wantedi.patch @@ -1,71 +1,6 @@ - fs/ext3/ialloc.c | 40 ++++++++++++++++++++++++++++++++++++++-- - fs/ext3/inode.c | 2 +- - fs/ext3/ioctl.c | 25 +++++++++++++++++++++++++ - fs/ext3/namei.c | 21 +++++++++++++++++---- - include/linux/dcache.h | 5 +++++ - include/linux/ext3_fs.h | 5 ++++- - 6 files changed, 90 insertions(+), 8 deletions(-) - ---- linux-2.4.18-chaos-uml/fs/ext3/namei.c~extN-wantedi 2003-09-18 12:17:23.000000000 +0400 -+++ linux-2.4.18-chaos-uml-alexey/fs/ext3/namei.c 2003-09-18 12:17:26.000000000 +0400 -@@ -1531,6 +1531,19 @@ static int ext3_add_nondir(handle_t *han - return err; - } - -+static struct inode * ext3_new_inode_wantedi(handle_t *handle, struct inode *dir, -+ int mode, struct dentry *dentry) -+{ -+ unsigned long inum = 0; -+ -+ if (dentry->d_fsdata != NULL) { -+ struct dentry_params *param = -+ (struct dentry_params *) dentry->d_fsdata; -+ inum = param->p_inum; -+ } -+ return ext3_new_inode(handle, dir, mode, inum); -+} -+ - /* - * By the time this is called, we already have created - * the directory cache entry for the new file, but it -@@ -1554,7 +1567,7 @@ static int ext3_create (struct inode * d - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, mode); -+ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); - err = PTR_ERR(inode); - if (!IS_ERR(inode)) { - inode->i_op = &ext3_file_inode_operations; -@@ -1583,7 +1596,7 @@ static int ext3_mknod (struct inode * di - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, mode); -+ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); - err = PTR_ERR(inode); - if (!IS_ERR(inode)) { - init_special_inode(inode, mode, rdev); -@@ -1614,7 +1627,7 @@ static int ext3_mkdir(struct inode * dir - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, S_IFDIR | mode); -+ inode = ext3_new_inode_wantedi (handle, dir, S_IFDIR | mode, dentry); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; -@@ -2008,7 +2021,7 @@ static int ext3_symlink (struct inode * - if (IS_SYNC(dir)) - handle->h_sync = 1; - -- inode = ext3_new_inode (handle, dir, S_IFLNK|S_IRWXUGO); -+ inode = ext3_new_inode_wantedi (handle, dir, S_IFLNK|S_IRWXUGO, dentry); - err = PTR_ERR(inode); - if (IS_ERR(inode)) - goto out_stop; ---- linux-2.4.18-chaos-uml/fs/ext3/ialloc.c~extN-wantedi 2003-09-18 12:17:25.000000000 +0400 -+++ linux-2.4.18-chaos-uml-alexey/fs/ext3/ialloc.c 2003-09-18 12:17:26.000000000 +0400 +diff -urp linux-2.4.24.orig/fs/ext3/ialloc.c linux-2.4.24/fs/ext3/ialloc.c +--- linux-2.4.24.orig/fs/ext3/ialloc.c 2007-02-16 10:54:31.000000000 +0200 ++++ linux-2.4.24/fs/ext3/ialloc.c 2007-02-16 10:55:30.000000000 +0200 @@ -330,7 +330,8 @@ int ext3_itable_block_used(struct super_ * group to find a free inode. */ @@ -76,7 +11,7 @@ { struct super_block * sb; struct buffer_head * bh; -@@ -323,7 +324,41 @@ struct inode * ext3_new_inode (handle_t +@@ -355,7 +356,41 @@ struct inode * ext3_new_inode (handle_t init_rwsem(&inode->u.ext3_i.truncate_sem); lock_super (sb); @@ -119,7 +54,7 @@ repeat: gdp = NULL; i = 0; -@@ -438,6 +471,7 @@ repeat: +@@ -470,6 +505,7 @@ repeat: } goto repeat; } @@ -127,9 +62,10 @@ j += i * EXT3_INODES_PER_GROUP(sb) + 1; if (j < EXT3_FIRST_INO(sb) || j > le32_to_cpu(es->s_inodes_count)) { ext3_error (sb, "ext3_new_inode", ---- linux-2.4.18-18.8.0-l15/fs/ext3/inode.c~extN-wantedi Thu Jul 3 00:15:41 2003 -+++ linux-2.4.18-18.8.0-l15-adilger/fs/ext3/inode.c Thu Jul 3 00:17:28 2003 -@@ -2070,7 +2070,7 @@ void ext3_truncate_thread(struct inode * +diff -urp linux-2.4.24.orig/fs/ext3/inode.c linux-2.4.24/fs/ext3/inode.c +--- linux-2.4.24.orig/fs/ext3/inode.c 2007-02-16 10:54:31.000000000 +0200 ++++ linux-2.4.24/fs/ext3/inode.c 2007-02-16 10:55:30.000000000 +0200 +@@ -2605,7 +2605,7 @@ void ext3_truncate_thread(struct inode * if (IS_ERR(handle)) goto out_truncate; @@ -138,8 +74,9 @@ if (IS_ERR(new_inode)) { ext3_debug("truncate inode %lu directly (no new inodes)\n", old_inode->i_ino); ---- linux-2.4.20/fs/ext3/ioctl.c~extN-wantedi 2003-04-08 23:35:55.000000000 -0600 -+++ linux-2.4.20-braam/fs/ext3/ioctl.c 2003-04-08 23:35:55.000000000 -0600 +diff -urp linux-2.4.24.orig/fs/ext3/ioctl.c linux-2.4.24/fs/ext3/ioctl.c +--- linux-2.4.24.orig/fs/ext3/ioctl.c 2003-06-13 17:51:37.000000000 +0300 ++++ linux-2.4.24/fs/ext3/ioctl.c 2007-02-16 10:55:30.000000000 +0200 @@ -23,6 +23,31 @@ int ext3_ioctl (struct inode * inode, st ext3_debug ("cmd = %u, arg = %lu\n", cmd, arg); @@ -172,9 +109,85 @@ case EXT3_IOC_GETFLAGS: flags = inode->u.ext3_i.i_flags & EXT3_FL_USER_VISIBLE; return put_user(flags, (int *) arg); ---- linux-2.4.20/include/linux/ext3_fs.h~extN-wantedi 2003-04-08 23:35:55.000000000 -0600 -+++ linux-2.4.20-braam/include/linux/ext3_fs.h 2003-04-08 23:35:55.000000000 -0600 -@@ -201,6 +201,7 @@ struct ext3_group_desc +diff -urp linux-2.4.24.orig/fs/ext3/namei.c linux-2.4.24/fs/ext3/namei.c +--- linux-2.4.24.orig/fs/ext3/namei.c 2007-02-16 10:54:31.000000000 +0200 ++++ linux-2.4.24/fs/ext3/namei.c 2007-02-16 10:56:22.000000000 +0200 +@@ -142,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); +@@ -1541,6 +1549,20 @@ static int ext3_add_nondir(handle_t *han + return err; + } + ++static struct inode * ext3_new_inode_wantedi(handle_t *handle, struct inode *dir, ++ int mode, struct dentry *dentry) ++{ ++ unsigned long inum = 0; ++ ++ if (dentry->d_fsdata != NULL) { ++ 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); ++} ++ + /* + * By the time this is called, we already have created + * the directory cache entry for the new file, but it +@@ -1564,7 +1586,7 @@ static int ext3_create (struct inode * d + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, mode); ++ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); + err = PTR_ERR(inode); + if (!IS_ERR(inode)) { + inode->i_op = &ext3_file_inode_operations; +@@ -1592,7 +1614,7 @@ static int ext3_mknod (struct inode * di + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, mode); ++ inode = ext3_new_inode_wantedi (handle, dir, mode, dentry); + err = PTR_ERR(inode); + if (!IS_ERR(inode)) { + init_special_inode(inode, mode, rdev); +@@ -1622,7 +1644,7 @@ static int ext3_mkdir(struct inode * dir + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, S_IFDIR | mode); ++ inode = ext3_new_inode_wantedi (handle, dir, S_IFDIR | mode, dentry); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; +@@ -2053,7 +2075,7 @@ static int ext3_symlink (struct inode * + if (IS_SYNC(dir)) + handle->h_sync = 1; + +- inode = ext3_new_inode (handle, dir, S_IFLNK|S_IRWXUGO); ++ inode = ext3_new_inode_wantedi (handle, dir, S_IFLNK|S_IRWXUGO, dentry); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_stop; +diff -urp linux-2.4.24.orig/include/linux/ext3_fs.h linux-2.4.24/include/linux/ext3_fs.h +--- linux-2.4.24.orig/include/linux/ext3_fs.h 2007-02-16 10:54:31.000000000 +0200 ++++ linux-2.4.24/include/linux/ext3_fs.h 2007-02-16 10:55:30.000000000 +0200 +@@ -202,6 +202,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) @@ -182,7 +195,7 @@ #define EXT3_IOC_GETVERSION_OLD _IOR('v', 1, long) #define EXT3_IOC_SETVERSION_OLD _IOW('v', 2, long) #ifdef CONFIG_JBD_DEBUG -@@ -671,7 +672,8 @@ extern int ext3fs_dirhash(const char *na +@@ -674,7 +675,8 @@ extern int ext3fs_dirhash(const char *na dx_hash_info *hinfo); /* ialloc.c */ @@ -192,25 +205,9 @@ 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 *); -@@ -776,4 +778,5 @@ extern struct inode_operations ext3_fast +@@ -766,4 +768,5 @@ extern struct inode_operations ext3_fast #endif /* __KERNEL__ */ +#define EXT3_IOC_CREATE_INUM _IOW('f', 5, long) #endif /* _LINUX_EXT3_FS_H */ ---- linux-2.4.18-chaos-uml/include/linux/dcache.h~extN-wantedi 2003-09-18 12:17:17.000000000 +0400 -+++ linux-2.4.18-chaos-uml-alexey/include/linux/dcache.h 2003-09-18 12:18:47.000000000 +0400 -@@ -62,6 +62,11 @@ static inline void intent_init(struct lo - - #define IS_ROOT(x) ((x) == (x)->d_parent) - -+struct dentry_params { -+ unsigned long p_inum; -+ void *p_ptr; -+}; -+ - /* - * "quick string" -- eases parameter passing, but more importantly - * saves "metadata" about the string (ie length and the hash). - -_ diff --git a/lustre/kernel_patches/series/2.6-rhel4-titech.series b/lustre/kernel_patches/series/2.6-rhel4-titech.series index 5bc0c82..dcd971d 100644 --- a/lustre/kernel_patches/series/2.6-rhel4-titech.series +++ b/lustre/kernel_patches/series/2.6-rhel4-titech.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6-rhel4.patch vfs_nointent-2.6-rhel4.patch vfs_races-2.6-rhel4.patch -ext3-wantedi-misc-2.6-suse.patch nfs-cifs-intent-2.6-rhel4.patch iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch diff --git a/lustre/kernel_patches/series/2.6-rhel4.series b/lustre/kernel_patches/series/2.6-rhel4.series index f46e418..cbd7cd6 100644 --- a/lustre/kernel_patches/series/2.6-rhel4.series +++ b/lustre/kernel_patches/series/2.6-rhel4.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6-rhel4.patch vfs_nointent-2.6-rhel4.patch vfs_races-2.6-rhel4.patch -ext3-wantedi-misc-2.6-suse.patch nfs-cifs-intent-2.6-rhel4.patch iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch diff --git a/lustre/kernel_patches/series/2.6-sles10.series b/lustre/kernel_patches/series/2.6-sles10.series index 03fa486..5e1cd88 100644 --- a/lustre/kernel_patches/series/2.6-sles10.series +++ b/lustre/kernel_patches/series/2.6-sles10.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6-sles10.patch vfs_nointent-2.6-sles10.patch vfs_races-2.6.18-vanilla.patch -ext3-wantedi-misc-2.6-suse.patch jbd-2.6.10-jcberr.patch nfs-cifs-intent-2.6-fc5.patch iopen-misc-2.6.12.patch diff --git a/lustre/kernel_patches/series/2.6-suse.series b/lustre/kernel_patches/series/2.6-suse.series index 7a39b32..8bc1f6e 100644 --- a/lustre/kernel_patches/series/2.6-suse.series +++ b/lustre/kernel_patches/series/2.6-suse.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6-suse.patch vfs_nointent-2.6-suse.patch vfs_races-2.6-suse.patch -ext3-wantedi-misc-2.6-suse.patch nfs-cifs-intent-2.6-suse.patch iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch diff --git a/lustre/kernel_patches/series/2.6.12-vanilla.series b/lustre/kernel_patches/series/2.6.12-vanilla.series index b0bfae0..05bf944 100644 --- a/lustre/kernel_patches/series/2.6.12-vanilla.series +++ b/lustre/kernel_patches/series/2.6.12-vanilla.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6.12.patch vfs_nointent-2.6.12.patch vfs_races-2.6.12.patch -ext3-wantedi-misc-2.6-suse.patch jbd-2.6.10-jcberr.patch nfs-cifs-intent-2.6.12.patch iopen-misc-2.6.12.patch diff --git a/lustre/kernel_patches/series/2.6.18-vanilla.series b/lustre/kernel_patches/series/2.6.18-vanilla.series index 64a1e82..4ab043d 100644 --- a/lustre/kernel_patches/series/2.6.18-vanilla.series +++ b/lustre/kernel_patches/series/2.6.18-vanilla.series @@ -2,7 +2,6 @@ lustre_version.patch vfs_intent-2.6.18-vanilla.patch vfs_nointent-2.6.18-vanilla.patch vfs_races-2.6.18-vanilla.patch -ext3-wantedi-misc-2.6.18-vanilla.patch jbd-jcberr-2.6.18-vanilla.patch iopen-misc-2.6.18-vanilla.patch export-truncate-2.6.18-vanilla.patch diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c index 6a886a2..d12865b 100644 --- a/lustre/mds/mds_open.c +++ b/lustre/mds/mds_open.c @@ -869,7 +869,7 @@ int mds_open(struct mds_update_record *rec, int offset, int rc = 0, cleanup_phase = 0, acc_mode, created = 0; int parent_mode = LCK_CR; void *handle = NULL; - struct dentry_params dp; + struct lvfs_dentry_params dp = LVFS_DENTRY_PARAMS_INIT; unsigned int qcids[MAXQUOTAS] = { current->fsuid, current->fsgid }; unsigned int qpids[MAXQUOTAS] = { 0, 0 }; int child_mode = LCK_CR; @@ -1020,8 +1020,8 @@ int mds_open(struct mds_update_record *rec, int offset, GOTO(cleanup, rc); } dchild->d_fsdata = (void *) &dp; - dp.p_ptr = req; - dp.p_inum = ino; + dp.ldp_ptr = req; + dp.ldp_inum = ino; rc = ll_vfs_create(dparent->d_inode, dchild, rec->ur_mode,NULL); if (dchild->d_fsdata == (void *)(unsigned long)ino) @@ -1242,7 +1242,7 @@ int mds_mfd_close(struct ptlrpc_request *req, int offset, struct inode *pending_dir = mds->mds_pending_dir->d_inode; void *handle = NULL; struct mds_body *request_body = NULL, *reply_body = NULL; - struct dentry_params dp; + struct lvfs_dentry_params dp = LVFS_DENTRY_PARAMS_INIT; struct iattr iattr = { 0 }; ENTRY; @@ -1319,8 +1319,8 @@ int mds_mfd_close(struct ptlrpc_request *req, int offset, *valid |= OBD_MD_FLCOOKIE; } - dp.p_inum = 0; - dp.p_ptr = req; + dp.ldp_inum = 0; + dp.ldp_ptr = req; pending_child->d_fsdata = (void *) &dp; rc = vfs_unlink(pending_dir, pending_child); if (rc) diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c index 96ba59d..75b9dbe 100644 --- a/lustre/mds/mds_reint.c +++ b/lustre/mds/mds_reint.c @@ -758,7 +758,7 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, int created = 0; unsigned int qcids[MAXQUOTAS] = { current->fsuid, current->fsgid }; unsigned int qpids[MAXQUOTAS] = { 0, 0 }; - struct dentry_params dp; + struct lvfs_dentry_params dp = LVFS_DENTRY_PARAMS_INIT; ENTRY; LASSERT(offset == REQ_REC_OFF); @@ -814,8 +814,8 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, rec->ur_mode |= S_ISGID; dchild->d_fsdata = (void *)&dp; - dp.p_inum = (unsigned long)rec->ur_fid2->id; - dp.p_ptr = req; + dp.ldp_inum = (unsigned long)rec->ur_fid2->id; + dp.ldp_ptr = req; switch (type) { case S_IFREG:{