--- linux-2.6.12.2-vs2.0-rc5.6/fs/jfs/acl.c 2004-12-25 01:55:20 +0100 +++ linux-2.6.12.2-vs2.0-rc5.7/fs/jfs/acl.c 2005-07-08 03:24:18 +0200 @@ -220,7 +220,8 @@ int jfs_setattr(struct dentry *dentry, s return rc; if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) || - (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) { + (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid) || + (iattr->ia_valid & ATTR_XID && iattr->ia_xid != inode->i_xid)) { if (DQUOT_TRANSFER(inode, iattr)) return -EDQUOT; } --- linux-2.6.12.2-vs2.0-rc5.6/fs/jfs/jfs_filsys.h 2004-08-14 12:55:32 +0200 +++ linux-2.6.12.2-vs2.0-rc5.7/fs/jfs/jfs_filsys.h 2005-07-08 03:00:56 +0200 @@ -81,6 +81,7 @@ #define JFS_DIR_INDEX 0x00200000 /* Persistant index for */ /* directory entries */ +#define JFS_TAGXID 0x00800000 /* xid tagging */ /* * buffer cache configuration --- linux-2.6.12.2-vs2.0-rc5.6/fs/jfs/jfs_inode.c 2004-10-23 05:06:16 +0200 +++ linux-2.6.12.2-vs2.0-rc5.7/fs/jfs/jfs_inode.c 2005-07-08 04:01:43 +0200 @@ -18,6 +18,8 @@ #include #include +#include + #include "jfs_incore.h" #include "jfs_filsys.h" #include "jfs_imap.h" @@ -60,6 +62,7 @@ struct inode *ialloc(struct inode *paren mode |= S_ISGID; } else inode->i_gid = current->fsgid; + inode->i_xid = vx_current_fsxid(sb); /* * Allocate inode to quota. --- linux-2.6.12.2-vs2.0-rc5.6/fs/jfs/super.c 2005-06-22 02:38:36 +0200 +++ linux-2.6.12.2-vs2.0-rc5.7/fs/jfs/super.c 2005-07-08 03:18:47 +0200 @@ -219,7 +219,7 @@ static void jfs_put_super(struct super_b enum { Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize, - Opt_resize_nosize, Opt_errors, Opt_ignore, Opt_err, + Opt_resize_nosize, Opt_errors, Opt_tagxid, Opt_ignore, Opt_err, }; static match_table_t tokens = { @@ -229,6 +229,7 @@ static match_table_t tokens = { {Opt_resize, "resize=%u"}, {Opt_resize_nosize, "resize"}, {Opt_errors, "errors=%s"}, + {Opt_tagxid, "tagxid"}, {Opt_ignore, "noquota"}, {Opt_ignore, "quota"}, {Opt_ignore, "usrquota"}, @@ -320,6 +321,9 @@ static int parse_options(char *options, } break; } + case Opt_tagxid: + *flag |= JFS_TAGXID; + break; default: printk("jfs: Unrecognized mount option \"%s\" " " or missing value\n", p); @@ -421,6 +425,9 @@ static int jfs_fill_super(struct super_b #ifdef CONFIG_JFS_POSIX_ACL sb->s_flags |= MS_POSIXACL; #endif + /* map mount option tagxid */ + if (sbi->flag & JFS_TAGXID) + sb->s_flags |= MS_TAGXID; if (newLVSize) { printk(KERN_ERR "resize option for remount only\n");