]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.suse/ocfs2-Add-incompatible-flag-for-exten.patch
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / ocfs2-Add-incompatible-flag-for-exten.patch
diff --git a/src/patches/suse-2.6.27.31/patches.suse/ocfs2-Add-incompatible-flag-for-exten.patch b/src/patches/suse-2.6.27.31/patches.suse/ocfs2-Add-incompatible-flag-for-exten.patch
deleted file mode 100644 (file)
index 9099278..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-From: Tiger Yang <tiger.yang@oracle.com>
-Subject: [PATCH 16/16] ocfs2: Add incompatible flag for extended attribute
-Patch-mainline: 2.6.28?
-References: FATE302067 
-
-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 <tiger.yang@oracle.com>
-Signed-off-by: Mark Fasheh <mfasheh@suse.com>
----
- fs/ocfs2/ocfs2.h    |    7 +++++++
- fs/ocfs2/ocfs2_fs.h |   19 +++++++++++++------
- fs/ocfs2/super.c    |    3 ++-
- fs/ocfs2/xattr.c    |   12 ++++++++++++
- 4 files changed, 34 insertions(+), 7 deletions(-)
-
-diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
-index 35ed7eb..487487a 100644
---- a/fs/ocfs2/ocfs2.h
-+++ b/fs/ocfs2/ocfs2.h
-@@ -343,6 +343,13 @@ static inline int ocfs2_supports_inline_data(struct ocfs2_super *osb)
-       return 0;
- }
-+static inline int ocfs2_supports_xattr(struct ocfs2_super *osb)
-+{
-+      if (osb->s_feature_incompat & OCFS2_FEATURE_INCOMPAT_XATTR)
-+              return 1;
-+      return 0;
-+}
-+
- /* set / clear functions because cluster events can make these happen
-  * in parallel so we want the transitions to be atomic. this also
-  * means that any future flags osb_flags must be protected by spinlock
-diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
-index 8d5e72f..f24ce3d 100644
---- a/fs/ocfs2/ocfs2_fs.h
-+++ b/fs/ocfs2/ocfs2_fs.h
-@@ -91,7 +91,8 @@
-                                        | OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \
-                                        | OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
-                                        | OCFS2_FEATURE_INCOMPAT_EXTENDED_SLOT_MAP \
--                                       | OCFS2_FEATURE_INCOMPAT_USERSPACE_STACK)
-+                                       | OCFS2_FEATURE_INCOMPAT_USERSPACE_STACK \
-+                                       | OCFS2_FEATURE_INCOMPAT_XATTR)
- #define OCFS2_FEATURE_RO_COMPAT_SUPP  OCFS2_FEATURE_RO_COMPAT_UNWRITTEN
- /*
-@@ -128,10 +129,6 @@
- /* Support for data packed into inode blocks */
- #define OCFS2_FEATURE_INCOMPAT_INLINE_DATA    0x0040
--/* Support for the extended slot map */
--#define OCFS2_FEATURE_INCOMPAT_EXTENDED_SLOT_MAP 0x100
--
--
- /*
-  * Support for alternate, userspace cluster stacks.  If set, the superblock
-  * field s_cluster_info contains a tag for the alternate stack in use as
-@@ -143,6 +140,12 @@
-  */
- #define OCFS2_FEATURE_INCOMPAT_USERSPACE_STACK        0x0080
-+/* Support for the extended slot map */
-+#define OCFS2_FEATURE_INCOMPAT_EXTENDED_SLOT_MAP 0x100
-+
-+/* Support for extended attributes */
-+#define OCFS2_FEATURE_INCOMPAT_XATTR          0x0200
-+
- /*
-  * backup superblock flag is used to indicate that this volume
-  * has backup superblocks.
-@@ -578,7 +581,11 @@ struct ocfs2_super_block {
- /*A0*/  struct ocfs2_cluster_info s_cluster_info; /* Selected userspace
-                                                    stack.  Only valid
-                                                    with INCOMPAT flag. */
--/*B8*/  __le64 s_reserved2[17];               /* Fill out superblock */
-+/*B8*/        __le16 s_xattr_inline_size;     /* extended attribute inline size
-+                                         for this fs*/
-+      __le16 s_reserved0;
-+      __le32 s_reserved1;
-+/*C0*/  __le64 s_reserved2[16];               /* Fill out superblock */
- /*140*/
-       /*
-diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
-index 03a25c4..2173169 100644
---- a/fs/ocfs2/super.c
-+++ b/fs/ocfs2/super.c
-@@ -1434,7 +1434,8 @@ static int ocfs2_initialize_super(struct super_block *sb,
-       osb->slot_num = OCFS2_INVALID_SLOT;
--      osb->s_xattr_inline_size = OCFS2_MIN_XATTR_INLINE_SIZE;
-+      osb->s_xattr_inline_size = le16_to_cpu(
-+                                      di->id2.i_super.s_xattr_inline_size);
-       osb->local_alloc_state = OCFS2_LA_UNUSED;
-       osb->local_alloc_bh = NULL;
-diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
-index e78ed7a..505fb40 100644
---- a/fs/ocfs2/xattr.c
-+++ b/fs/ocfs2/xattr.c
-@@ -580,6 +580,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;
-@@ -859,6 +862,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;
-@@ -1557,6 +1563,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;
-@@ -1993,6 +2002,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);
--- 
-1.5.4.5
-