]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kv/MemDB: fix fd leak
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 14 Jul 2016 10:48:20 +0000 (18:48 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Thu, 14 Jul 2016 11:33:40 +0000 (19:33 +0800)
Also translate the error message to the output properly.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/kv/MemDB.cc

index ce6c5ef952c54f1ab73b2c5364430895edee27be..5135e6d1e295d18ba53a06838d6cdde961d3cbc9 100644 (file)
@@ -94,16 +94,21 @@ void MemDB::_load()
    */
   int fd = TEMP_FAILURE_RETRY(::open(_get_data_fn().c_str(), O_RDONLY));
   if (fd < 0) {
+    int err = errno;
     std::ostringstream oss;
-    oss << "can't open " << _get_data_fn().c_str() << ": " << std::endl;
+    oss << "can't open " << _get_data_fn().c_str() << ": "
+        << cpp_strerror(err) << std::endl;
     return;
   }
 
   struct stat st;
   memset(&st, 0, sizeof(st));
   if (::fstat(fd, &st) < 0) {
+    int err = errno;
     std::ostringstream oss;
-    oss << "can't stat file " << _get_data_fn().c_str() << ": " << std::endl;
+    oss << "can't stat file " << _get_data_fn().c_str() << ": "
+        << cpp_strerror(err) << std::endl;
+    VOID_TEMP_FAILURE_RETRY(::close(fd));
     return;
   }