diff options
author | Venky Shankar <vshankar@redhat.com> | 2014-02-13 12:09:46 +0530 |
---|---|---|
committer | Jeff Darcy <jdarcy@redhat.com> | 2014-03-12 13:59:37 +0000 |
commit | a58b023443b7a2ec089c45bf35bde2b0108aa19b (patch) | |
tree | e03704bf10d87e5ecac9cc8cf0fd1744743c22b2 /xlators/features/changelog/src/changelog-helpers.h | |
parent | 2a2a2ab2cb08a38f0bfb773900b5ef5babce856b (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.h | 33 |
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 { \ |