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
+
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;
}
+ 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);
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;
}
"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
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;
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;
}
}
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 */
/* 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 */
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;
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
+
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.
*/
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
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;
}
+ 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;
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;
}
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 \
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;
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;
}
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 */
/* 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 */
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;
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
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.
*/
-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);
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);
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) {
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;
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);
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;
}
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 */
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);
de->inode = 0;
de->name_len = namelen;
memcpy (de->name, name, namelen);
-@@ -2662,6 +2696,79 @@
+@@ -2630,6 +2664,79 @@
}
/*
* 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)
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);
+
+
+
-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;
};
#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)
/*
* 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;
};
#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 */
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 */
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) {
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)
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);
+
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))
+
/*
* (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;
#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;
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
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
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
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",
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;