summaryrefslogtreecommitdiffstats
path: root/xlators/features/changelog/src/changelog-helpers.h
diff options
context:
space:
mode:
authorVenky Shankar <vshankar@redhat.com>2014-02-13 12:09:46 +0530
committerJeff Darcy <jdarcy@redhat.com>2014-03-12 13:59:37 +0000
commita58b023443b7a2ec089c45bf35bde2b0108aa19b (patch)
treee03704bf10d87e5ecac9cc8cf0fd1744743c22b2 /xlators/features/changelog/src/changelog-helpers.h
parent2a2a2ab2cb08a38f0bfb773900b5ef5babce856b (diff)
features/changelog: NSR Journal changes
* Sequential updates to journal * Journal update in the FOP path * NSR specific format changes TBD --- * POST-OP record Change-Id: I5b21b7624ccb095295a0c69abf00866e0d6cd818 Signed-off-by: Venky Shankar <vshankar@redhat.com>
Diffstat (limited to 'xlators/features/changelog/src/changelog-helpers.h')
-rw-r--r--xlators/features/changelog/src/changelog-helpers.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/xlators/features/changelog/src/changelog-helpers.h b/xlators/features/changelog/src/changelog-helpers.h
index 4c3d5405b..f8f254cf6 100644
--- a/xlators/features/changelog/src/changelog-helpers.h
+++ b/xlators/features/changelog/src/changelog-helpers.h
@@ -373,7 +373,10 @@ typedef enum {
CHANGELOG_OPT_REC_FOP,
CHANGELOG_OPT_REC_ULL,
CHANGELOG_OPT_REC_UUID,
+ CHANGELOG_OPT_REC_NAME,
CHANGELOG_OPT_REC_ENTRY,
+ CHANGELOG_OPT_REC_INT32,
+ CHANGELOG_OPT_REC_UINT32,
} changelog_optional_rec_type_t;
struct changelog_entry_fields {
@@ -404,6 +407,8 @@ typedef struct {
union {
uuid_t co_uuid;
glusterfs_fop_t co_fop;
+ int co_int32;
+ unsigned int co_uint32;
unsigned long long co_number;
struct changelog_entry_fields co_entry;
};
@@ -491,6 +496,22 @@ changelog_forget (xlator_t *this, inode_t *inode);
} \
} while (0)
+#define CHANGELOG_FILL_INT32(co, number, converter, xlen) do { \
+ co->co_convert = converter; \
+ co->co_free = NULL; \
+ co->co_type = CHANGELOG_OPT_REC_INT32; \
+ co->co_int32 = number; \
+ xlen += sizeof (int); \
+ } while (0)
+
+#define CHANGELOG_FILL_UINT32(co, number, converter, xlen) do { \
+ co->co_convert = converter; \
+ co->co_free = NULL; \
+ co->co_type = CHANGELOG_OPT_REC_UINT32; \
+ co->co_uint32 = number; \
+ xlen += sizeof (unsigned int); \
+ } while (0)
+
#define CHANGELOG_FILL_FOP_NUMBER(co, fop, converter, xlen) do { \
co->co_convert = converter; \
co->co_free = NULL; \
@@ -499,6 +520,18 @@ changelog_forget (xlator_t *this, inode_t *inode);
xlen += sizeof (fop); \
} while (0)
+#define CHANGELOG_FILL_NAME(co, name, freefn, xlen, label) \
+ do { \
+ co->co_convert = NULL; \
+ co->co_free = freefn; \
+ co->co_type = CHANGELOG_OPT_REC_NAME; \
+ co->co_entry.cef_bname = gf_strdup(name); \
+ if (!co->co_entry.cef_bname) \
+ goto label; \
+ co->co_len = strlen (name); \
+ xlen += co->co_len; \
+ } while(0) \
+
#define CHANGELOG_FILL_ENTRY(co, pargfid, bname, \
converter, freefn, xlen, label) \
do { \