From 8154da3d2114241cf3edb108b43e2172be86d483 Mon Sep 17 00:00:00 2001 From: Tiger Yang Date: Mon, 18 Aug 2008 17:11:46 +0800 Subject: ocfs2: Add incompatible flag for extended attribute This patch adds the s_incompat flag for extended attribute support. This helps us ensure that older versions of Ocfs2 or ocfs2-tools will not be able to mount a volume with xattr support. Signed-off-by: Tiger Yang Signed-off-by: Mark Fasheh --- fs/ocfs2/xattr.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'fs/ocfs2/xattr.c') diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c index 9ec7136b3ad7..090449f9263e 100644 --- a/fs/ocfs2/xattr.c +++ b/fs/ocfs2/xattr.c @@ -564,6 +564,9 @@ ssize_t ocfs2_listxattr(struct dentry *dentry, struct ocfs2_dinode *di = NULL; struct ocfs2_inode_info *oi = OCFS2_I(dentry->d_inode); + if (!ocfs2_supports_xattr(OCFS2_SB(dentry->d_sb))) + return -EOPNOTSUPP; + if (!(oi->ip_dyn_features & OCFS2_HAS_XATTR_FL)) return ret; @@ -843,6 +846,9 @@ int ocfs2_xattr_get(struct inode *inode, .not_found = -ENODATA, }; + if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + return -EOPNOTSUPP; + if (!(oi->ip_dyn_features & OCFS2_HAS_XATTR_FL)) ret = -ENODATA; @@ -1541,6 +1547,9 @@ int ocfs2_xattr_remove(struct inode *inode, struct buffer_head *di_bh) handle_t *handle; int ret; + if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + return 0; + if (!(oi->ip_dyn_features & OCFS2_HAS_XATTR_FL)) return 0; @@ -1977,6 +1986,9 @@ int ocfs2_xattr_set(struct inode *inode, .not_found = -ENODATA, }; + if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + return -EOPNOTSUPP; + ret = ocfs2_inode_lock(inode, &di_bh, 1); if (ret < 0) { mlog_errno(ret); -- cgit v1.2.2