]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fail on write error
authorSage Weil <sage@newdream.net>
Mon, 16 Nov 2009 19:45:25 +0000 (11:45 -0800)
committerSage Weil <sage@newdream.net>
Mon, 16 Nov 2009 19:45:25 +0000 (11:45 -0800)
Don't rename badly written file.  Also assert success, for now.

src/mon/MonitorStore.cc

index 0579ffcd07c3e85970cdcab7623ef893559fa546..0f7129ff8949718693fb958a45fa32fb6b0d4af9 100644 (file)
@@ -255,6 +255,7 @@ int MonitorStore::write_bl_ss(bufferlist& bl, const char *a, const char *b, bool
   }
   
   char tfn[200];
+  int err = 0;
   int fd;
   if (append) {
     fd = ::open(fn, O_WRONLY|O_CREAT|O_APPEND, 0644);
@@ -274,16 +275,20 @@ int MonitorStore::write_bl_ss(bufferlist& bl, const char *a, const char *b, bool
     if (r < 0) {
       char buf[80];
       derr(0) << "put_bl_ss ::write() errored out, errno is " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+      err = -errno;
+      break;
     }
   }
 
-  if (sync)
+  if (sync && !err)
     ::fsync(fd);
   ::close(fd);
-  if (!append) {
+  if (!append && !err) {
     ::rename(tfn, fn);
   }
 
-  return 0;
+  assert(!err);  // for now
+
+  return err;
 }