From: Yan, Zheng Date: Wed, 18 Dec 2013 01:33:13 +0000 (+0800) Subject: mds: fixes for coverity scan X-Git-Tag: v0.75~68^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F973%2Fhead;p=ceph.git mds: fixes for coverity scan Signed-off-by: Yan, Zheng --- diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 0ed6d0a02f2d..3ca743e743b7 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -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 */ diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 0c7f11e68a30..4336fc015665 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -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::iterator q = p->second.second.begin(); q != p->second.second.end(); ++q) { diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc index fdf86a6066b4..117852c81a6e 100644 --- a/src/mds/Migrator.cc +++ b/src/mds/Migrator.cc @@ -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(); } } diff --git a/src/mds/Server.cc b/src/mds/Server.cc index b74178b265e9..dea73e247304 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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++; diff --git a/src/messages/MClientCaps.h b/src/messages/MClientCaps.h index 38487084cdce..8eeaafd59500 100644 --- a/src/messages/MClientCaps.h +++ b/src/messages/MClientCaps.h @@ -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);