]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MClientReply: stop using ceph_mds_reply_inode struct to unpack
authorSage Weil <sage@redhat.com>
Thu, 31 Dec 2015 18:49:05 +0000 (13:49 -0500)
committerSage Weil <sage@redhat.com>
Tue, 1 Mar 2016 16:17:00 +0000 (11:17 -0500)
Decode directly.

Signed-off-by: Sage Weil <sage@redhat.com>
src/include/types.h
src/messages/MClientReply.h

index 92fb8ca6bb44ee782a28e9610c05d10b4c206e7a..68cd18b36bb49ed684ad0cd3467d74b9b6a75388 100644 (file)
@@ -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)
index e89d412cdf9507bc5a7e59c156df7b80365edc61..f0e51ab3cd488ea2c1fff2bc5dd2b4007958cf5c 100644 (file)
@@ -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<string, bufferptr> 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) {