summaryrefslogtreecommitdiffstats
path: root/rpc/xdr/src/glusterfs3.h
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/xdr/src/glusterfs3.h')
-rw-r--r--rpc/xdr/src/glusterfs3.h1408
1 files changed, 709 insertions, 699 deletions
diff --git a/rpc/xdr/src/glusterfs3.h b/rpc/xdr/src/glusterfs3.h
index 4ffad3c5b45..b8ef394abaf 100644
--- a/rpc/xdr/src/glusterfs3.h
+++ b/rpc/xdr/src/glusterfs3.h
@@ -20,867 +20,877 @@
#include "protocol-common.h"
#include "upcall-utils.h"
-#define xdr_decoded_remaining_addr(xdr) ((&xdr)->x_private)
-#define xdr_decoded_remaining_len(xdr) ((&xdr)->x_handy)
-#define xdr_encoded_length(xdr) (((size_t)(&xdr)->x_private) - ((size_t)(&xdr)->x_base))
-#define xdr_decoded_length(xdr) (((size_t)(&xdr)->x_private) - ((size_t)(&xdr)->x_base))
-
-
-#define GF_O_ACCMODE 003
-#define GF_O_RDONLY 00
-#define GF_O_WRONLY 01
-#define GF_O_RDWR 02
-#define GF_O_CREAT 0100
-#define GF_O_EXCL 0200
-#define GF_O_NOCTTY 0400
-#define GF_O_TRUNC 01000
-#define GF_O_APPEND 02000
-#define GF_O_NONBLOCK 04000
-#define GF_O_SYNC 010000
-#define GF_O_ASYNC 020000
-
-#define GF_O_DIRECT 040000
-#define GF_O_DIRECTORY 0200000
-#define GF_O_NOFOLLOW 0400000
-#define GF_O_NOATIME 01000000
-#define GF_O_CLOEXEC 02000000
-
-#define GF_O_LARGEFILE 0100000
-
-#define GF_O_FMODE_EXEC 040
-
-#define XLATE_BIT(from, to, bit) do { \
- if (from & bit) \
- to = to | GF_##bit; \
- } while (0)
-
-#define UNXLATE_BIT(from, to, bit) do { \
- if (from & GF_##bit) \
- to = to | bit; \
- } while (0)
-
-#define XLATE_ACCESSMODE(from, to) do { \
- switch (from & O_ACCMODE) { \
- case O_RDONLY: to |= GF_O_RDONLY; \
- break; \
- case O_WRONLY: to |= GF_O_WRONLY; \
- break; \
- case O_RDWR: to |= GF_O_RDWR; \
- break; \
- } \
- } while (0)
-
-#define UNXLATE_ACCESSMODE(from, to) do { \
- switch (from & GF_O_ACCMODE) { \
- case GF_O_RDONLY: to |= O_RDONLY; \
- break; \
- case GF_O_WRONLY: to |= O_WRONLY; \
- break; \
- case GF_O_RDWR: to |= O_RDWR; \
- break; \
- } \
- } while (0)
+#define xdr_decoded_remaining_addr(xdr) ((&xdr)->x_private)
+#define xdr_decoded_remaining_len(xdr) ((&xdr)->x_handy)
+#define xdr_encoded_length(xdr) \
+ (((size_t)(&xdr)->x_private) - ((size_t)(&xdr)->x_base))
+#define xdr_decoded_length(xdr) \
+ (((size_t)(&xdr)->x_private) - ((size_t)(&xdr)->x_base))
+
+#define GF_O_ACCMODE 003
+#define GF_O_RDONLY 00
+#define GF_O_WRONLY 01
+#define GF_O_RDWR 02
+#define GF_O_CREAT 0100
+#define GF_O_EXCL 0200
+#define GF_O_NOCTTY 0400
+#define GF_O_TRUNC 01000
+#define GF_O_APPEND 02000
+#define GF_O_NONBLOCK 04000
+#define GF_O_SYNC 010000
+#define GF_O_ASYNC 020000
+
+#define GF_O_DIRECT 040000
+#define GF_O_DIRECTORY 0200000
+#define GF_O_NOFOLLOW 0400000
+#define GF_O_NOATIME 01000000
+#define GF_O_CLOEXEC 02000000
+
+#define GF_O_LARGEFILE 0100000
+
+#define GF_O_FMODE_EXEC 040
+
+#define XLATE_BIT(from, to, bit) \
+ do { \
+ if (from & bit) \
+ to = to | GF_##bit; \
+ } while (0)
+
+#define UNXLATE_BIT(from, to, bit) \
+ do { \
+ if (from & GF_##bit) \
+ to = to | bit; \
+ } while (0)
+
+#define XLATE_ACCESSMODE(from, to) \
+ do { \
+ switch (from & O_ACCMODE) { \
+ case O_RDONLY: \
+ to |= GF_O_RDONLY; \
+ break; \
+ case O_WRONLY: \
+ to |= GF_O_WRONLY; \
+ break; \
+ case O_RDWR: \
+ to |= GF_O_RDWR; \
+ break; \
+ } \
+ } while (0)
+
+#define UNXLATE_ACCESSMODE(from, to) \
+ do { \
+ switch (from & GF_O_ACCMODE) { \
+ case GF_O_RDONLY: \
+ to |= O_RDONLY; \
+ break; \
+ case GF_O_WRONLY: \
+ to |= O_WRONLY; \
+ break; \
+ case GF_O_RDWR: \
+ to |= O_RDWR; \
+ break; \
+ } \
+ } while (0)
static inline uint32_t
-gf_flags_from_flags (uint32_t flags)
+gf_flags_from_flags(uint32_t flags)
{
- uint32_t gf_flags = 0;
-
- XLATE_ACCESSMODE (flags, gf_flags);
-
- XLATE_BIT (flags, gf_flags, O_CREAT);
- XLATE_BIT (flags, gf_flags, O_EXCL);
- XLATE_BIT (flags, gf_flags, O_NOCTTY);
- XLATE_BIT (flags, gf_flags, O_TRUNC);
- XLATE_BIT (flags, gf_flags, O_APPEND);
- XLATE_BIT (flags, gf_flags, O_NONBLOCK);
- XLATE_BIT (flags, gf_flags, O_SYNC);
- XLATE_BIT (flags, gf_flags, O_ASYNC);
-
- XLATE_BIT (flags, gf_flags, O_DIRECT);
- XLATE_BIT (flags, gf_flags, O_DIRECTORY);
- XLATE_BIT (flags, gf_flags, O_NOFOLLOW);
+ uint32_t gf_flags = 0;
+
+ XLATE_ACCESSMODE(flags, gf_flags);
+
+ XLATE_BIT(flags, gf_flags, O_CREAT);
+ XLATE_BIT(flags, gf_flags, O_EXCL);
+ XLATE_BIT(flags, gf_flags, O_NOCTTY);
+ XLATE_BIT(flags, gf_flags, O_TRUNC);
+ XLATE_BIT(flags, gf_flags, O_APPEND);
+ XLATE_BIT(flags, gf_flags, O_NONBLOCK);
+ XLATE_BIT(flags, gf_flags, O_SYNC);
+ XLATE_BIT(flags, gf_flags, O_ASYNC);
+
+ XLATE_BIT(flags, gf_flags, O_DIRECT);
+ XLATE_BIT(flags, gf_flags, O_DIRECTORY);
+ XLATE_BIT(flags, gf_flags, O_NOFOLLOW);
#ifdef O_NOATIME
- XLATE_BIT (flags, gf_flags, O_NOATIME);
+ XLATE_BIT(flags, gf_flags, O_NOATIME);
#endif
#ifdef O_CLOEXEC
- XLATE_BIT (flags, gf_flags, O_CLOEXEC);
+ XLATE_BIT(flags, gf_flags, O_CLOEXEC);
#endif
- XLATE_BIT (flags, gf_flags, O_LARGEFILE);
- XLATE_BIT (flags, gf_flags, O_FMODE_EXEC);
+ XLATE_BIT(flags, gf_flags, O_LARGEFILE);
+ XLATE_BIT(flags, gf_flags, O_FMODE_EXEC);
- return gf_flags;
+ return gf_flags;
}
static inline uint32_t
-gf_flags_to_flags (uint32_t gf_flags)
+gf_flags_to_flags(uint32_t gf_flags)
{
- uint32_t flags = 0;
-
- UNXLATE_ACCESSMODE (gf_flags, flags);
-
- UNXLATE_BIT (gf_flags, flags, O_CREAT);
- UNXLATE_BIT (gf_flags, flags, O_EXCL);
- UNXLATE_BIT (gf_flags, flags, O_NOCTTY);
- UNXLATE_BIT (gf_flags, flags, O_TRUNC);
- UNXLATE_BIT (gf_flags, flags, O_APPEND);
- UNXLATE_BIT (gf_flags, flags, O_NONBLOCK);
- UNXLATE_BIT (gf_flags, flags, O_SYNC);
- UNXLATE_BIT (gf_flags, flags, O_ASYNC);
-
- UNXLATE_BIT (gf_flags, flags, O_DIRECT);
- UNXLATE_BIT (gf_flags, flags, O_DIRECTORY);
- UNXLATE_BIT (gf_flags, flags, O_NOFOLLOW);
+ uint32_t flags = 0;
+
+ UNXLATE_ACCESSMODE(gf_flags, flags);
+
+ UNXLATE_BIT(gf_flags, flags, O_CREAT);
+ UNXLATE_BIT(gf_flags, flags, O_EXCL);
+ UNXLATE_BIT(gf_flags, flags, O_NOCTTY);
+ UNXLATE_BIT(gf_flags, flags, O_TRUNC);
+ UNXLATE_BIT(gf_flags, flags, O_APPEND);
+ UNXLATE_BIT(gf_flags, flags, O_NONBLOCK);
+ UNXLATE_BIT(gf_flags, flags, O_SYNC);
+ UNXLATE_BIT(gf_flags, flags, O_ASYNC);
+
+ UNXLATE_BIT(gf_flags, flags, O_DIRECT);
+ UNXLATE_BIT(gf_flags, flags, O_DIRECTORY);
+ UNXLATE_BIT(gf_flags, flags, O_NOFOLLOW);
#ifdef O_NOATIME
- UNXLATE_BIT (gf_flags, flags, O_NOATIME);
+ UNXLATE_BIT(gf_flags, flags, O_NOATIME);
#endif
#ifdef O_CLOEXEC
- UNXLATE_BIT (gf_flags, flags, O_CLOEXEC);
+ UNXLATE_BIT(gf_flags, flags, O_CLOEXEC);
#endif
- UNXLATE_BIT (gf_flags, flags, O_LARGEFILE);
- UNXLATE_BIT (gf_flags, flags, O_FMODE_EXEC);
+ UNXLATE_BIT(gf_flags, flags, O_LARGEFILE);
+ UNXLATE_BIT(gf_flags, flags, O_FMODE_EXEC);
- return flags;
+ return flags;
}
-
static inline void
-gf_statfs_to_statfs (struct gf_statfs *gf_stat, struct statvfs *stat)
+gf_statfs_to_statfs(struct gf_statfs *gf_stat, struct statvfs *stat)
{
- if (!stat || !gf_stat)
- return;
-
- stat->f_bsize = (gf_stat->bsize);
- stat->f_frsize = (gf_stat->frsize);
- stat->f_blocks = (gf_stat->blocks);
- stat->f_bfree = (gf_stat->bfree);
- stat->f_bavail = (gf_stat->bavail);
- stat->f_files = (gf_stat->files);
- stat->f_ffree = (gf_stat->ffree);
- stat->f_favail = (gf_stat->favail);
- stat->f_fsid = (gf_stat->fsid);
- stat->f_flag = (gf_stat->flag);
- stat->f_namemax = (gf_stat->namemax);
+ if (!stat || !gf_stat)
+ return;
+
+ stat->f_bsize = (gf_stat->bsize);
+ stat->f_frsize = (gf_stat->frsize);
+ stat->f_blocks = (gf_stat->blocks);
+ stat->f_bfree = (gf_stat->bfree);
+ stat->f_bavail = (gf_stat->bavail);
+ stat->f_files = (gf_stat->files);
+ stat->f_ffree = (gf_stat->ffree);
+ stat->f_favail = (gf_stat->favail);
+ stat->f_fsid = (gf_stat->fsid);
+ stat->f_flag = (gf_stat->flag);
+ stat->f_namemax = (gf_stat->namemax);
}
-
static inline void
-gf_statfs_from_statfs (struct gf_statfs *gf_stat, struct statvfs *stat)
+gf_statfs_from_statfs(struct gf_statfs *gf_stat, struct statvfs *stat)
{
- if (!stat || !gf_stat)
- return;
-
- gf_stat->bsize = stat->f_bsize;
- gf_stat->frsize = stat->f_frsize;
- gf_stat->blocks = stat->f_blocks;
- gf_stat->bfree = stat->f_bfree;
- gf_stat->bavail = stat->f_bavail;
- gf_stat->files = stat->f_files;
- gf_stat->ffree = stat->f_ffree;
- gf_stat->favail = stat->f_favail;
- gf_stat->fsid = stat->f_fsid;
- gf_stat->flag = stat->f_flag;
- gf_stat->namemax = stat->f_namemax;
+ if (!stat || !gf_stat)
+ return;
+
+ gf_stat->bsize = stat->f_bsize;
+ gf_stat->frsize = stat->f_frsize;
+ gf_stat->blocks = stat->f_blocks;
+ gf_stat->bfree = stat->f_bfree;
+ gf_stat->bavail = stat->f_bavail;
+ gf_stat->files = stat->f_files;
+ gf_stat->ffree = stat->f_ffree;
+ gf_stat->favail = stat->f_favail;
+ gf_stat->fsid = stat->f_fsid;
+ gf_stat->flag = stat->f_flag;
+ gf_stat->namemax = stat->f_namemax;
}
static inline void
-gf_proto_lease_to_lease (struct gf_proto_lease *gf_proto_lease, struct gf_lease *gf_lease)
+gf_proto_lease_to_lease(struct gf_proto_lease *gf_proto_lease,
+ struct gf_lease *gf_lease)
{
- if (!gf_lease || !gf_proto_lease)
- return;
+ if (!gf_lease || !gf_proto_lease)
+ return;
- gf_lease->cmd = gf_proto_lease->cmd;
- gf_lease->lease_type = gf_proto_lease->lease_type;
- memcpy (gf_lease->lease_id, gf_proto_lease->lease_id, LEASE_ID_SIZE);
+ gf_lease->cmd = gf_proto_lease->cmd;
+ gf_lease->lease_type = gf_proto_lease->lease_type;
+ memcpy(gf_lease->lease_id, gf_proto_lease->lease_id, LEASE_ID_SIZE);
}
static inline void
-gf_proto_lease_from_lease (struct gf_proto_lease *gf_proto_lease, struct gf_lease *gf_lease)
+gf_proto_lease_from_lease(struct gf_proto_lease *gf_proto_lease,
+ struct gf_lease *gf_lease)
{
- if (!gf_lease || !gf_proto_lease)
- return;
+ if (!gf_lease || !gf_proto_lease)
+ return;
- gf_proto_lease->cmd = gf_lease->cmd;
- gf_proto_lease->lease_type = gf_lease->lease_type;
- memcpy (gf_proto_lease->lease_id, gf_lease->lease_id, LEASE_ID_SIZE);
+ gf_proto_lease->cmd = gf_lease->cmd;
+ gf_proto_lease->lease_type = gf_lease->lease_type;
+ memcpy(gf_proto_lease->lease_id, gf_lease->lease_id, LEASE_ID_SIZE);
}
static inline int
-gf_proto_recall_lease_to_upcall (struct gfs3_recall_lease_req *recall_lease,
- struct gf_upcall *gf_up_data)
+gf_proto_recall_lease_to_upcall(struct gfs3_recall_lease_req *recall_lease,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_recall_lease *tmp = NULL;
- int ret = 0;
+ struct gf_upcall_recall_lease *tmp = NULL;
+ int ret = 0;
- GF_VALIDATE_OR_GOTO(THIS->name, recall_lease, out);
- GF_VALIDATE_OR_GOTO(THIS->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(THIS->name, recall_lease, out);
+ GF_VALIDATE_OR_GOTO(THIS->name, gf_up_data, out);
- tmp = (struct gf_upcall_recall_lease *)gf_up_data->data;
- tmp->lease_type = recall_lease->lease_type;
- memcpy (gf_up_data->gfid, recall_lease->gfid, 16);
- memcpy (tmp->tid, recall_lease->tid, 16);
+ tmp = (struct gf_upcall_recall_lease *)gf_up_data->data;
+ tmp->lease_type = recall_lease->lease_type;
+ memcpy(gf_up_data->gfid, recall_lease->gfid, 16);
+ memcpy(tmp->tid, recall_lease->tid, 16);
- GF_PROTOCOL_DICT_UNSERIALIZE (THIS, tmp->dict,
- (recall_lease->xdata).xdata_val,
- (recall_lease->xdata).xdata_len, ret,
- errno, out);
+ GF_PROTOCOL_DICT_UNSERIALIZE(
+ THIS, tmp->dict, (recall_lease->xdata).xdata_val,
+ (recall_lease->xdata).xdata_len, ret, errno, out);
out:
- return ret;
-
+ return ret;
}
static inline int
-gf_proto_recall_lease_from_upcall (xlator_t *this,
- struct gfs3_recall_lease_req *recall_lease,
- struct gf_upcall *gf_up_data)
+gf_proto_recall_lease_from_upcall(xlator_t *this,
+ struct gfs3_recall_lease_req *recall_lease,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_recall_lease *tmp = NULL;
- int ret = 0;
+ struct gf_upcall_recall_lease *tmp = NULL;
+ int ret = 0;
- GF_VALIDATE_OR_GOTO(this->name, recall_lease, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(this->name, recall_lease, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
- tmp = (struct gf_upcall_recall_lease *)gf_up_data->data;
- recall_lease->lease_type = tmp->lease_type;
- memcpy (recall_lease->gfid, gf_up_data->gfid, 16);
- memcpy (recall_lease->tid, tmp->tid, 16);
+ tmp = (struct gf_upcall_recall_lease *)gf_up_data->data;
+ recall_lease->lease_type = tmp->lease_type;
+ memcpy(recall_lease->gfid, gf_up_data->gfid, 16);
+ memcpy(recall_lease->tid, tmp->tid, 16);
- GF_PROTOCOL_DICT_SERIALIZE (this, tmp->dict,
- &(recall_lease->xdata).xdata_val,
- (recall_lease->xdata).xdata_len, ret, out);
+ GF_PROTOCOL_DICT_SERIALIZE(this, tmp->dict,
+ &(recall_lease->xdata).xdata_val,
+ (recall_lease->xdata).xdata_len, ret, out);
out:
- return ret;
-
+ return ret;
}
static inline void
-gf_proto_flock_to_flock (struct gf_proto_flock *gf_proto_flock, struct gf_flock *gf_flock)
+gf_proto_flock_to_flock(struct gf_proto_flock *gf_proto_flock,
+ struct gf_flock *gf_flock)
{
- if (!gf_flock || !gf_proto_flock)
- return;
-
- gf_flock->l_type = gf_proto_flock->type;
- gf_flock->l_whence = gf_proto_flock->whence;
- gf_flock->l_start = gf_proto_flock->start;
- gf_flock->l_len = gf_proto_flock->len;
- gf_flock->l_pid = gf_proto_flock->pid;
- gf_flock->l_owner.len = gf_proto_flock->lk_owner.lk_owner_len;
- if (gf_flock->l_owner.len &&
- (gf_flock->l_owner.len < GF_MAX_LOCK_OWNER_LEN))
- memcpy (gf_flock->l_owner.data, gf_proto_flock->lk_owner.lk_owner_val,
- gf_flock->l_owner.len);
+ if (!gf_flock || !gf_proto_flock)
+ return;
+
+ gf_flock->l_type = gf_proto_flock->type;
+ gf_flock->l_whence = gf_proto_flock->whence;
+ gf_flock->l_start = gf_proto_flock->start;
+ gf_flock->l_len = gf_proto_flock->len;
+ gf_flock->l_pid = gf_proto_flock->pid;
+ gf_flock->l_owner.len = gf_proto_flock->lk_owner.lk_owner_len;
+ if (gf_flock->l_owner.len &&
+ (gf_flock->l_owner.len < GF_MAX_LOCK_OWNER_LEN))
+ memcpy(gf_flock->l_owner.data, gf_proto_flock->lk_owner.lk_owner_val,
+ gf_flock->l_owner.len);
}
-
static inline void
-gf_proto_flock_from_flock (struct gf_proto_flock *gf_proto_flock, struct gf_flock *gf_flock)
+gf_proto_flock_from_flock(struct gf_proto_flock *gf_proto_flock,
+ struct gf_flock *gf_flock)
{
- if (!gf_flock || !gf_proto_flock)
- return;
-
- gf_proto_flock->type = (gf_flock->l_type);
- gf_proto_flock->whence = (gf_flock->l_whence);
- gf_proto_flock->start = (gf_flock->l_start);
- gf_proto_flock->len = (gf_flock->l_len);
- gf_proto_flock->pid = (gf_flock->l_pid);
- gf_proto_flock->lk_owner.lk_owner_len = gf_flock->l_owner.len;
- if (gf_flock->l_owner.len)
- gf_proto_flock->lk_owner.lk_owner_val = gf_flock->l_owner.data;
+ if (!gf_flock || !gf_proto_flock)
+ return;
+
+ gf_proto_flock->type = (gf_flock->l_type);
+ gf_proto_flock->whence = (gf_flock->l_whence);
+ gf_proto_flock->start = (gf_flock->l_start);
+ gf_proto_flock->len = (gf_flock->l_len);
+ gf_proto_flock->pid = (gf_flock->l_pid);
+ gf_proto_flock->lk_owner.lk_owner_len = gf_flock->l_owner.len;
+ if (gf_flock->l_owner.len)
+ gf_proto_flock->lk_owner.lk_owner_val = gf_flock->l_owner.data;
}
static inline void
-gf_stat_to_iatt (struct gf_iatt *gf_stat, struct iatt *iatt)
+gf_stat_to_iatt(struct gf_iatt *gf_stat, struct iatt *iatt)
{
- if (!iatt || !gf_stat)
- return;
-
- memcpy (iatt->ia_gfid, gf_stat->ia_gfid, 16);
- iatt->ia_ino = gf_stat->ia_ino ;
- iatt->ia_dev = gf_stat->ia_dev ;
- iatt->ia_type = ia_type_from_st_mode (gf_stat->mode) ;
- iatt->ia_prot = ia_prot_from_st_mode (gf_stat->mode) ;
- iatt->ia_nlink = gf_stat->ia_nlink ;
- iatt->ia_uid = gf_stat->ia_uid ;
- iatt->ia_gid = gf_stat->ia_gid ;
- iatt->ia_rdev = gf_stat->ia_rdev ;
- iatt->ia_size = gf_stat->ia_size ;
- iatt->ia_blksize = gf_stat->ia_blksize ;
- iatt->ia_blocks = gf_stat->ia_blocks ;
- iatt->ia_atime = gf_stat->ia_atime ;
- iatt->ia_atime_nsec = gf_stat->ia_atime_nsec ;
- iatt->ia_mtime = gf_stat->ia_mtime ;
- iatt->ia_mtime_nsec = gf_stat->ia_mtime_nsec ;
- iatt->ia_ctime = gf_stat->ia_ctime ;
- iatt->ia_ctime_nsec = gf_stat->ia_ctime_nsec ;
+ if (!iatt || !gf_stat)
+ return;
+
+ memcpy(iatt->ia_gfid, gf_stat->ia_gfid, 16);
+ iatt->ia_ino = gf_stat->ia_ino;
+ iatt->ia_dev = gf_stat->ia_dev;
+ iatt->ia_type = ia_type_from_st_mode(gf_stat->mode);
+ iatt->ia_prot = ia_prot_from_st_mode(gf_stat->mode);
+ iatt->ia_nlink = gf_stat->ia_nlink;
+ iatt->ia_uid = gf_stat->ia_uid;
+ iatt->ia_gid = gf_stat->ia_gid;
+ iatt->ia_rdev = gf_stat->ia_rdev;
+ iatt->ia_size = gf_stat->ia_size;
+ iatt->ia_blksize = gf_stat->ia_blksize;
+ iatt->ia_blocks = gf_stat->ia_blocks;
+ iatt->ia_atime = gf_stat->ia_atime;
+ iatt->ia_atime_nsec = gf_stat->ia_atime_nsec;
+ iatt->ia_mtime = gf_stat->ia_mtime;
+ iatt->ia_mtime_nsec = gf_stat->ia_mtime_nsec;
+ iatt->ia_ctime = gf_stat->ia_ctime;
+ iatt->ia_ctime_nsec = gf_stat->ia_ctime_nsec;
}
static inline void
-gf_stat_from_iatt (struct gf_iatt *gf_stat, struct iatt *iatt)
+gf_stat_from_iatt(struct gf_iatt *gf_stat, struct iatt *iatt)
{
- if (!iatt || !gf_stat)
- return;
-
- memcpy (gf_stat->ia_gfid, iatt->ia_gfid, 16);
- gf_stat->ia_ino = iatt->ia_ino ;
- gf_stat->ia_dev = iatt->ia_dev ;
- gf_stat->mode = st_mode_from_ia (iatt->ia_prot, iatt->ia_type);
- gf_stat->ia_nlink = iatt->ia_nlink ;
- gf_stat->ia_uid = iatt->ia_uid ;
- gf_stat->ia_gid = iatt->ia_gid ;
- gf_stat->ia_rdev = iatt->ia_rdev ;
- gf_stat->ia_size = iatt->ia_size ;
- gf_stat->ia_blksize = iatt->ia_blksize ;
- gf_stat->ia_blocks = iatt->ia_blocks ;
- gf_stat->ia_atime = iatt->ia_atime ;
- gf_stat->ia_atime_nsec = iatt->ia_atime_nsec ;
- gf_stat->ia_mtime = iatt->ia_mtime ;
- gf_stat->ia_mtime_nsec = iatt->ia_mtime_nsec ;
- gf_stat->ia_ctime = iatt->ia_ctime ;
- gf_stat->ia_ctime_nsec = iatt->ia_ctime_nsec ;
+ if (!iatt || !gf_stat)
+ return;
+
+ memcpy(gf_stat->ia_gfid, iatt->ia_gfid, 16);
+ gf_stat->ia_ino = iatt->ia_ino;
+ gf_stat->ia_dev = iatt->ia_dev;
+ gf_stat->mode = st_mode_from_ia(iatt->ia_prot, iatt->ia_type);
+ gf_stat->ia_nlink = iatt->ia_nlink;
+ gf_stat->ia_uid = iatt->ia_uid;
+ gf_stat->ia_gid = iatt->ia_gid;
+ gf_stat->ia_rdev = iatt->ia_rdev;
+ gf_stat->ia_size = iatt->ia_size;
+ gf_stat->ia_blksize = iatt->ia_blksize;
+ gf_stat->ia_blocks = iatt->ia_blocks;
+ gf_stat->ia_atime = iatt->ia_atime;
+ gf_stat->ia_atime_nsec = iatt->ia_atime_nsec;
+ gf_stat->ia_mtime = iatt->ia_mtime;
+ gf_stat->ia_mtime_nsec = iatt->ia_mtime_nsec;
+ gf_stat->ia_ctime = iatt->ia_ctime;
+ gf_stat->ia_ctime_nsec = iatt->ia_ctime_nsec;
}
static inline int
-gf_proto_cache_invalidation_from_upcall (xlator_t *this,
- gfs3_cbk_cache_invalidation_req *gf_c_req,
- struct gf_upcall *gf_up_data)
+gf_proto_cache_invalidation_from_upcall(
+ xlator_t *this, gfs3_cbk_cache_invalidation_req *gf_c_req,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_cache_invalidation *gf_c_data = NULL;
- int is_cache_inval = 0;
- int ret = -1;
-
- GF_VALIDATE_OR_GOTO(this->name, gf_c_req, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
-
- is_cache_inval = ((gf_up_data->event_type ==
- GF_UPCALL_CACHE_INVALIDATION) ? 1 : 0);
- GF_VALIDATE_OR_GOTO(this->name, is_cache_inval, out);
-
- gf_c_data = (struct gf_upcall_cache_invalidation *)gf_up_data->data;
- GF_VALIDATE_OR_GOTO(this->name, gf_c_data, out);
-
- gf_c_req->gfid = uuid_utoa (gf_up_data->gfid);
- gf_c_req->event_type = gf_up_data->event_type;
- gf_c_req->flags = gf_c_data->flags;
- gf_c_req->expire_time_attr = gf_c_data->expire_time_attr;
- gf_stat_from_iatt (&gf_c_req->stat, &gf_c_data->stat);
- gf_stat_from_iatt (&gf_c_req->parent_stat, &gf_c_data->p_stat);
- gf_stat_from_iatt (&gf_c_req->oldparent_stat, &gf_c_data->oldp_stat);
-
- ret = 0;
- GF_PROTOCOL_DICT_SERIALIZE (this, gf_c_data->dict, &(gf_c_req->xdata).xdata_val,
- (gf_c_req->xdata).xdata_len, ret, out);
+ struct gf_upcall_cache_invalidation *gf_c_data = NULL;
+ int is_cache_inval = 0;
+ int ret = -1;
+
+ GF_VALIDATE_OR_GOTO(this->name, gf_c_req, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+
+ is_cache_inval = ((gf_up_data->event_type == GF_UPCALL_CACHE_INVALIDATION)
+ ? 1
+ : 0);
+ GF_VALIDATE_OR_GOTO(this->name, is_cache_inval, out);
+
+ gf_c_data = (struct gf_upcall_cache_invalidation *)gf_up_data->data;
+ GF_VALIDATE_OR_GOTO(this->name, gf_c_data, out);
+
+ gf_c_req->gfid = uuid_utoa(gf_up_data->gfid);
+ gf_c_req->event_type = gf_up_data->event_type;
+ gf_c_req->flags = gf_c_data->flags;
+ gf_c_req->expire_time_attr = gf_c_data->expire_time_attr;
+ gf_stat_from_iatt(&gf_c_req->stat, &gf_c_data->stat);
+ gf_stat_from_iatt(&gf_c_req->parent_stat, &gf_c_data->p_stat);
+ gf_stat_from_iatt(&gf_c_req->oldparent_stat, &gf_c_data->oldp_stat);
+
+ ret = 0;
+ GF_PROTOCOL_DICT_SERIALIZE(this, gf_c_data->dict,
+ &(gf_c_req->xdata).xdata_val,
+ (gf_c_req->xdata).xdata_len, ret, out);
out:
- return ret;
+ return ret;
}
static inline int
-gf_proto_cache_invalidation_to_upcall (xlator_t *this,
- gfs3_cbk_cache_invalidation_req *gf_c_req,
- struct gf_upcall *gf_up_data)
+gf_proto_cache_invalidation_to_upcall(xlator_t *this,
+ gfs3_cbk_cache_invalidation_req *gf_c_req,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_cache_invalidation *gf_c_data = NULL;
- int ret = -1;
-
- GF_VALIDATE_OR_GOTO(this->name, gf_c_req, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
-
- gf_c_data = (struct gf_upcall_cache_invalidation *)gf_up_data->data;
- GF_VALIDATE_OR_GOTO(this->name, gf_c_data, out);
-
- ret = gf_uuid_parse (gf_c_req->gfid, gf_up_data->gfid);
- if (ret) {
- gf_log (this->name, GF_LOG_WARNING, "gf_uuid_parse(%s) failed",
- gf_c_req->gfid);
- gf_up_data->event_type = GF_UPCALL_EVENT_NULL;
- goto out;
- }
-
- gf_up_data->event_type = gf_c_req->event_type;
-
- gf_c_data->flags = gf_c_req->flags;
- gf_c_data->expire_time_attr = gf_c_req->expire_time_attr;
- gf_stat_to_iatt (&gf_c_req->stat, &gf_c_data->stat);
- gf_stat_to_iatt (&gf_c_req->parent_stat, &gf_c_data->p_stat);
- gf_stat_to_iatt (&gf_c_req->oldparent_stat, &gf_c_data->oldp_stat);
-
- ret = 0;
- GF_PROTOCOL_DICT_UNSERIALIZE (this, gf_c_data->dict,
- (gf_c_req->xdata).xdata_val,
- (gf_c_req->xdata).xdata_len, ret,
- ret, out);
-
- /* If no dict was sent, create an empty dict, so that each xlator
- * need not check if empty then create new dict. Will be unref'd by the
- * caller */
- if (!gf_c_data->dict)
- gf_c_data->dict = dict_new ();
- out:
- return ret;
+ struct gf_upcall_cache_invalidation *gf_c_data = NULL;
+ int ret = -1;
+
+ GF_VALIDATE_OR_GOTO(this->name, gf_c_req, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+
+ gf_c_data = (struct gf_upcall_cache_invalidation *)gf_up_data->data;
+ GF_VALIDATE_OR_GOTO(this->name, gf_c_data, out);
+
+ ret = gf_uuid_parse(gf_c_req->gfid, gf_up_data->gfid);
+ if (ret) {
+ gf_log(this->name, GF_LOG_WARNING, "gf_uuid_parse(%s) failed",
+ gf_c_req->gfid);
+ gf_up_data->event_type = GF_UPCALL_EVENT_NULL;
+ goto out;
+ }
+
+ gf_up_data->event_type = gf_c_req->event_type;
+
+ gf_c_data->flags = gf_c_req->flags;
+ gf_c_data->expire_time_attr = gf_c_req->expire_time_attr;
+ gf_stat_to_iatt(&gf_c_req->stat, &gf_c_data->stat);
+ gf_stat_to_iatt(&gf_c_req->parent_stat, &gf_c_data->p_stat);
+ gf_stat_to_iatt(&gf_c_req->oldparent_stat, &gf_c_data->oldp_stat);
+
+ ret = 0;
+ GF_PROTOCOL_DICT_UNSERIALIZE(this, gf_c_data->dict,
+ (gf_c_req->xdata).xdata_val,
+ (gf_c_req->xdata).xdata_len, ret, ret, out);
+
+ /* If no dict was sent, create an empty dict, so that each xlator
+ * need not check if empty then create new dict. Will be unref'd by the
+ * caller */
+ if (!gf_c_data->dict)
+ gf_c_data->dict = dict_new();
+out:
+ return ret;
}
static inline int
-gf_proto_inodelk_contention_to_upcall (struct gfs4_inodelk_contention_req *lc,
- struct gf_upcall *gf_up_data)
+gf_proto_inodelk_contention_to_upcall(struct gfs4_inodelk_contention_req *lc,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_inodelk_contention *tmp = NULL;
- xlator_t *this = NULL;
- int ret = -1;
- int op_errno = EINVAL;
+ struct gf_upcall_inodelk_contention *tmp = NULL;
+ xlator_t *this = NULL;
+ int ret = -1;
+ int op_errno = EINVAL;
- this = THIS;
+ this = THIS;
- GF_VALIDATE_OR_GOTO(this->name, lc, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(this->name, lc, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
- tmp = (struct gf_upcall_inodelk_contention *)gf_up_data->data;
+ tmp = (struct gf_upcall_inodelk_contention *)gf_up_data->data;
- gf_uuid_copy(gf_up_data->gfid, (unsigned char *)lc->gfid);
+ gf_uuid_copy(gf_up_data->gfid, (unsigned char *)lc->gfid);
- gf_proto_flock_to_flock(&lc->flock, &tmp->flock);
- tmp->pid = lc->pid;
- tmp->domain = lc->domain;
- if ((tmp->domain != NULL) && (*tmp->domain == 0)) {
- tmp->domain = NULL;
- }
+ gf_proto_flock_to_flock(&lc->flock, &tmp->flock);
+ tmp->pid = lc->pid;
+ tmp->domain = lc->domain;
+ if ((tmp->domain != NULL) && (*tmp->domain == 0)) {
+ tmp->domain = NULL;
+ }
- GF_PROTOCOL_DICT_UNSERIALIZE (this, tmp->xdata, lc->xdata.xdata_val,
- lc->xdata.xdata_len, ret, op_errno, out);
+ GF_PROTOCOL_DICT_UNSERIALIZE(this, tmp->xdata, lc->xdata.xdata_val,
+ lc->xdata.xdata_len, ret, op_errno, out);
- ret = 0;
+ ret = 0;
out:
- if (ret < 0) {
- ret = -op_errno;
- }
+ if (ret < 0) {
+ ret = -op_errno;
+ }
- return ret;
+ return ret;
}
static inline int
-gf_proto_inodelk_contention_from_upcall (xlator_t *this,
- struct gfs4_inodelk_contention_req *lc,
- struct gf_upcall *gf_up_data)
+gf_proto_inodelk_contention_from_upcall(xlator_t *this,
+ struct gfs4_inodelk_contention_req *lc,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_inodelk_contention *tmp = NULL;
- int ret = -1;
- int op_errno = EINVAL;
+ struct gf_upcall_inodelk_contention *tmp = NULL;
+ int ret = -1;
+ int op_errno = EINVAL;
- GF_VALIDATE_OR_GOTO(this->name, lc, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(this->name, lc, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
- tmp = (struct gf_upcall_inodelk_contention *)gf_up_data->data;
+ tmp = (struct gf_upcall_inodelk_contention *)gf_up_data->data;
- gf_uuid_copy((unsigned char *)lc->gfid, gf_up_data->gfid);
+ gf_uuid_copy((unsigned char *)lc->gfid, gf_up_data->gfid);
- gf_proto_flock_from_flock(&lc->flock, &tmp->flock);
- lc->pid = tmp->pid;
- lc->domain = (char *)tmp->domain;
- if (lc->domain == NULL) {
- lc->domain = "";
- }
+ gf_proto_flock_from_flock(&lc->flock, &tmp->flock);
+ lc->pid = tmp->pid;
+ lc->domain = (char *)tmp->domain;
+ if (lc->domain == NULL) {
+ lc->domain = "";
+ }
- GF_PROTOCOL_DICT_SERIALIZE (this, tmp->xdata, &lc->xdata.xdata_val,
- lc->xdata.xdata_len, op_errno, out);
+ GF_PROTOCOL_DICT_SERIALIZE(this, tmp->xdata, &lc->xdata.xdata_val,
+ lc->xdata.xdata_len, op_errno, out);
- ret = 0;
+ ret = 0;
out:
- if (ret < 0) {
- ret = -op_errno;
- }
+ if (ret < 0) {
+ ret = -op_errno;
+ }
- return ret;
+ return ret;
}
static inline int
-gf_proto_entrylk_contention_to_upcall (struct gfs4_entrylk_contention_req *lc,
- struct gf_upcall *gf_up_data)
+gf_proto_entrylk_contention_to_upcall(struct gfs4_entrylk_contention_req *lc,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_entrylk_contention *tmp = NULL;
- xlator_t *this = NULL;
- int ret = -1;
- int op_errno = EINVAL;
+ struct gf_upcall_entrylk_contention *tmp = NULL;
+ xlator_t *this = NULL;
+ int ret = -1;
+ int op_errno = EINVAL;
- this = THIS;
+ this = THIS;
- GF_VALIDATE_OR_GOTO(this->name, lc, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(this->name, lc, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
- tmp = (struct gf_upcall_entrylk_contention *)gf_up_data->data;
+ tmp = (struct gf_upcall_entrylk_contention *)gf_up_data->data;
- gf_uuid_copy(gf_up_data->gfid, (unsigned char *)lc->gfid);
+ gf_uuid_copy(gf_up_data->gfid, (unsigned char *)lc->gfid);
- tmp->type = lc->type;
- tmp->name = lc->name;
- if ((tmp->name != NULL) && (*tmp->name == 0)) {
- tmp->name = NULL;
- }
- tmp->pid = lc->pid;
- tmp->domain = lc->domain;
- if ((tmp->domain != NULL) && (*tmp->domain == 0)) {
- tmp->domain = NULL;
- }
+ tmp->type = lc->type;
+ tmp->name = lc->name;
+ if ((tmp->name != NULL) && (*tmp->name == 0)) {
+ tmp->name = NULL;
+ }
+ tmp->pid = lc->pid;
+ tmp->domain = lc->domain;
+ if ((tmp->domain != NULL) && (*tmp->domain == 0)) {
+ tmp->domain = NULL;
+ }
- GF_PROTOCOL_DICT_UNSERIALIZE (this, tmp->xdata, lc->xdata.xdata_val,
- lc->xdata.xdata_len, ret, op_errno, out);
+ GF_PROTOCOL_DICT_UNSERIALIZE(this, tmp->xdata, lc->xdata.xdata_val,
+ lc->xdata.xdata_len, ret, op_errno, out);
- ret = 0;
+ ret = 0;
out:
- if (ret < 0) {
- ret = -op_errno;
- }
+ if (ret < 0) {
+ ret = -op_errno;
+ }
- return ret;
+ return ret;
}
static inline int
-gf_proto_entrylk_contention_from_upcall (xlator_t *this,
- struct gfs4_entrylk_contention_req *lc,
- struct gf_upcall *gf_up_data)
+gf_proto_entrylk_contention_from_upcall(xlator_t *this,
+ struct gfs4_entrylk_contention_req *lc,
+ struct gf_upcall *gf_up_data)
{
- struct gf_upcall_entrylk_contention *tmp = NULL;
- int ret = -1;
- int op_errno = EINVAL;
+ struct gf_upcall_entrylk_contention *tmp = NULL;
+ int ret = -1;
+ int op_errno = EINVAL;
- GF_VALIDATE_OR_GOTO(this->name, lc, out);
- GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
+ GF_VALIDATE_OR_GOTO(this->name, lc, out);
+ GF_VALIDATE_OR_GOTO(this->name, gf_up_data, out);
- tmp = (struct gf_upcall_entrylk_contention *)gf_up_data->data;
+ tmp = (struct gf_upcall_entrylk_contention *)gf_up_data->data;
- gf_uuid_copy((unsigned char *)lc->gfid, gf_up_data->gfid);
+ gf_uuid_copy((unsigned char *)lc->gfid, gf_up_data->gfid);
- lc->type = tmp->type;
- lc->name = (char *)tmp->name;
- if (lc->name == NULL) {
- lc->name = "";
- }
- lc->pid = tmp->pid;
- lc->domain = (char *)tmp->domain;
- if (lc->domain == NULL) {
- lc->domain = "";
- }
+ lc->type = tmp->type;
+ lc->name = (char *)tmp->name;
+ if (lc->name == NULL) {
+ lc->name = "";
+ }
+ lc->pid = tmp->pid;
+ lc->domain = (char *)tmp->domain;
+ if (lc->domain == NULL) {
+ lc->domain = "";
+ }
- GF_PROTOCOL_DICT_SERIALIZE (this, tmp->xdata, &lc->xdata.xdata_val,
- lc->xdata.xdata_len, op_errno, out);
+ GF_PROTOCOL_DICT_SERIALIZE(this, tmp->xdata, &lc->xdata.xdata_val,
+ lc->xdata.xdata_len, op_errno, out);
- ret = 0;
+ ret = 0;
out:
- if (ret < 0) {
- ret = -op_errno;
- }
+ if (ret < 0) {
+ ret = -op_errno;
+ }
- return ret;
+ return ret;
}
static inline void
-gfx_stat_to_iattx (struct gfx_iattx *gf_stat, struct iatt *iatt)
+gfx_stat_to_iattx(struct gfx_iattx *gf_stat, struct iatt *iatt)
{
- if (!iatt || !gf_stat)
- return;
-
- memcpy (iatt->ia_gfid, gf_stat->ia_gfid, 16);
-
- iatt->ia_flags = gf_stat->ia_flags;
- iatt->ia_ino = gf_stat->ia_ino ;
- iatt->ia_dev = gf_stat->ia_dev ;
- iatt->ia_rdev = gf_stat->ia_rdev ;
- iatt->ia_size = gf_stat->ia_size ;
- iatt->ia_nlink = gf_stat->ia_nlink ;
- iatt->ia_uid = gf_stat->ia_uid ;
- iatt->ia_gid = gf_stat->ia_gid ;
- iatt->ia_blksize = gf_stat->ia_blksize ;
- iatt->ia_blocks = gf_stat->ia_blocks ;
- iatt->ia_atime = gf_stat->ia_atime ;
- iatt->ia_atime_nsec = gf_stat->ia_atime_nsec ;
- iatt->ia_mtime = gf_stat->ia_mtime ;
- iatt->ia_mtime_nsec = gf_stat->ia_mtime_nsec ;
- iatt->ia_ctime = gf_stat->ia_ctime ;
- iatt->ia_ctime_nsec = gf_stat->ia_ctime_nsec ;
- iatt->ia_btime = gf_stat->ia_btime ;
- iatt->ia_btime_nsec = gf_stat->ia_btime_nsec ;
- iatt->ia_attributes = gf_stat->ia_attributes;
- iatt->ia_attributes_mask = gf_stat->ia_attributes_mask;
-
- iatt->ia_type = ia_type_from_st_mode (gf_stat->mode);
- iatt->ia_prot = ia_prot_from_st_mode (gf_stat->mode);
+ if (!iatt || !gf_stat)
+ return;
+
+ memcpy(iatt->ia_gfid, gf_stat->ia_gfid, 16);
+
+ iatt->ia_flags = gf_stat->ia_flags;
+ iatt->ia_ino = gf_stat->ia_ino;
+ iatt->ia_dev = gf_stat->ia_dev;
+ iatt->ia_rdev = gf_stat->ia_rdev;
+ iatt->ia_size = gf_stat->ia_size;
+ iatt->ia_nlink = gf_stat->ia_nlink;
+ iatt->ia_uid = gf_stat->ia_uid;
+ iatt->ia_gid = gf_stat->ia_gid;
+ iatt->ia_blksize = gf_stat->ia_blksize;
+ iatt->ia_blocks = gf_stat->ia_blocks;
+ iatt->ia_atime = gf_stat->ia_atime;
+ iatt->ia_atime_nsec = gf_stat->ia_atime_nsec;
+ iatt->ia_mtime = gf_stat->ia_mtime;
+ iatt->ia_mtime_nsec = gf_stat->ia_mtime_nsec;
+ iatt->ia_ctime = gf_stat->ia_ctime;
+ iatt->ia_ctime_nsec = gf_stat->ia_ctime_nsec;
+ iatt->ia_btime = gf_stat->ia_btime;
+ iatt->ia_btime_nsec = gf_stat->ia_btime_nsec;
+ iatt->ia_attributes = gf_stat->ia_attributes;
+ iatt->ia_attributes_mask = gf_stat->ia_attributes_mask;
+
+ iatt->ia_type = ia_type_from_st_mode(gf_stat->mode);
+ iatt->ia_prot = ia_prot_from_st_mode(gf_stat->mode);
}
-
static inline void
-gfx_stat_from_iattx (struct gfx_iattx *gf_stat, struct iatt *iatt)
+gfx_stat_from_iattx(struct gfx_iattx *gf_stat, struct iatt *iatt)
{
- if (!iatt || !gf_stat)
- return;
-
- memcpy (gf_stat->ia_gfid, iatt->ia_gfid, 16);
- gf_stat->ia_ino = iatt->ia_ino ;
- gf_stat->ia_dev = iatt->ia_dev ;
-
- gf_stat->ia_nlink = iatt->ia_nlink ;
- gf_stat->ia_uid = iatt->ia_uid ;
- gf_stat->ia_gid = iatt->ia_gid ;
- gf_stat->ia_rdev = iatt->ia_rdev ;
- gf_stat->ia_size = iatt->ia_size ;
- gf_stat->ia_blksize = iatt->ia_blksize ;
- gf_stat->ia_blocks = iatt->ia_blocks ;
- gf_stat->ia_atime = iatt->ia_atime ;
- gf_stat->ia_atime_nsec = iatt->ia_atime_nsec ;
- gf_stat->ia_mtime = iatt->ia_mtime ;
- gf_stat->ia_mtime_nsec = iatt->ia_mtime_nsec ;
- gf_stat->ia_ctime = iatt->ia_ctime ;
- gf_stat->ia_ctime_nsec = iatt->ia_ctime_nsec ;
-
- gf_stat->ia_flags = iatt->ia_flags;
- gf_stat->ia_btime = iatt->ia_btime ;
- gf_stat->ia_btime_nsec = iatt->ia_btime_nsec ;
- gf_stat->ia_attributes = iatt->ia_attributes;
- gf_stat->ia_attributes_mask = iatt->ia_attributes_mask;
-
- gf_stat->mode = st_mode_from_ia (iatt->ia_prot, iatt->ia_type);
+ if (!iatt || !gf_stat)
+ return;
+
+ memcpy(gf_stat->ia_gfid, iatt->ia_gfid, 16);
+ gf_stat->ia_ino = iatt->ia_ino;
+ gf_stat->ia_dev = iatt->ia_dev;
+
+ gf_stat->ia_nlink = iatt->ia_nlink;
+ gf_stat->ia_uid = iatt->ia_uid;
+ gf_stat->ia_gid = iatt->ia_gid;
+ gf_stat->ia_rdev = iatt->ia_rdev;
+ gf_stat->ia_size = iatt->ia_size;
+ gf_stat->ia_blksize = iatt->ia_blksize;
+ gf_stat->ia_blocks = iatt->ia_blocks;
+ gf_stat->ia_atime = iatt->ia_atime;
+ gf_stat->ia_atime_nsec = iatt->ia_atime_nsec;
+ gf_stat->ia_mtime = iatt->ia_mtime;
+ gf_stat->ia_mtime_nsec = iatt->ia_mtime_nsec;
+ gf_stat->ia_ctime = iatt->ia_ctime;
+ gf_stat->ia_ctime_nsec = iatt->ia_ctime_nsec;
+
+ gf_stat->ia_flags = iatt->ia_flags;
+ gf_stat->ia_btime = iatt->ia_btime;
+ gf_stat->ia_btime_nsec = iatt->ia_btime_nsec;
+ gf_stat->ia_attributes = iatt->ia_attributes;
+ gf_stat->ia_attributes_mask = iatt->ia_attributes_mask;
+
+ gf_stat->mode = st_mode_from_ia(iatt->ia_prot, iatt->ia_type);
}
/* dict_to_xdr () */
static inline int
-dict_to_xdr (dict_t *this, gfx_dict *dict)
+dict_to_xdr(dict_t *this, gfx_dict *dict)
{
- int ret = -1;
- int i = 0;
- int index = 0;
- data_pair_t *dpair = NULL;
- gfx_dict_pair *xpair = NULL;
- ssize_t size = 0;
-
- /* This is a failure as we expect destination to be valid */
- if (!dict)
- goto out;
-
- /* This is OK as dictionary can be null, in which case, destination
- should also know that it is NULL. */
- if (!this) {
- /* encode special meaning data here,
- while decoding, you know it is NULL dict */
- dict->count = -1;
- /* everything else is normal */
- dict->pairs.pairs_len = 0;
- ret = 0;
- goto out;
- }
-
- /* Do the whole operation in locked region */
- LOCK (&this->lock);
-
- dict->pairs.pairs_val = GF_CALLOC (1, (this->count *
- sizeof (gfx_dict_pair)),
- gf_common_mt_char);
- if (!dict->pairs.pairs_val)
- goto out;
-
- dpair = this->members_list;
- for (i = 0; i < this->count; i++) {
- xpair = &dict->pairs.pairs_val[index];
-
- xpair->key.key_val = dpair->key;
- xpair->key.key_len = strlen (dpair->key) + 1;
- xpair->value.type = dpair->value->data_type;
- switch (dpair->value->data_type) {
- /* Add more type here */
- case GF_DATA_TYPE_INT:
- index++;
- xpair->value.gfx_value_u.value_int =
- strtoll (dpair->value->data, NULL, 0);
- break;
- case GF_DATA_TYPE_UINT:
- index++;
- xpair->value.gfx_value_u.value_uint =
- strtoull (dpair->value->data, NULL, 0);
- break;
- case GF_DATA_TYPE_DOUBLE:
- index++;
- xpair->value.gfx_value_u.value_dbl =
- strtod (dpair->value->data, NULL);
- break;
- case GF_DATA_TYPE_STR:
- index++;
- xpair->value.gfx_value_u.val_string.val_string_val = dpair->value->data;
- xpair->value.gfx_value_u.val_string.val_string_len = dpair->value->len;
- break;
- case GF_DATA_TYPE_IATT:
- index++;
- gfx_stat_from_iattx (&xpair->value.gfx_value_u.iatt,
- (struct iatt *)dpair->value->data);
- break;
- case GF_DATA_TYPE_GFUUID:
- index++;
- memcpy (&xpair->value.gfx_value_u.uuid,
- dpair->value->data, sizeof (uuid_t));
- break;
-
- case GF_DATA_TYPE_PTR:
- index++;
- /* Ideally, each type of data stored in dictionary
- should have type. A pointer type shouldn't be
- sent on wire */
-
- /* This is done for backward compatibility as dict is
- heavily used for transporting data over wire.
- Ideally, wherever there is an issue, fix and
- move on */
- xpair->value.gfx_value_u.other.other_val =
- dpair->value->data;
- xpair->value.gfx_value_u.other.other_len =
- dpair->value->len;
-
- /* Change this to INFO, after taking the above down */
- gf_msg ("dict", GF_LOG_INFO, EINVAL,
- LG_MSG_DICT_SERIAL_FAILED,
- "key '%s' would not be sent on wire in the future",
- dpair->key);
- break;
- default:
- /* Unknown type and ptr type is not sent on wire */
- gf_msg ("dict", GF_LOG_WARNING, EINVAL, LG_MSG_DICT_SERIAL_FAILED,
- "key '%s' is not sent on wire", dpair->key);
- break;
- }
- dpair = dpair->next;
+ int ret = -1;
+ int i = 0;
+ int index = 0;
+ data_pair_t *dpair = NULL;
+ gfx_dict_pair *xpair = NULL;
+ ssize_t size = 0;
+
+ /* This is a failure as we expect destination to be valid */
+ if (!dict)
+ goto out;
+
+ /* This is OK as dictionary can be null, in which case, destination
+ should also know that it is NULL. */
+ if (!this) {
+ /* encode special meaning data here,
+ while decoding, you know it is NULL dict */
+ dict->count = -1;
+ /* everything else is normal */
+ dict->pairs.pairs_len = 0;
+ ret = 0;
+ goto out;
+ }
+
+ /* Do the whole operation in locked region */
+ LOCK(&this->lock);
+
+ dict->pairs.pairs_val = GF_CALLOC(1, (this->count * sizeof(gfx_dict_pair)),
+ gf_common_mt_char);
+ if (!dict->pairs.pairs_val)
+ goto out;
+
+ dpair = this->members_list;
+ for (i = 0; i < this->count; i++) {
+ xpair = &dict->pairs.pairs_val[index];
+
+ xpair->key.key_val = dpair->key;
+ xpair->key.key_len = strlen(dpair->key) + 1;
+ xpair->value.type = dpair->value->data_type;
+ switch (dpair->value->data_type) {
+ /* Add more type here */
+ case GF_DATA_TYPE_INT:
+ index++;
+ xpair->value.gfx_value_u.value_int = strtoll(dpair->value->data,
+ NULL, 0);
+ break;
+ case GF_DATA_TYPE_UINT:
+ index++;
+ xpair->value.gfx_value_u.value_uint = strtoull(
+ dpair->value->data, NULL, 0);
+ break;
+ case GF_DATA_TYPE_DOUBLE:
+ index++;
+ xpair->value.gfx_value_u.value_dbl = strtod(dpair->value->data,
+ NULL);
+ break;
+ case GF_DATA_TYPE_STR:
+ index++;
+ xpair->value.gfx_value_u.val_string
+ .val_string_val = dpair->value->data;
+ xpair->value.gfx_value_u.val_string
+ .val_string_len = dpair->value->len;
+ break;
+ case GF_DATA_TYPE_IATT:
+ index++;
+ gfx_stat_from_iattx(&xpair->value.gfx_value_u.iatt,
+ (struct iatt *)dpair->value->data);
+ break;
+ case GF_DATA_TYPE_GFUUID:
+ index++;
+ memcpy(&xpair->value.gfx_value_u.uuid, dpair->value->data,
+ sizeof(uuid_t));
+ break;
+
+ case GF_DATA_TYPE_PTR:
+ index++;
+ /* Ideally, each type of data stored in dictionary
+ should have type. A pointer type shouldn't be
+ sent on wire */
+
+ /* This is done for backward compatibility as dict is
+ heavily used for transporting data over wire.
+ Ideally, wherever there is an issue, fix and
+ move on */
+ xpair->value.gfx_value_u.other.other_val = dpair->value->data;
+ xpair->value.gfx_value_u.other.other_len = dpair->value->len;
+
+ /* Change this to INFO, after taking the above down */
+ gf_msg("dict", GF_LOG_INFO, EINVAL, LG_MSG_DICT_SERIAL_FAILED,
+ "key '%s' would not be sent on wire in the future",
+ dpair->key);
+ break;
+ default:
+ /* Unknown type and ptr type is not sent on wire */
+ gf_msg("dict", GF_LOG_WARNING, EINVAL,
+ LG_MSG_DICT_SERIAL_FAILED,
+ "key '%s' is not sent on wire", dpair->key);
+ break;
}
+ dpair = dpair->next;
+ }
- dict->pairs.pairs_len = index;
- dict->count = index;
+ dict->pairs.pairs_len = index;
+ dict->count = index;
- /* This is required mainly in the RPC layer to understand the
- boundary for proper payload. Hence only send the size of
- variable XDR size. ie, the formula should be:
- xdr_size = total size - (xdr_size + count + pairs.pairs_len)) */
- size = xdr_sizeof ((xdrproc_t) xdr_gfx_dict, dict);
+ /* This is required mainly in the RPC layer to understand the
+ boundary for proper payload. Hence only send the size of
+ variable XDR size. ie, the formula should be:
+ xdr_size = total size - (xdr_size + count + pairs.pairs_len)) */
+ size = xdr_sizeof((xdrproc_t)xdr_gfx_dict, dict);
- dict->xdr_size = (size > 12) ? (size - 12) : 0;
+ dict->xdr_size = (size > 12) ? (size - 12) : 0;
- ret = 0;
+ ret = 0;
out:
- /* this can be null here, so unlock only if its not null */
- if (this)
- UNLOCK (&this->lock);
+ /* this can be null here, so unlock only if its not null */
+ if (this)
+ UNLOCK(&this->lock);
- return ret;
+ return ret;
}
static inline int
-xdr_to_dict (gfx_dict *dict, dict_t **to)
+xdr_to_dict(gfx_dict *dict, dict_t **to)
{
- int ret = -1;
- int index = 0;
- char *key = NULL;
- char *value = NULL;
- gfx_dict_pair *xpair = NULL;
- dict_t *this = NULL;
- unsigned char *uuid = NULL;
- struct iatt *iatt = NULL;
-
- if (!to || !dict)
- goto out;
-
- if (dict->count < 0) {
- /* indicates NULL dict was passed for encoding */
- ret = 0;
- goto out;
- }
-
- this = dict_new();
- if (!this)
- goto out;
-
- for (index = 0; index < dict->pairs.pairs_len; index++) {
- ret = -1;
- xpair = &dict->pairs.pairs_val[index];
-
- key = xpair->key.key_val;
- switch (xpair->value.type) {
- /* Add more type here */
- case GF_DATA_TYPE_INT:
- ret = dict_set_int64 (this, key,
- xpair->value.gfx_value_u.value_int);
- break;
- case GF_DATA_TYPE_UINT:
- ret = dict_set_uint64 (this, key,
- xpair->value.gfx_value_u.value_uint);
- break;
- case GF_DATA_TYPE_DOUBLE:
- ret = dict_set_double (this, key,
- xpair->value.gfx_value_u.value_dbl);
- break;
- case GF_DATA_TYPE_STR:
- value = GF_MALLOC (xpair->value.gfx_value_u.val_string.val_string_len + 1,
- gf_common_mt_char);
- if (!value) {
- errno = ENOMEM;
- goto out;
- }
- memcpy (value, xpair->value.gfx_value_u.val_string.val_string_val,
- xpair->value.gfx_value_u.val_string.val_string_len);
- value[xpair->value.gfx_value_u.val_string.val_string_len] = '\0';
- free (xpair->value.gfx_value_u.val_string.val_string_val);
- ret = dict_set_dynstr (this, key, value);
- break;
- case GF_DATA_TYPE_GFUUID:
- uuid = GF_MALLOC (sizeof (uuid_t), gf_common_mt_uuid_t);
- if (!uuid) {
- errno = ENOMEM;
- goto out;
- }
- memcpy (uuid, xpair->value.gfx_value_u.uuid, sizeof (uuid_t));
- ret = dict_set_gfuuid (this, key, uuid, false);
- break;
- case GF_DATA_TYPE_IATT:
- iatt = GF_CALLOC (1, sizeof (struct iatt), gf_common_mt_char);
- if (!iatt) {
- errno = ENOMEM;
- goto out;
- }
- gfx_stat_to_iattx (&xpair->value.gfx_value_u.iatt, iatt);
- ret = dict_set_iatt (this, key, iatt, false);
- break;
- case GF_DATA_TYPE_PTR:
- value = GF_MALLOC (xpair->value.gfx_value_u.other.other_len + 1,
- gf_common_mt_char);
- if (!value) {
- errno = ENOMEM;
- goto out;
- }
- memcpy (value, xpair->value.gfx_value_u.other.other_val,
- xpair->value.gfx_value_u.other.other_len);
- value[xpair->value.gfx_value_u.other.other_len] = '\0';
- free (xpair->value.gfx_value_u.other.other_val);
- ret = dict_set_dynptr (this, key, value,
- xpair->value.gfx_value_u.other.other_len);
- break;
- default:
- ret = 0;
- /* Unknown type and ptr type is not sent on wire */
- break;
+ int ret = -1;
+ int index = 0;
+ char *key = NULL;
+ char *value = NULL;
+ gfx_dict_pair *xpair = NULL;
+ dict_t *this = NULL;
+ unsigned char *uuid = NULL;
+ struct iatt *iatt = NULL;
+
+ if (!to || !dict)
+ goto out;
+
+ if (dict->count < 0) {
+ /* indicates NULL dict was passed for encoding */
+ ret = 0;
+ goto out;
+ }
+
+ this = dict_new();
+ if (!this)
+ goto out;
+
+ for (index = 0; index < dict->pairs.pairs_len; index++) {
+ ret = -1;
+ xpair = &dict->pairs.pairs_val[index];
+
+ key = xpair->key.key_val;
+ switch (xpair->value.type) {
+ /* Add more type here */
+ case GF_DATA_TYPE_INT:
+ ret = dict_set_int64(this, key,
+ xpair->value.gfx_value_u.value_int);
+ break;
+ case GF_DATA_TYPE_UINT:
+ ret = dict_set_uint64(this, key,
+ xpair->value.gfx_value_u.value_uint);
+ break;
+ case GF_DATA_TYPE_DOUBLE:
+ ret = dict_set_double(this, key,
+ xpair->value.gfx_value_u.value_dbl);
+ break;
+ case GF_DATA_TYPE_STR:
+ value = GF_MALLOC(
+ xpair->value.gfx_value_u.val_string.val_string_len + 1,
+ gf_common_mt_char);
+ if (!value) {
+ errno = ENOMEM;
+ goto out;
}
- if (ret) {
- gf_msg_debug (THIS->name, ENOMEM,
- "failed to set the key (%s) into dict",
- key);
+ memcpy(value,
+ xpair->value.gfx_value_u.val_string.val_string_val,
+ xpair->value.gfx_value_u.val_string.val_string_len);
+ value[xpair->value.gfx_value_u.val_string.val_string_len] =
+ '\0';
+ free(xpair->value.gfx_value_u.val_string.val_string_val);
+ ret = dict_set_dynstr(this, key, value);
+ break;
+ case GF_DATA_TYPE_GFUUID:
+ uuid = GF_MALLOC(sizeof(uuid_t), gf_common_mt_uuid_t);
+ if (!uuid) {
+ errno = ENOMEM;
+ goto out;
}
- free (xpair->key.key_val);
+ memcpy(uuid, xpair->value.gfx_value_u.uuid, sizeof(uuid_t));
+ ret = dict_set_gfuuid(this, key, uuid, false);
+ break;
+ case GF_DATA_TYPE_IATT:
+ iatt = GF_CALLOC(1, sizeof(struct iatt), gf_common_mt_char);
+ if (!iatt) {
+ errno = ENOMEM;
+ goto out;
+ }
+ gfx_stat_to_iattx(&xpair->value.gfx_value_u.iatt, iatt);
+ ret = dict_set_iatt(this, key, iatt, false);
+ break;
+ case GF_DATA_TYPE_PTR:
+ value = GF_MALLOC(xpair->value.gfx_value_u.other.other_len + 1,
+ gf_common_mt_char);
+ if (!value) {
+ errno = ENOMEM;
+ goto out;
+ }
+ memcpy(value, xpair->value.gfx_value_u.other.other_val,
+ xpair->value.gfx_value_u.other.other_len);
+ value[xpair->value.gfx_value_u.other.other_len] = '\0';
+ free(xpair->value.gfx_value_u.other.other_val);
+ ret = dict_set_dynptr(this, key, value,
+ xpair->value.gfx_value_u.other.other_len);
+ break;
+ default:
+ ret = 0;
+ /* Unknown type and ptr type is not sent on wire */
+ break;
}
+ if (ret) {
+ gf_msg_debug(THIS->name, ENOMEM,
+ "failed to set the key (%s) into dict", key);
+ }
+ free(xpair->key.key_val);
+ }
- free (dict->pairs.pairs_val);
- ret = 0;
+ free(dict->pairs.pairs_val);
+ ret = 0;
- /* If everything is fine, assign the dictionary to target */
- *to = this;
- this = NULL;
+ /* If everything is fine, assign the dictionary to target */
+ *to = this;
+ this = NULL;
out:
- if (this)
- dict_unref (this);
+ if (this)
+ dict_unref(this);
- return ret;
+ return ret;
}
#endif /* !_GLUSTERFS3_H */