include/linux/ext3_fs_i.h | 3
6 files changed, 615 insertions(+), 11 deletions(-)
---- linux-2.4.20/fs/ext3/ialloc.c~ext3-ea-in-inode-2.4.20 2003-10-08 23:18:08.000000000 +0400
-+++ linux-2.4.20-alexey/fs/ext3/ialloc.c 2003-10-12 16:25:21.000000000 +0400
-@@ -577,6 +577,12 @@ repeat:
+--- linux-2.4.22-ac1/fs/ext3/ialloc.c~ext3-ea-in-inode-2.4.22-rh 2003-10-08 13:57:56.000000000 +0400
++++ linux-2.4.22-ac1-alexey/fs/ext3/ialloc.c 2003-10-08 15:13:31.000000000 +0400
+@@ -715,6 +715,12 @@ have_bit_and_group:
insert_inode_hash(inode);
inode->i_generation = sb->u.ext3_sb.s_next_generation++;
inode->u.ext3_i.i_state = EXT3_STATE_NEW;
err = ext3_get_inode_loc_new(inode, &iloc, 1);
if (err) goto fail;
---- linux-2.4.20/fs/ext3/inode.c~ext3-ea-in-inode-2.4.20 2003-10-08 23:18:08.000000000 +0400
-+++ linux-2.4.20-alexey/fs/ext3/inode.c 2003-10-12 16:25:21.000000000 +0400
-@@ -2209,6 +2209,12 @@ void ext3_read_inode(struct inode * inod
+--- linux-2.4.22-ac1/fs/ext3/inode.c~ext3-ea-in-inode-2.4.22-rh 2003-10-08 13:57:57.000000000 +0400
++++ linux-2.4.22-ac1-alexey/fs/ext3/inode.c 2003-10-08 15:14:57.000000000 +0400
+@@ -2229,6 +2229,12 @@ void ext3_read_inode(struct inode * inod
inode->u.ext3_i.i_data[block] = iloc.raw_inode->i_block[block];
INIT_LIST_HEAD(&inode->u.ext3_i.i_orphan);
+ else
+ inode->u.ext3_i.i_extra_isize = 0;
+
- brelse (iloc.bh);
-
if (S_ISREG(inode->i_mode)) {
-@@ -2274,6 +2280,8 @@ static int ext3_do_update_inode(handle_t
+ inode->i_op = &ext3_file_inode_operations;
+ inode->i_fop = &ext3_file_operations;
+@@ -2277,6 +2283,8 @@ static int ext3_do_update_inode(handle_t
if (err)
goto out_brelse;
}
raw_inode->i_mode = cpu_to_le16(inode->i_mode);
if(!(test_opt(inode->i_sb, NO_UID32))) {
raw_inode->i_uid_low = cpu_to_le16(low_16_bits(inode->i_uid));
-@@ -2357,6 +2365,10 @@ static int ext3_do_update_inode(handle_t
+@@ -2360,6 +2368,10 @@ static int ext3_do_update_inode(handle_t
else for (block = 0; block < EXT3_N_BLOCKS; block++)
raw_inode->i_block[block] = inode->u.ext3_i.i_data[block];
BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
rc = ext3_journal_dirty_metadata(handle, bh);
if (!err)
---- linux-2.4.20/fs/ext3/xattr.c~ext3-ea-in-inode-2.4.20 2003-10-08 23:18:06.000000000 +0400
-+++ linux-2.4.20-alexey/fs/ext3/xattr.c 2003-10-12 16:26:31.000000000 +0400
+--- linux-2.4.22-ac1/fs/ext3/super.c~ext3-ea-in-inode-2.4.22-rh 2003-10-08 13:57:57.000000000 +0400
++++ linux-2.4.22-ac1-alexey/fs/ext3/super.c 2003-10-08 15:13:31.000000000 +0400
+@@ -1299,8 +1299,10 @@ struct super_block * ext3_read_super (st
+ } else {
+ sbi->s_inode_size = le16_to_cpu(es->s_inode_size);
+ sbi->s_first_ino = le32_to_cpu(es->s_first_ino);
+- if (sbi->s_inode_size != EXT3_GOOD_OLD_INODE_SIZE) {
+- printk (KERN_ERR
++ if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
++ (sbi->s_inode_size & (sbi->s_inode_size - 1)) ||
++ (sbi->s_inode_size > blocksize)) {
++ printk (KERN_ERR
+ "EXT3-fs: unsupported inode size: %d\n",
+ sbi->s_inode_size);
+ goto failed_mount;
+--- linux-2.4.22-ac1/fs/ext3/xattr.c~ext3-ea-in-inode-2.4.22-rh 2003-10-08 13:57:56.000000000 +0400
++++ linux-2.4.22-ac1-alexey/fs/ext3/xattr.c 2003-10-12 16:36:07.000000000 +0400
@@ -100,6 +100,9 @@
static int ext3_xattr_set2(handle_t *, struct inode *, struct buffer_head *,
struct ext3_xattr_header *);
const char *name, const void *value, size_t value_len, int flags)
{
struct super_block *sb = inode->i_sb;
---- linux-2.4.20/include/linux/ext3_fs.h~ext3-ea-in-inode-2.4.20 2003-10-08 23:18:08.000000000 +0400
-+++ linux-2.4.20-alexey/include/linux/ext3_fs.h 2003-10-12 16:35:46.000000000 +0400
-@@ -264,6 +264,8 @@ struct ext3_inode {
+@@ -603,6 +1181,7 @@ ext3_xattr_set(handle_t *handle, struct
+ name_len = strlen(name);
+ if (name_len > 255 || value_len > sb->s_blocksize)
+ return -ERANGE;
++
+ down(&ext3_xattr_sem);
+
+ if (block) {
+--- linux-2.4.22-ac1/include/linux/ext3_fs.h~ext3-ea-in-inode-2.4.22-rh 2003-10-08 13:57:57.000000000 +0400
++++ linux-2.4.22-ac1-alexey/include/linux/ext3_fs.h 2003-10-08 15:13:31.000000000 +0400
+@@ -265,6 +265,8 @@ struct ext3_inode {
__u32 m_i_reserved2[2];
} masix2;
} osd2; /* OS dependent 2 */
};
#define i_size_high i_dir_acl
---- linux-2.4.20/include/linux/ext3_fs_i.h~ext3-ea-in-inode-2.4.20 2001-11-22 22:46:19.000000000 +0300
-+++ linux-2.4.20-alexey/include/linux/ext3_fs_i.h 2003-10-12 16:34:14.000000000 +0400
+--- linux-2.4.22-ac1/include/linux/ext3_fs_i.h~ext3-ea-in-inode-2.4.22-rh 2003-09-26 00:54:44.000000000 +0400
++++ linux-2.4.22-ac1-alexey/include/linux/ext3_fs_i.h 2003-10-08 15:13:31.000000000 +0400
@@ -62,6 +62,9 @@ struct ext3_inode_info {
*/
loff_t i_disksize;
/*
* truncate_sem is for serialising ext3_truncate() against
* ext3_getblock(). In the 2.4 ext2 design, great chunks of inode's
---- linux-2.4.20/fs/ext3/super.c~ext3-ea-in-inode-2.4.20 2003-10-08 23:18:09.000000000 +0400
-+++ linux-2.4.20-alexey/fs/ext3/super.c 2003-10-12 16:25:21.000000000 +0400
-@@ -1292,8 +1292,10 @@ struct super_block * ext3_read_super (st
- } else {
- sbi->s_inode_size = le16_to_cpu(es->s_inode_size);
- sbi->s_first_ino = le32_to_cpu(es->s_first_ino);
-- if (sbi->s_inode_size != EXT3_GOOD_OLD_INODE_SIZE) {
-- printk (KERN_ERR
-+ if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
-+ (sbi->s_inode_size & (sbi->s_inode_size - 1)) ||
-+ (sbi->s_inode_size > blocksize)) {
-+ printk (KERN_ERR
- "EXT3-fs: unsupported inode size: %d\n",
- sbi->s_inode_size);
- goto failed_mount;
_