-Linux Extended Attributes -- Kernel Patch
-24 April 2002, 11:31:18
+ 0 files changed
-
-This patch is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This patch is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this patch; if not, write to the Free Software Foundation,
-Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-After extracting the linux-2.4.18.tar.gz package, apply this patch as follows:
-
- cd linux
- patch -p1 < ../linux-2.4.18ea-0.8.26.patch
-
-diff -Nur linux-2.4.18/fs/ext3/ialloc.c linux-2.4.18ea/fs/ext3/ialloc.c
---- linux-2.4.18/fs/ext3/ialloc.c Sun Feb 24 04:42:59 2002
-+++ linux-2.4.18ea/fs/ext3/ialloc.c Sun Feb 24 04:34:43 2002
+--- linux-2.4.18-18/fs/ext3/ialloc.c~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/ialloc.c 2003-04-20 16:14:31.000000000 +0800
@@ -17,6 +17,7 @@
#include <linux/jbd.h>
#include <linux/ext3_fs.h>
#include <linux/stat.h>
#include <linux/string.h>
#include <linux/locks.h>
-@@ -216,6 +217,7 @@
+@@ -216,6 +217,7 @@ void ext3_free_inode (handle_t *handle,
* as writing the quota to disk may need the lock as well.
*/
DQUOT_INIT(inode);
DQUOT_FREE_INODE(inode);
DQUOT_DROP(inode);
-diff -Nur linux-2.4.18/fs/ext3/inode.c linux-2.4.18ea/fs/ext3/inode.c
---- linux-2.4.18/fs/ext3/inode.c Sun Feb 24 04:42:59 2002
-+++ linux-2.4.18ea/fs/ext3/inode.c Thu Mar 14 21:51:59 2002
+--- linux-2.4.18-18/fs/ext3/inode.c~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/inode.c 2003-04-20 16:14:31.000000000 +0800
@@ -39,6 +39,18 @@
*/
#undef SEARCH_FROM_ZERO
struct inode *inode, struct buffer_head *bh,
int blocknr)
{
-@@ -164,9 +176,7 @@
+@@ -164,9 +176,7 @@ void ext3_delete_inode (struct inode * i
{
handle_t *handle;
goto no_delete;
lock_kernel();
-@@ -1845,6 +1855,8 @@
+@@ -1861,6 +1871,8 @@ void ext3_truncate(struct inode * inode)
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
S_ISLNK(inode->i_mode)))
return;
if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
return;
-@@ -1992,8 +2004,6 @@
+@@ -2008,8 +2020,6 @@ int ext3_get_inode_loc (struct inode *in
struct ext3_group_desc * gdp;
if ((inode->i_ino != EXT3_ROOT_INO &&
inode->i_ino != EXT3_JOURNAL_INO &&
inode->i_ino < EXT3_FIRST_INO(inode->i_sb)) ||
inode->i_ino > le32_to_cpu(
-@@ -2120,10 +2130,7 @@
+@@ -2136,10 +2146,7 @@ void ext3_read_inode(struct inode * inod
brelse (iloc.bh);
inode->i_op = &ext3_file_inode_operations;
inode->i_fop = &ext3_file_operations;
inode->i_mapping->a_ops = &ext3_aops;
-@@ -2131,7 +2138,7 @@
+@@ -2147,7 +2154,7 @@ void ext3_read_inode(struct inode * inod
inode->i_op = &ext3_dir_inode_operations;
inode->i_fop = &ext3_dir_operations;
} else if (S_ISLNK(inode->i_mode)) {
inode->i_op = &ext3_fast_symlink_inode_operations;
else {
inode->i_op = &page_symlink_inode_operations;
-diff -Nur linux-2.4.18/fs/ext3/namei.c linux-2.4.18ea/fs/ext3/namei.c
---- linux-2.4.18/fs/ext3/namei.c Fri Nov 9 23:25:04 2001
-+++ linux-2.4.18ea/fs/ext3/namei.c Mon Mar 11 03:27:00 2002
-@@ -23,6 +23,7 @@
+--- linux-2.4.18-18/fs/ext3/namei.c~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/namei.c 2003-04-20 16:14:31.000000000 +0800
+@@ -27,6 +27,7 @@
#include <linux/sched.h>
#include <linux/ext3_fs.h>
#include <linux/ext3_jbd.h>
#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/string.h>
-@@ -435,6 +435,7 @@ static int ext3_add_nondir(handle_t *han
- return 0;
- }
+@@ -1183,6 +1184,7 @@ static int ext3_add_nondir(handle_t *han
+ d_instantiate(dentry, inode);
+ return 0;
}
+ ext3_xattr_drop_inode(handle, inode);
ext3_dec_count(handle, inode);
iput(inode);
return err;
-@@ -514,7 +519,7 @@
+@@ -1268,15 +1270,14 @@ static int ext3_mkdir(struct inode * dir
if (IS_SYNC(dir))
handle->h_sync = 1;
err = PTR_ERR(inode);
if (IS_ERR(inode))
goto out_stop;
-@@ -522,7 +527,6 @@
+
inode->i_op = &ext3_dir_inode_operations;
inode->i_fop = &ext3_dir_operations;
- inode->i_size = inode->u.ext3_i.i_disksize = inode->i_sb->s_blocksize;
dir_block = ext3_bread (handle, inode, 0, 1, &err);
if (!dir_block) {
inode->i_nlink--; /* is this nlink == 0? */
-@@ -549,9 +553,6 @@
+@@ -1303,9 +1304,6 @@ static int ext3_mkdir(struct inode * dir
BUFFER_TRACE(dir_block, "call ext3_journal_dirty_metadata");
ext3_journal_dirty_metadata(handle, dir_block);
brelse (dir_block);
ext3_mark_inode_dirty(handle, inode);
err = ext3_add_entry (handle, dentry, inode);
if (err)
-@@ -917,5 +919,5 @@
+@@ -1671,7 +1669,7 @@ static int ext3_symlink (struct inode *
+ if (IS_ERR(inode))
goto out_stop;
- if (l > sizeof (inode->u.ext3_i.i_data)) {
+ if (l > sizeof(EXT3_I(inode)->i_data)) {
inode->i_op = &page_symlink_inode_operations;
inode->i_mapping->a_ops = &ext3_aops;
-diff -Nur linux-2.4.18/fs/ext3/super.c linux-2.4.18ea/fs/ext3/super.c
---- linux-2.4.18/fs/ext3/super.c Sun Feb 24 04:42:59 2002
-+++ linux-2.4.18ea/fs/ext3/super.c Thu Apr 4 21:41:05 2002
+ /*
+--- linux-2.4.18-18/fs/ext3/super.c~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/super.c 2003-04-20 16:14:31.000000000 +0800
@@ -24,6 +24,7 @@
#include <linux/jbd.h>
#include <linux/ext3_fs.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/locks.h>
-@@ -404,6 +405,7 @@
+@@ -404,6 +405,7 @@ void ext3_put_super (struct super_block
kdev_t j_dev = sbi->s_journal->j_dev;
int i;
journal_destroy(sbi->s_journal);
if (!(sb->s_flags & MS_RDONLY)) {
EXT3_CLEAR_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_RECOVER);
-@@ -1734,14 +1772,25 @@
+@@ -1748,14 +1750,25 @@ int ext3_statfs (struct super_block * sb
static DECLARE_FSTYPE_DEV(ext3_fs_type, "ext3", ext3_read_super);
+ return error;
}
- EXPORT_NO_SYMBOLS;
-diff -Nur linux-2.4.18/fs/ext3/xattr.c linux-2.4.18ea/fs/ext3/xattr.c
---- linux-2.4.18/fs/ext3/xattr.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18ea/fs/ext3/xattr.c Wed Apr 3 13:19:05 2002
+ EXPORT_SYMBOL(ext3_bread);
+--- /dev/null 2002-08-31 07:31:37.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/xattr.c 2003-04-20 16:14:31.000000000 +0800
@@ -0,0 +1,1247 @@
+/*
+ * linux/fs/ext3/xattr.c
+#include <linux/module.h>
+
+/* These symbols may be needed by a module. */
-+EXPORT_SYMBOL(extN_xattr_register);
-+EXPORT_SYMBOL(extN_xattr_unregister);
-+EXPORT_SYMBOL(extN_xattr_get);
-+EXPORT_SYMBOL(extN_xattr_list);
-+EXPORT_SYMBOL(extN_xattr_set);
++EXPORT_SYMBOL(ext3_xattr_register);
++EXPORT_SYMBOL(ext3_xattr_unregister);
++EXPORT_SYMBOL(ext3_xattr_get);
++EXPORT_SYMBOL(ext3_xattr_list);
++EXPORT_SYMBOL(ext3_xattr_set);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
+# define mark_buffer_dirty(bh) mark_buffer_dirty(bh, 1)
+}
+
+#endif /* CONFIG_EXT3_FS_XATTR_SHARING */
-diff -Nur linux-2.4.18/include/linux/ext3_fs.h linux-2.4.18ea/include/linux/ext3_fs.h
---- linux-2.4.18/include/linux/ext3_fs.h Sun Feb 24 04:42:59 2002
-+++ linux-2.4.18ea/include/linux/ext3_fs.h Mon Mar 11 03:27:00 2002
+--- linux-2.4.18-18/include/linux/ext3_fs.h~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/include/linux/ext3_fs.h 2003-04-20 16:14:31.000000000 +0800
@@ -58,8 +58,6 @@
*/
#define EXT3_BAD_INO 1 /* Bad blocks inode */
* Structure of a blocks group descriptor
*/
struct ext3_group_desc
-@@ -512,7 +487,7 @@
+@@ -513,7 +488,7 @@ struct ext3_super_block {
#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */
#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */
#define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \
EXT3_FEATURE_INCOMPAT_RECOVER)
#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \
-@@ -603,4 +578,22 @@
- */
+@@ -606,6 +581,24 @@ struct ext3_iloc
+ unsigned long block_group;
+ };
+/* Defined for extended attributes */
+#define CONFIG_EXT3_FS_XATTR y
+#endif
+
/*
- * Ok, these declarations are also in <linux/kernel.h> but none of the
-@@ -628,6 +603,7 @@
+ * Function prototypes
+ */
+@@ -647,6 +640,7 @@ extern void ext3_check_inodes_bitmap (st
extern unsigned long ext3_count_free (struct buffer_head *, unsigned);
/* inode.c */
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 *);
-diff -Nur linux-2.4.18/include/linux/ext3_jbd.h linux-2.4.18ea/include/linux/ext3_jbd.h
---- linux-2.4.18/include/linux/ext3_jbd.h Fri Dec 21 18:42:03 2001
-+++ linux-2.4.18ea/include/linux/ext3_jbd.h Mon Mar 25 00:11:36 2002
+--- linux-2.4.18-18/include/linux/ext3_jbd.h~linux-2.4.18ea-0.8.26 2003-04-20 16:14:31.000000000 +0800
++++ linux-2.4.18-18-root/include/linux/ext3_jbd.h 2003-04-20 16:14:31.000000000 +0800
@@ -30,13 +30,19 @@
#define EXT3_SINGLEDATA_TRANS_BLOCKS 8
extern int ext3_writepage_trans_blocks(struct inode *inode);
-diff -Nur linux-2.4.18/include/linux/ext3_xattr.h linux-2.4.18ea/include/linux/ext3_xattr.h
---- linux-2.4.18/include/linux/ext3_xattr.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18ea/include/linux/ext3_xattr.h Fri Apr 5 10:08:01 2002
+--- /dev/null 2002-08-31 07:31:37.000000000 +0800
++++ linux-2.4.18-18-root/include/linux/ext3_xattr.h 2003-04-20 16:14:31.000000000 +0800
@@ -0,0 +1,155 @@
+/*
+ File: linux/ext3_xattr.h
+
+#endif /* __KERNEL__ */
+
-diff -Nur linux-2.4.18/include/linux/xattr.h linux-2.4.18ea/include/linux/xattr.h
---- linux-2.4.18/include/linux/xattr.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18ea/include/linux/xattr.h Sun Mar 24 23:42:21 2002
+--- /dev/null 2002-08-31 07:31:37.000000000 +0800
++++ linux-2.4.18-18-root/include/linux/xattr.h 2003-04-20 16:14:31.000000000 +0800
@@ -0,0 +1,15 @@
+/*
+ File: linux/xattr.h
+#define XATTR_REPLACE 2 /* set value, fail if attr does not exist */
+
+#endif /* _LINUX_XATTR_H */
+--- linux-2.4.18-18/fs/ext3/Makefile~linux-2.4.18ea-0.8.26 2003-04-20 16:14:54.000000000 +0800
++++ linux-2.4.18-18-root/fs/ext3/Makefile 2003-04-20 16:15:15.000000000 +0800
+@@ -9,10 +9,10 @@
+
+ O_TARGET := ext3.o
+
+-export-objs := super.o inode.o
++export-objs := super.o inode.o xattr.o
+
+ obj-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
+- ioctl.o namei.o super.o symlink.o
++ ioctl.o namei.o super.o symlink.o xattr.o
+ obj-m := $(O_TARGET)
+
+ include $(TOPDIR)/Rules.make
+
+_