From 2f8e66e2429c73fc2089d0890e370588ce66e366 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 22 Sep 2004 19:23:35 +0000 Subject: [PATCH] b=4584 - mdt_obj_create() should set generation in re-create case --- .../patches/ext3-extents-2.4.21-suse2.patch | 59 +++++++++++------ .../patches/ext3-extents-2.4.24.patch | 47 ++++++++++---- .../patches/ext3-mds-num-2.4.21-suse.patch | 74 +++++++++++----------- .../patches/ext3-mds-num-2.4.24.patch | 48 ++++++-------- lustre/kernel_patches/series/suse-2.4.21-2 | 2 +- lustre/kernel_patches/series/vanilla-2.4.24 | 4 +- lustre/mds/handler.c | 6 +- 7 files changed, 135 insertions(+), 105 deletions(-) diff --git a/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch b/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch index 754d8d4..65289ca 100644 --- a/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch +++ b/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch @@ -1,7 +1,7 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c =================================================================== --- linux-2.4.21-suse2.orig/fs/ext3/extents.c 2003-01-30 13:24:37.000000000 +0300 -+++ linux-2.4.21-suse2/fs/ext3/extents.c 2004-08-10 03:51:34.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/extents.c 2004-09-12 17:56:01.000000000 +0400 @@ -0,0 +1,2262 @@ +/* + * Copyright (c) 2003, Cluster File Systems, Inc, info@clusterfs.com @@ -2267,9 +2267,9 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c + Index: linux-2.4.21-suse2/fs/ext3/ialloc.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/ext3/ialloc.c 2004-08-10 02:47:55.000000000 +0400 -+++ linux-2.4.21-suse2/fs/ext3/ialloc.c 2004-08-10 03:14:01.000000000 +0400 -@@ -592,10 +592,14 @@ +--- linux-2.4.21-suse2.orig/fs/ext3/ialloc.c 2004-08-19 13:51:48.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/ialloc.c 2004-09-12 18:26:45.000000000 +0400 +@@ -592,10 +592,21 @@ iloc.bh = NULL; goto fail; } @@ -2280,6 +2280,13 @@ Index: linux-2.4.21-suse2/fs/ext3/ialloc.c + if (test_opt(sb, EXTENTS)) { + EXT3_I(inode)->i_flags |= EXT3_EXTENTS_FL; + ext3_extents_initialize_blockmap(handle, inode); ++ if (!EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_EXTENTS)) { ++ err = ext3_journal_get_write_access(handle, EXT3_SB(sb)->s_sbh); ++ if (err) goto fail; ++ EXT3_SET_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_EXTENTS); ++ BUFFER_TRACE(EXT3_SB(sb)->s_sbh, "call ext3_journal_dirty_metadata"); ++ err = ext3_journal_dirty_metadata(handle, EXT3_SB(sb)->s_sbh); ++ } + } + + err = ext3_mark_iloc_dirty(handle, inode, &iloc); @@ -2289,8 +2296,8 @@ Index: linux-2.4.21-suse2/fs/ext3/ialloc.c init_rwsem(&inode->u.ext3_i.xattr_sem); Index: linux-2.4.21-suse2/fs/ext3/inode.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/ext3/inode.c 2004-08-10 02:47:56.000000000 +0400 -+++ linux-2.4.21-suse2/fs/ext3/inode.c 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/fs/ext3/inode.c 2004-08-19 13:51:48.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/inode.c 2004-09-12 17:56:01.000000000 +0400 @@ -853,6 +853,16 @@ goto reread; } @@ -2384,8 +2391,8 @@ Index: linux-2.4.21-suse2/fs/ext3/inode.c "allocating block %ld\n", rc, iblock); Index: linux-2.4.21-suse2/fs/ext3/Makefile =================================================================== ---- linux-2.4.21-suse2.orig/fs/ext3/Makefile 2004-08-10 02:47:55.000000000 +0400 -+++ linux-2.4.21-suse2/fs/ext3/Makefile 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/fs/ext3/Makefile 2004-08-19 13:45:03.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/Makefile 2004-09-12 17:56:01.000000000 +0400 @@ -12,7 +12,10 @@ export-objs := ext3-exports.o @@ -2400,8 +2407,8 @@ Index: linux-2.4.21-suse2/fs/ext3/Makefile export-objs += xattr.o Index: linux-2.4.21-suse2/fs/ext3/super.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/ext3/super.c 2004-08-10 02:47:55.000000000 +0400 -+++ linux-2.4.21-suse2/fs/ext3/super.c 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/fs/ext3/super.c 2004-08-19 13:51:48.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/super.c 2004-09-12 17:56:01.000000000 +0400 @@ -624,6 +624,7 @@ int i; @@ -2432,8 +2439,8 @@ Index: linux-2.4.21-suse2/fs/ext3/super.c failed_mount3: Index: linux-2.4.21-suse2/fs/ext3/ioctl.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/ext3/ioctl.c 2004-08-10 02:47:54.000000000 +0400 -+++ linux-2.4.21-suse2/fs/ext3/ioctl.c 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/fs/ext3/ioctl.c 2004-08-19 13:45:03.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/ioctl.c 2004-09-12 17:56:01.000000000 +0400 @@ -174,6 +174,10 @@ return ret; } @@ -2447,8 +2454,8 @@ Index: linux-2.4.21-suse2/fs/ext3/ioctl.c } Index: linux-2.4.21-suse2/include/linux/ext3_fs.h =================================================================== ---- linux-2.4.21-suse2.orig/include/linux/ext3_fs.h 2004-08-10 02:47:55.000000000 +0400 -+++ linux-2.4.21-suse2/include/linux/ext3_fs.h 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/include/linux/ext3_fs.h 2004-08-19 13:51:48.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/ext3_fs.h 2004-09-12 18:26:06.000000000 +0400 @@ -184,6 +184,7 @@ #define EXT3_IMAGIC_FL 0x00002000 /* AFS directory */ #define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ @@ -2476,7 +2483,21 @@ Index: linux-2.4.21-suse2/include/linux/ext3_fs.h /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */ #ifndef _LINUX_EXT2_FS_H -@@ -689,6 +695,7 @@ +@@ -504,10 +510,12 @@ + #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002 + #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ + #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ ++#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ + + #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR + #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \ +- EXT3_FEATURE_INCOMPAT_RECOVER) ++ EXT3_FEATURE_INCOMPAT_RECOVER| \ ++ EXT3_FEATURE_INCOMPAT_EXTENTS) + #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ + EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ + EXT3_FEATURE_RO_COMPAT_BTREE_DIR) +@@ -689,6 +697,7 @@ extern unsigned long ext3_count_free (struct buffer_head *, unsigned); /* inode.c */ @@ -2484,7 +2505,7 @@ Index: linux-2.4.21-suse2/include/linux/ext3_fs.h extern int ext3_forget(handle_t *, int, struct inode *, struct buffer_head *, int); extern struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); extern struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); -@@ -770,6 +777,14 @@ +@@ -770,6 +779,14 @@ extern struct inode_operations ext3_symlink_inode_operations; extern struct inode_operations ext3_fast_symlink_inode_operations; @@ -2502,7 +2523,7 @@ Index: linux-2.4.21-suse2/include/linux/ext3_fs.h Index: linux-2.4.21-suse2/include/linux/ext3_extents.h =================================================================== --- linux-2.4.21-suse2.orig/include/linux/ext3_extents.h 2003-01-30 13:24:37.000000000 +0300 -+++ linux-2.4.21-suse2/include/linux/ext3_extents.h 2004-08-10 03:46:31.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/ext3_extents.h 2004-09-12 17:56:01.000000000 +0400 @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2003, Cluster File Systems, Inc, info@clusterfs.com @@ -2743,8 +2764,8 @@ Index: linux-2.4.21-suse2/include/linux/ext3_extents.h + Index: linux-2.4.21-suse2/include/linux/ext3_fs_i.h =================================================================== ---- linux-2.4.21-suse2.orig/include/linux/ext3_fs_i.h 2004-08-10 02:47:55.000000000 +0400 -+++ linux-2.4.21-suse2/include/linux/ext3_fs_i.h 2004-08-10 03:14:01.000000000 +0400 +--- linux-2.4.21-suse2.orig/include/linux/ext3_fs_i.h 2004-08-19 13:51:48.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/ext3_fs_i.h 2004-09-12 17:56:01.000000000 +0400 @@ -90,6 +90,8 @@ * by other means, so we have truncate_sem. */ diff --git a/lustre/kernel_patches/patches/ext3-extents-2.4.24.patch b/lustre/kernel_patches/patches/ext3-extents-2.4.24.patch index 90642b3..d6b0d4f 100644 --- a/lustre/kernel_patches/patches/ext3-extents-2.4.24.patch +++ b/lustre/kernel_patches/patches/ext3-extents-2.4.24.patch @@ -1,7 +1,7 @@ Index: linux-2.4.24/fs/ext3/extents.c =================================================================== --- linux-2.4.24.orig/fs/ext3/extents.c 2003-01-30 13:24:37.000000000 +0300 -+++ linux-2.4.24/fs/ext3/extents.c 2004-08-10 03:52:42.000000000 +0400 ++++ linux-2.4.24/fs/ext3/extents.c 2004-09-12 17:37:14.000000000 +0400 @@ -0,0 +1,2262 @@ +/* + * Copyright (c) 2003, Cluster File Systems, Inc, info@clusterfs.com @@ -2268,8 +2268,8 @@ Index: linux-2.4.24/fs/ext3/extents.c Index: linux-2.4.24/fs/ext3/ialloc.c =================================================================== --- linux-2.4.24.orig/fs/ext3/ialloc.c 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/fs/ext3/ialloc.c 2004-08-10 03:25:26.000000000 +0400 -@@ -593,10 +593,14 @@ ++++ linux-2.4.24/fs/ext3/ialloc.c 2004-09-12 17:49:24.000000000 +0400 +@@ -593,10 +593,21 @@ iloc.bh = NULL; goto fail; } @@ -2279,7 +2279,14 @@ Index: linux-2.4.24/fs/ext3/ialloc.c + if (test_opt(sb, EXTENTS)) { + EXT3_I(inode)->i_flags |= EXT3_EXTENTS_FL; + ext3_extents_initialize_blockmap(handle, inode); -+ } ++ if (!EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_EXTENTS)) { ++ err = ext3_journal_get_write_access(handle, EXT3_SB(sb)->s_sbh); ++ if (err) goto fail; ++ EXT3_SET_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_EXTENTS); ++ BUFFER_TRACE(EXT3_SB(sb)->s_sbh, "call ext3_journal_dirty_metadata"); ++ err = ext3_journal_dirty_metadata(handle, EXT3_SB(sb)->s_sbh); ++ } ++ } + err = ext3_mark_iloc_dirty(handle, inode, &iloc); + if (err) goto fail; @@ -2289,7 +2296,7 @@ Index: linux-2.4.24/fs/ext3/ialloc.c Index: linux-2.4.24/fs/ext3/inode.c =================================================================== --- linux-2.4.24.orig/fs/ext3/inode.c 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/fs/ext3/inode.c 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/fs/ext3/inode.c 2004-09-12 17:37:14.000000000 +0400 @@ -848,6 +848,15 @@ goto reread; } @@ -2374,7 +2381,7 @@ Index: linux-2.4.24/fs/ext3/inode.c Index: linux-2.4.24/fs/ext3/Makefile =================================================================== --- linux-2.4.24.orig/fs/ext3/Makefile 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/fs/ext3/Makefile 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/fs/ext3/Makefile 2004-09-12 17:37:14.000000000 +0400 @@ -13,7 +13,9 @@ obj-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \ @@ -2389,7 +2396,7 @@ Index: linux-2.4.24/fs/ext3/Makefile Index: linux-2.4.24/fs/ext3/super.c =================================================================== --- linux-2.4.24.orig/fs/ext3/super.c 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/fs/ext3/super.c 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/fs/ext3/super.c 2004-09-12 17:37:14.000000000 +0400 @@ -530,6 +530,7 @@ int i; @@ -2421,7 +2428,7 @@ Index: linux-2.4.24/fs/ext3/super.c Index: linux-2.4.24/fs/ext3/ioctl.c =================================================================== --- linux-2.4.24.orig/fs/ext3/ioctl.c 2004-08-07 16:35:23.000000000 +0400 -+++ linux-2.4.24/fs/ext3/ioctl.c 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/fs/ext3/ioctl.c 2004-09-12 17:37:14.000000000 +0400 @@ -174,6 +174,10 @@ return ret; } @@ -2436,7 +2443,7 @@ Index: linux-2.4.24/fs/ext3/ioctl.c Index: linux-2.4.24/include/linux/ext3_fs.h =================================================================== --- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs.h 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs.h 2004-09-12 17:45:20.000000000 +0400 @@ -185,6 +185,7 @@ #define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ #define EXT3_EXTRA_ISIZE 0x00008000 /* inode has initialized i_extra_isize */ @@ -2464,7 +2471,21 @@ Index: linux-2.4.24/include/linux/ext3_fs.h /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */ #ifndef _LINUX_EXT2_FS_H -@@ -689,6 +695,7 @@ +@@ -504,10 +510,12 @@ + #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002 + #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ + #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ ++#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ + + #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR + #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \ +- EXT3_FEATURE_INCOMPAT_RECOVER) ++ EXT3_FEATURE_INCOMPAT_RECOVER| \ ++ EXT3_FEATURE_INCOMPAT_EXTENTS) + #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ + EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ + EXT3_FEATURE_RO_COMPAT_BTREE_DIR) +@@ -689,6 +697,7 @@ extern unsigned long ext3_count_free (struct buffer_head *, unsigned); /* inode.c */ @@ -2472,7 +2493,7 @@ Index: linux-2.4.24/include/linux/ext3_fs.h extern int ext3_forget(handle_t *, int, struct inode *, struct buffer_head *, int); extern struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); extern struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); -@@ -770,6 +777,14 @@ +@@ -770,6 +779,14 @@ extern struct inode_operations ext3_symlink_inode_operations; extern struct inode_operations ext3_fast_symlink_inode_operations; @@ -2490,7 +2511,7 @@ Index: linux-2.4.24/include/linux/ext3_fs.h Index: linux-2.4.24/include/linux/ext3_extents.h =================================================================== --- linux-2.4.24.orig/include/linux/ext3_extents.h 2003-01-30 13:24:37.000000000 +0300 -+++ linux-2.4.24/include/linux/ext3_extents.h 2004-08-10 03:49:41.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_extents.h 2004-09-12 17:37:14.000000000 +0400 @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2003, Cluster File Systems, Inc, info@clusterfs.com @@ -2732,7 +2753,7 @@ Index: linux-2.4.24/include/linux/ext3_extents.h Index: linux-2.4.24/include/linux/ext3_fs_i.h =================================================================== --- linux-2.4.24.orig/include/linux/ext3_fs_i.h 2004-08-07 16:35:25.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs_i.h 2004-08-10 03:25:26.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs_i.h 2004-09-12 17:37:14.000000000 +0400 @@ -76,6 +76,8 @@ * by other means, so we have truncate_sem. */ diff --git a/lustre/kernel_patches/patches/ext3-mds-num-2.4.21-suse.patch b/lustre/kernel_patches/patches/ext3-mds-num-2.4.21-suse.patch index 7a97150..4a80338 100644 --- a/lustre/kernel_patches/patches/ext3-mds-num-2.4.21-suse.patch +++ b/lustre/kernel_patches/patches/ext3-mds-num-2.4.21-suse.patch @@ -1,8 +1,8 @@ -Index: linux-2.4.24/fs/ext3/namei.c +Index: linux-2.4.21-suse2/fs/ext3/namei.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/namei.c 2004-07-19 11:11:29.000000000 +0400 -+++ linux-2.4.24/fs/ext3/namei.c 2004-07-19 11:11:29.000000000 +0400 -@@ -1099,6 +1099,23 @@ +--- linux-2.4.21-suse2.orig/fs/ext3/namei.c 2004-09-12 18:26:52.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/namei.c 2004-09-12 18:27:04.000000000 +0400 +@@ -1100,6 +1100,23 @@ inode = NULL; if (bh) { unsigned long ino = le32_to_cpu(de->inode); @@ -26,7 +26,7 @@ Index: linux-2.4.24/fs/ext3/namei.c ext3_unlock_htree(dir, lock); brelse (bh); inode = iget(dir->i_sb, ino); -@@ -1138,7 +1155,7 @@ +@@ -1139,7 +1156,7 @@ while (count--) { struct ext3_dir_entry_2 *de = (struct ext3_dir_entry_2 *) (from + map->offs); @@ -35,7 +35,7 @@ Index: linux-2.4.24/fs/ext3/namei.c memcpy (to, de, rec_len); ((struct ext3_dir_entry_2 *)to)->rec_len = cpu_to_le16(rec_len); de->inode = 0; -@@ -1159,7 +1176,7 @@ +@@ -1160,7 +1177,7 @@ next = (struct ext3_dir_entry_2 *) ((char *) de + le16_to_cpu(de->rec_len)); if (de->inode && de->name_len) { @@ -44,7 +44,7 @@ Index: linux-2.4.24/fs/ext3/namei.c if (de > to) memmove(to, de, rec_len); to->rec_len = cpu_to_le16(rec_len); -@@ -1275,6 +1292,7 @@ +@@ -1276,6 +1293,7 @@ struct buffer_head * bh) { struct inode *dir = dentry->d_parent->d_inode; @@ -52,7 +52,7 @@ Index: linux-2.4.24/fs/ext3/namei.c const char *name = dentry->d_name.name; int namelen = dentry->d_name.len; unsigned long offset = 0; -@@ -1283,6 +1301,10 @@ +@@ -1284,6 +1302,10 @@ char *top; reclen = EXT3_DIR_REC_LEN(namelen); @@ -63,7 +63,7 @@ Index: linux-2.4.24/fs/ext3/namei.c if (!de) { de = (struct ext3_dir_entry_2 *)bh->b_data; top = bh->b_data + dir->i_sb->s_blocksize - reclen; -@@ -1296,7 +1318,7 @@ +@@ -1297,7 +1319,7 @@ brelse (bh); return -EEXIST; } @@ -72,7 +72,7 @@ Index: linux-2.4.24/fs/ext3/namei.c rlen = le16_to_cpu(de->rec_len); if ((de->inode? rlen - nlen: rlen) >= reclen) break; -@@ -1315,7 +1337,7 @@ +@@ -1316,7 +1338,7 @@ } /* By now the buffer is marked for journaling */ @@ -81,7 +81,7 @@ Index: linux-2.4.24/fs/ext3/namei.c rlen = le16_to_cpu(de->rec_len); if (de->inode) { struct ext3_dir_entry_2 *de1 = -@@ -1327,8 +1349,20 @@ +@@ -1328,8 +1350,20 @@ de->file_type = EXT3_FT_UNKNOWN; if (inode) { de->inode = cpu_to_le32(inode->i_ino); @@ -104,7 +104,7 @@ Index: linux-2.4.24/fs/ext3/namei.c de->inode = 0; de->name_len = namelen; memcpy (de->name, name, namelen); -@@ -2662,6 +2696,79 @@ +@@ -2630,6 +2664,79 @@ } /* @@ -184,10 +184,10 @@ Index: linux-2.4.24/fs/ext3/namei.c * directories can handle most operations... */ struct inode_operations ext3_dir_inode_operations = { -Index: linux-2.4.24/fs/ext3/dir.c +Index: linux-2.4.21-suse2/fs/ext3/dir.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/dir.c 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/fs/ext3/dir.c 2004-07-30 23:56:03.000000000 +0400 +--- linux-2.4.21-suse2.orig/fs/ext3/dir.c 2004-08-19 13:45:02.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/dir.c 2004-09-12 18:27:04.000000000 +0400 @@ -42,6 +42,9 @@ static unsigned char get_dtype(struct super_block *sb, int filetype) @@ -211,11 +211,11 @@ Index: linux-2.4.24/fs/ext3/dir.c if (error_msg != NULL) ext3_error (dir->i_sb, function, -Index: linux-2.4.24/fs/ext3/ext3-exports.c +Index: linux-2.4.21-suse2/fs/ext3/ext3-exports.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/ext3-exports.c 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/fs/ext3/ext3-exports.c 2004-07-19 11:11:29.000000000 +0400 -@@ -26,3 +26,10 @@ +--- linux-2.4.21-suse2.orig/fs/ext3/ext3-exports.c 2004-08-19 13:45:03.000000000 +0400 ++++ linux-2.4.21-suse2/fs/ext3/ext3-exports.c 2004-09-12 18:27:04.000000000 +0400 +@@ -27,3 +27,10 @@ EXPORT_SYMBOL(ext3_decode_error); EXPORT_SYMBOL(__ext3_std_error); @@ -226,11 +226,11 @@ Index: linux-2.4.24/fs/ext3/ext3-exports.c + + + -Index: linux-2.4.24/include/linux/ext3_fs.h +Index: linux-2.4.21-suse2/include/linux/ext3_fs.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-07-19 11:11:29.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs.h 2004-07-19 11:13:53.000000000 +0400 -@@ -446,7 +446,8 @@ +--- linux-2.4.21-suse2.orig/include/linux/ext3_fs.h 2004-09-12 18:26:52.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/ext3_fs.h 2004-09-12 18:28:01.000000000 +0400 +@@ -438,7 +438,8 @@ __u8 s_def_hash_version; /* Default hash version to use */ __u8 s_reserved_char_pad; __u16 s_reserved_word_pad; @@ -240,21 +240,21 @@ Index: linux-2.4.24/include/linux/ext3_fs.h }; #ifdef __KERNEL__ -@@ -519,10 +520,12 @@ +@@ -511,11 +512,13 @@ #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ +#define EXT3_FEATURE_INCOMPAT_MDSNUM 0x0020 /* direntry has mdsnum */ + #define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \ -- EXT3_FEATURE_INCOMPAT_RECOVER) -+ EXT3_FEATURE_INCOMPAT_RECOVER| \ -+ EXT3_FEATURE_INCOMPAT_MDSNUM) + EXT3_FEATURE_INCOMPAT_RECOVER| \ ++ EXT3_FEATURE_INCOMPAT_MDSNUM| \ + EXT3_FEATURE_INCOMPAT_EXTENTS) #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ - EXT3_FEATURE_RO_COMPAT_BTREE_DIR) -@@ -583,6 +586,9 @@ +@@ -577,6 +580,9 @@ #define EXT3_DIR_ROUND (EXT3_DIR_PAD - 1) #define EXT3_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT3_DIR_ROUND) & \ ~EXT3_DIR_ROUND) @@ -264,10 +264,10 @@ Index: linux-2.4.24/include/linux/ext3_fs.h /* * Hash Tree Directory indexing * (c) Daniel Phillips, 2001 -Index: linux-2.4.24/include/linux/ext3_fs_sb.h +Index: linux-2.4.21-suse2/include/linux/ext3_fs_sb.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs_sb.h 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs_sb.h 2004-07-19 11:12:54.000000000 +0400 +--- linux-2.4.21-suse2.orig/include/linux/ext3_fs_sb.h 2004-08-19 14:01:33.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/ext3_fs_sb.h 2004-09-12 18:27:04.000000000 +0400 @@ -86,6 +86,7 @@ wait_queue_head_t s_delete_thread_queue; wait_queue_head_t s_delete_waiter_queue; @@ -276,11 +276,11 @@ Index: linux-2.4.24/include/linux/ext3_fs_sb.h }; #endif /* _LINUX_EXT3_FS_SB */ -Index: linux-2.4.24/include/linux/dcache.h +Index: linux-2.4.21-suse2/include/linux/dcache.h =================================================================== ---- linux-2.4.24.orig/include/linux/dcache.h 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/include/linux/dcache.h 2004-07-19 11:12:53.000000000 +0400 -@@ -120,6 +120,9 @@ +--- linux-2.4.21-suse2.orig/include/linux/dcache.h 2004-08-19 13:46:46.000000000 +0400 ++++ linux-2.4.21-suse2/include/linux/dcache.h 2004-09-12 18:27:04.000000000 +0400 +@@ -121,6 +121,9 @@ atomic_t d_count; unsigned int d_flags; struct inode * d_inode; /* Where the name belongs to - NULL is negative */ @@ -290,7 +290,7 @@ Index: linux-2.4.24/include/linux/dcache.h struct dentry * d_parent; /* parent directory */ struct list_head d_hash; /* lookup hash list */ struct list_head d_lru; /* d_count = 0 LRU list */ -@@ -193,6 +196,7 @@ +@@ -195,6 +198,7 @@ */ #define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */ #define DCACHE_LUSTRE_INVALID 0x0010 /* Lustre invalidated */ diff --git a/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch b/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch index 7a97150..c524f01 100644 --- a/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch +++ b/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch @@ -1,7 +1,7 @@ Index: linux-2.4.24/fs/ext3/namei.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/namei.c 2004-07-19 11:11:29.000000000 +0400 -+++ linux-2.4.24/fs/ext3/namei.c 2004-07-19 11:11:29.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/namei.c 2004-09-12 17:52:58.000000000 +0400 ++++ linux-2.4.24/fs/ext3/namei.c 2004-09-12 17:53:10.000000000 +0400 @@ -1099,6 +1099,23 @@ inode = NULL; if (bh) { @@ -186,8 +186,8 @@ Index: linux-2.4.24/fs/ext3/namei.c struct inode_operations ext3_dir_inode_operations = { Index: linux-2.4.24/fs/ext3/dir.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/dir.c 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/fs/ext3/dir.c 2004-07-30 23:56:03.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/dir.c 2004-08-07 16:35:23.000000000 +0400 ++++ linux-2.4.24/fs/ext3/dir.c 2004-09-12 17:53:10.000000000 +0400 @@ -42,6 +42,9 @@ static unsigned char get_dtype(struct super_block *sb, int filetype) @@ -213,8 +213,8 @@ Index: linux-2.4.24/fs/ext3/dir.c ext3_error (dir->i_sb, function, Index: linux-2.4.24/fs/ext3/ext3-exports.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/ext3-exports.c 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/fs/ext3/ext3-exports.c 2004-07-19 11:11:29.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/ext3-exports.c 2004-08-07 16:35:24.000000000 +0400 ++++ linux-2.4.24/fs/ext3/ext3-exports.c 2004-09-12 17:53:10.000000000 +0400 @@ -26,3 +26,10 @@ EXPORT_SYMBOL(ext3_decode_error); EXPORT_SYMBOL(__ext3_std_error); @@ -228,37 +228,27 @@ Index: linux-2.4.24/fs/ext3/ext3-exports.c + Index: linux-2.4.24/include/linux/ext3_fs.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-07-19 11:11:29.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs.h 2004-07-19 11:13:53.000000000 +0400 -@@ -446,7 +446,8 @@ - __u8 s_def_hash_version; /* Default hash version to use */ - __u8 s_reserved_char_pad; - __u16 s_reserved_word_pad; -- __u32 s_reserved[192]; /* Padding to the end of the block */ -+ __u32 s_mdsnum; -+ __u32 s_reserved[191]; /* Padding to the end of the block */ - }; - - #ifdef __KERNEL__ -@@ -519,10 +520,12 @@ +--- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-09-12 17:52:58.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs.h 2004-09-12 18:11:02.000000000 +0400 +@@ -519,11 +519,13 @@ #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ +#define EXT3_FEATURE_INCOMPAT_MDSNUM 0x0020 /* direntry has mdsnum */ + #define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \ -- EXT3_FEATURE_INCOMPAT_RECOVER) -+ EXT3_FEATURE_INCOMPAT_RECOVER| \ -+ EXT3_FEATURE_INCOMPAT_MDSNUM) + EXT3_FEATURE_INCOMPAT_RECOVER| \ ++ EXT3_FEATURE_INCOMPAT_MDSNUM| \ + EXT3_FEATURE_INCOMPAT_EXTENTS) #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ - EXT3_FEATURE_RO_COMPAT_BTREE_DIR) -@@ -583,6 +586,9 @@ +@@ -585,6 +587,9 @@ #define EXT3_DIR_ROUND (EXT3_DIR_PAD - 1) #define EXT3_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT3_DIR_ROUND) & \ ~EXT3_DIR_ROUND) -+#define EXT3_DIR_REC_LEN_DE(de) (EXT3_DIR_REC_LEN((de)->name_len) + \ ++#define EXT3_DIR_REC_LEN_DE(de) (EXT3_DIR_REC_LEN((de)->name_len) + \ + (((de)->file_type & 128) ? 8 : 0)) + /* @@ -266,8 +256,8 @@ Index: linux-2.4.24/include/linux/ext3_fs.h * (c) Daniel Phillips, 2001 Index: linux-2.4.24/include/linux/ext3_fs_sb.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs_sb.h 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs_sb.h 2004-07-19 11:12:54.000000000 +0400 +--- linux-2.4.24.orig/include/linux/ext3_fs_sb.h 2004-08-10 16:10:54.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs_sb.h 2004-09-12 18:11:38.000000000 +0400 @@ -86,6 +86,7 @@ wait_queue_head_t s_delete_thread_queue; wait_queue_head_t s_delete_waiter_queue; @@ -278,8 +268,8 @@ Index: linux-2.4.24/include/linux/ext3_fs_sb.h #endif /* _LINUX_EXT3_FS_SB */ Index: linux-2.4.24/include/linux/dcache.h =================================================================== ---- linux-2.4.24.orig/include/linux/dcache.h 2004-07-19 11:11:16.000000000 +0400 -+++ linux-2.4.24/include/linux/dcache.h 2004-07-19 11:12:53.000000000 +0400 +--- linux-2.4.24.orig/include/linux/dcache.h 2004-08-07 16:35:23.000000000 +0400 ++++ linux-2.4.24/include/linux/dcache.h 2004-09-12 18:11:38.000000000 +0400 @@ -120,6 +120,9 @@ atomic_t d_count; unsigned int d_flags; diff --git a/lustre/kernel_patches/series/suse-2.4.21-2 b/lustre/kernel_patches/series/suse-2.4.21-2 index 3987550..6272220 100644 --- a/lustre/kernel_patches/series/suse-2.4.21-2 +++ b/lustre/kernel_patches/series/suse-2.4.21-2 @@ -37,7 +37,7 @@ ext3-extents-asyncdel-2.4.24.patch dynamic-locks-2.4.21-suse2.patch vfs-pdirops-2.4.21-suse2.patch ext3-pdirops-2.4.24-chaos.patch -ext3-mds-num-2.4.21-suse.patch +ext3-mds-num-2.4.21-suse.patch ext3-inode-reuse-2.4.20.patch ext3-raw-lookup-pdirops.patch ext3-extents-in-ea-2.4.21-suse2.patch diff --git a/lustre/kernel_patches/series/vanilla-2.4.24 b/lustre/kernel_patches/series/vanilla-2.4.24 index 758e9d6..7db12db 100644 --- a/lustre/kernel_patches/series/vanilla-2.4.24 +++ b/lustre/kernel_patches/series/vanilla-2.4.24 @@ -28,7 +28,7 @@ nfs_export_kernel-2.4.22.patch ext3-ea-in-inode-2.4.22-rh.patch listman-2.4.20.patch ext3-trusted_ea-2.4.20.patch -ext3-extents-2.4.24.patch +ext3-extents-2.4.24.patch ext3-extents-in-ea-2.4.20.patch ext3-extents-in-ea-ioctl-2.4.20.patch ext3-extents-in-ea-exports-symbol-2.4.24.patch @@ -42,7 +42,7 @@ inode-max-readahead-2.4.24.patch dynamic-locks-2.4.24.patch vfs-pdirops-2.4.20-rh.patch ext3-pdirops-2.4.24-chaos.patch -ext3-mds-num-2.4.24.patch +ext3-mds-num-2.4.24.patch export_lookup_create.patch ext3-raw-lookup-pdirops.patch kksymoops-2.4.24.vanilla.patch diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 68cf8bd..ffaac22 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -1563,6 +1563,8 @@ repeat: rc = vfs_mkdir(parent_inode, new, body->oa.o_mode); if (rc == 0) { if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY) { + new->d_inode->i_generation = body->oa.o_generation; + mark_inode_dirty(new->d_inode); LASSERTF(body->oa.o_id == new->d_inode->i_ino, "BUG 3550: failed to recreate obj " LPU64" -> %lu\n", @@ -1575,10 +1577,6 @@ repeat: new->d_inode->i_ino, new->d_inode->i_generation); } - if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY) { - new->d_inode->i_generation = body->oa.o_generation; - mark_inode_dirty(new->d_inode); - } obdo_from_inode(&repbody->oa, new->d_inode, FILTER_VALID_FLAGS); repbody->oa.o_id = new->d_inode->i_ino; -- 1.8.3.1