From: Sage Weil Date: Thu, 31 Dec 2015 18:49:05 +0000 (-0500) Subject: messages/MClientReply: stop using ceph_mds_reply_inode struct to unpack X-Git-Tag: v10.1.0~241^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0b1f7f59b6fa643b3ebf2c5ae296396d8746fa3f;p=ceph.git messages/MClientReply: stop using ceph_mds_reply_inode struct to unpack Decode directly. Signed-off-by: Sage Weil --- diff --git a/src/include/types.h b/src/include/types.h index 92fb8ca6bb44..68cd18b36bb4 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -255,6 +255,7 @@ WRITE_RAW_ENCODER(ceph_mds_lease) WRITE_RAW_ENCODER(ceph_mds_snap_head) WRITE_RAW_ENCODER(ceph_mds_snap_realm) WRITE_RAW_ENCODER(ceph_mds_reply_head) +WRITE_RAW_ENCODER(ceph_mds_reply_cap) WRITE_RAW_ENCODER(ceph_mds_reply_inode) WRITE_RAW_ENCODER(ceph_mds_cap_reconnect) WRITE_RAW_ENCODER(ceph_mds_snaprealm_reconnect) diff --git a/src/messages/MClientReply.h b/src/messages/MClientReply.h index e89d412cdf95..f0e51ab3cd48 100644 --- a/src/messages/MClientReply.h +++ b/src/messages/MClientReply.h @@ -97,32 +97,31 @@ struct DirStat { struct InodeStat { vinodeno_t vino; + uint32_t rdev; version_t version; + version_t xattr_version; ceph_mds_reply_cap cap; - ceph_file_layout layout; - unsigned mode, uid, gid, nlink, rdev; - loff_t size, max_size; - version_t truncate_seq; - uint64_t truncate_size; utime_t ctime, mtime, atime; - version_t time_warp_seq; - bufferlist inline_data; - version_t inline_version; - + uint32_t time_warp_seq; + uint64_t size, max_size; + uint64_t truncate_size; + uint32_t truncate_seq; + uint32_t mode, uid, gid, nlink; frag_info_t dirstat; nest_info_t rstat; - - string symlink; // symlink content (if symlink) + fragtree_t dirfragtree; + string symlink; // symlink content (if symlink) + + ceph_dir_layout dir_layout; - version_t xattr_version; bufferlist xattrbl; - ceph_dir_layout dir_layout; + bufferlist inline_data; + version_t inline_version; quota_info_t quota; - //map xattrs; public: InodeStat() {} @@ -131,36 +130,33 @@ struct InodeStat { } void decode(bufferlist::iterator &p, uint64_t features) { - struct ceph_mds_reply_inode e; - ::decode(e, p); - vino.ino = inodeno_t(e.ino); - vino.snapid = snapid_t(e.snapid); - version = e.version; - layout = e.layout; - cap = e.cap; - size = e.size; - max_size = e.max_size; - truncate_seq = e.truncate_seq; - truncate_size = e.truncate_size; - ctime.decode_timeval(&e.ctime); - mtime.decode_timeval(&e.mtime); - atime.decode_timeval(&e.atime); - time_warp_seq = e.time_warp_seq; - mode = e.mode; - uid = e.uid; - gid = e.gid; - nlink = e.nlink; - rdev = e.rdev; - - dirstat.nfiles = e.files; - dirstat.nsubdirs = e.subdirs; - - rstat.rctime.decode_timeval(&e.rctime); - rstat.rbytes = e.rbytes; - rstat.rfiles = e.rfiles; - rstat.rsubdirs = e.rsubdirs; - - dirfragtree.decode_nohead(e.fragtree.nsplits, p); + ::decode(vino.ino, p); + ::decode(vino.snapid, p); + ::decode(rdev, p); + ::decode(version, p); + ::decode(xattr_version, p); + ::decode(cap, p); + ::decode(layout, p); + ::decode(ctime, p); + ::decode(mtime, p); + ::decode(atime, p); + ::decode(time_warp_seq, p); + ::decode(size, p); + ::decode(max_size, p); + ::decode(truncate_size, p); + ::decode(truncate_seq, p); + ::decode(mode, p); + ::decode(uid, p); + ::decode(gid, p); + ::decode(nlink, p); + ::decode(dirstat.nfiles, p); + ::decode(dirstat.nsubdirs, p); + ::decode(rstat.rbytes, p); + ::decode(rstat.rfiles, p); + ::decode(rstat.rsubdirs, p); + ::decode(rstat.rctime, p); + + ::decode(dirfragtree, p); ::decode(symlink, p); @@ -169,7 +165,6 @@ struct InodeStat { else memset(&dir_layout, 0, sizeof(dir_layout)); - xattr_version = e.xattr_version; ::decode(xattrbl, p); if (features & CEPH_FEATURE_MDS_INLINE_DATA) {