This is required by the userspace tool fsck.pramfs to check inode xattr
blocks.
Signed-off-by: Vladimir Davydov <vda...@pa...>
---
pram_fs_uapi.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++
xattr.h | 42 ------------------------------------------
2 files changed, 46 insertions(+), 42 deletions(-)
diff --git a/pram_fs_uapi.h b/pram_fs_uapi.h
index 0ac3172..b488674 100644
--- a/pram_fs_uapi.h
+++ b/pram_fs_uapi.h
@@ -143,4 +143,50 @@ struct pram_super_block {
/* The root inode follows immediately after the redundant super block */
#define PRAM_ROOT_INO (PRAM_SB_SIZE*2)
+/*
+ * XATTR related
+ */
+
+/* Magic value in attribute blocks */
+#define PRAM_XATTR_MAGIC 0x6d617270
+
+/* Maximum number of references to one attribute block */
+#define PRAM_XATTR_REFCOUNT_MAX 1024
+
+/* Name indexes */
+#define PRAM_XATTR_INDEX_USER 1
+#define PRAM_XATTR_INDEX_POSIX_ACL_ACCESS 2
+#define PRAM_XATTR_INDEX_POSIX_ACL_DEFAULT 3
+#define PRAM_XATTR_INDEX_TRUSTED 4
+#define PRAM_XATTR_INDEX_SECURITY 5
+
+struct pram_xattr_header {
+ __be32 h_magic; /* magic number for identification */
+ __be32 h_refcount; /* reference count */
+ __be32 h_hash; /* hash value of all attributes */
+ __u32 h_reserved[4]; /* zero right now */
+};
+
+struct pram_xattr_entry {
+ __u8 e_name_len; /* length of name */
+ __u8 e_name_index; /* attribute name index */
+ __be16 e_value_offs; /* offset in disk block of value */
+ __be32 e_value_block; /* disk block attribute is stored on (n/i) */
+ __be32 e_value_size; /* size of attribute value */
+ __be32 e_hash; /* hash value of name and value */
+ char e_name[0]; /* attribute name */
+};
+
+#define PRAM_XATTR_PAD_BITS 2
+#define PRAM_XATTR_PAD (1<<PRAM_XATTR_PAD_BITS)
+#define PRAM_XATTR_ROUND (PRAM_XATTR_PAD-1)
+#define PRAM_XATTR_LEN(name_len) \
+ (((name_len) + PRAM_XATTR_ROUND + \
+ sizeof(struct pram_xattr_entry)) & ~PRAM_XATTR_ROUND)
+#define PRAM_XATTR_NEXT(entry) \
+ ((struct pram_xattr_entry *)( \
+ (char *)(entry) + PRAM_XATTR_LEN((entry)->e_name_len)))
+#define PRAM_XATTR_SIZE(size) \
+ (((size) + PRAM_XATTR_ROUND) & ~PRAM_XATTR_ROUND)
+
#endif /* _UAPI_LINUX_PRAM_FS_H */
diff --git a/xattr.h b/xattr.h
index 617273b..65c7e6d 100644
--- a/xattr.h
+++ b/xattr.h
@@ -17,48 +17,6 @@
#include <linux/init.h>
#include <linux/xattr.h>
-/* Magic value in attribute blocks */
-#define PRAM_XATTR_MAGIC 0x6d617270
-
-/* Maximum number of references to one attribute block */
-#define PRAM_XATTR_REFCOUNT_MAX 1024
-
-/* Name indexes */
-#define PRAM_XATTR_INDEX_USER 1
-#define PRAM_XATTR_INDEX_POSIX_ACL_ACCESS 2
-#define PRAM_XATTR_INDEX_POSIX_ACL_DEFAULT 3
-#define PRAM_XATTR_INDEX_TRUSTED 4
-#define PRAM_XATTR_INDEX_SECURITY 5
-
-struct pram_xattr_header {
- __be32 h_magic; /* magic number for identification */
- __be32 h_refcount; /* reference count */
- __be32 h_hash; /* hash value of all attributes */
- __u32 h_reserved[4]; /* zero right now */
-};
-
-struct pram_xattr_entry {
- __u8 e_name_len; /* length of name */
- __u8 e_name_index; /* attribute name index */
- __be16 e_value_offs; /* offset in disk block of value */
- __be32 e_value_block; /* disk block attribute is stored on (n/i) */
- __be32 e_value_size; /* size of attribute value */
- __be32 e_hash; /* hash value of name and value */
- char e_name[0]; /* attribute name */
-};
-
-#define PRAM_XATTR_PAD_BITS 2
-#define PRAM_XATTR_PAD (1<<PRAM_XATTR_PAD_BITS)
-#define PRAM_XATTR_ROUND (PRAM_XATTR_PAD-1)
-#define PRAM_XATTR_LEN(name_len) \
- (((name_len) + PRAM_XATTR_ROUND + \
- sizeof(struct pram_xattr_entry)) & ~PRAM_XATTR_ROUND)
-#define PRAM_XATTR_NEXT(entry) \
- ((struct pram_xattr_entry *)( \
- (char *)(entry) + PRAM_XATTR_LEN((entry)->e_name_len)))
-#define PRAM_XATTR_SIZE(size) \
- (((size) + PRAM_XATTR_ROUND) & ~PRAM_XATTR_ROUND)
-
#ifdef CONFIG_PRAMFS_XATTR
extern const struct xattr_handler pram_xattr_user_handler;
--
1.7.10.4
|