]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fixes for coverity scan 973/head
authorYan, Zheng <zheng.z.yan@intel.com>
Wed, 18 Dec 2013 01:33:13 +0000 (09:33 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Thu, 19 Dec 2013 06:27:21 +0000 (14:27 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/include/ceph_fs.h
src/mds/MDCache.cc
src/mds/Migrator.cc
src/mds/Server.cc
src/messages/MClientCaps.h

index 0ed6d0a02f2d1c1a691544dc4461f0560baf64f6..3ca743e743b7914a80dedf79f6995f9a8747a474 100644 (file)
@@ -635,6 +635,15 @@ enum {
 
 extern const char *ceph_cap_op_name(int op);
 
+/* extra info for cap import/export */
+struct ceph_mds_cap_peer {
+       __le64 cap_id;
+       __le32 seq;
+       __le32 mseq;
+       __le32 mds;
+       __u8   flags;
+} __attribute__ ((packed));
+
 /*
  * caps message, used for capability callbacks, acks, requests, etc.
  */
@@ -658,21 +667,19 @@ struct ceph_mds_caps {
        __le32 xattr_len;
        __le64 xattr_version;
 
-       /* filelock */
-       __le64 size, max_size, truncate_size;
-       __le32 truncate_seq;
-       struct ceph_timespec mtime, atime, ctime;
-       struct ceph_file_layout layout;
-       __le32 time_warp_seq;
-} __attribute__ ((packed));
-
-/* extra info for cap import/export */
-struct ceph_mds_cap_peer {
-       __le64 cap_id;
-       __le32 seq;
-       __le32 mseq;
-       __le32 mds;
-       __u8   flags;
+       union {
+               /* all except export */
+               struct {
+                       /* filelock */
+                       __le64 size, max_size, truncate_size;
+                       __le32 truncate_seq;
+                       struct ceph_timespec mtime, atime, ctime;
+                       struct ceph_file_layout layout;
+                       __le32 time_warp_seq;
+               };
+               /* export message */
+               struct ceph_mds_cap_peer peer;
+       };
 } __attribute__ ((packed));
 
 /* cap release msg head */
index 0c7f11e68a303c8a1ca9cdf20254dd77f735d98b..4336fc0156652e4916663cb731e6b37611132681 100644 (file)
@@ -5072,6 +5072,7 @@ bool MDCache::process_imported_caps()
         p != rejoin_slave_exports.end();
         ++p) {
       CInode *in = get_inode(p->first);
+      assert(in);
       for (map<client_t,Capability::Export>::iterator q = p->second.second.begin();
           q != p->second.second.end();
           ++q) {
index fdf86a6066b4c4860b1b504fec684bd14bff9078..117852c81a6e77b6f8a9ed945f8688c1ef611f91 100644 (file)
@@ -2287,6 +2287,7 @@ void Migrator::import_reverse(CDir *dir)
          q != p->second.end();
          ++q) {
        Capability *cap = in->get_client_cap(q->first);
+       assert(cap);
        if (cap->is_new())
          in->remove_client_cap(q->first);
       }
@@ -2295,6 +2296,7 @@ void Migrator::import_reverse(CDir *dir)
         p != stat.client_map.end();
         ++p) {
       Session *session = mds->sessionmap.get_session(entity_name_t::CLIENT(p->first.v));
+      assert(session);
       session->dec_importing();
     }
   }
@@ -2478,6 +2480,7 @@ void Migrator::import_finish(CDir *dir, bool notify, bool last)
         p != it->second.client_map.end();
         ++p) {
       Session *session = mds->sessionmap.get_session(entity_name_t::CLIENT(p->first.v));
+      assert(session);
       session->dec_importing();
     }
   }
index b74178b265e9de41feeab7fa236875c0ddfe7090..dea73e2473041779f335da4ec13d44b386d77035 100644 (file)
@@ -705,6 +705,7 @@ void Server::reconnect_tick()
         p != client_reconnect_gather.end();
         ++p) {
       Session *session = mds->sessionmap.get_session(entity_name_t::CLIENT(p->v));
+      assert(session);
       dout(1) << "reconnect gave up on " << session->info.inst << dendl;
       kill_session(session);
       failed_reconnects++;
index 38487084cdcec17ecae462ccd1af8380734fce86..8eeaafd595005c39d604e0fc1eff59645d98041d 100644 (file)
@@ -167,7 +167,7 @@ public:
       if (head.op == CEPH_CAP_OP_IMPORT)
        ::decode(peer, p);
       else if (head.op == CEPH_CAP_OP_EXPORT)
-       memcpy(&peer, &head.size, sizeof(peer));
+       memcpy(&peer, &head.peer, sizeof(peer));
     }
   }
   void encode_payload(uint64_t features) {
@@ -176,7 +176,7 @@ public:
 
     // record peer in unused fields of cap export message
     if ((features & CEPH_FEATURE_EXPORT_PEER) && head.op == CEPH_CAP_OP_EXPORT)
-      memcpy(&head.size, &peer, sizeof(peer));
+      memcpy(&head.peer, &peer, sizeof(peer));
 
     ::encode(head, payload);
     ::encode_nohead(snapbl, payload);