From 40edb9e253861492a3bce8842b07c22d51f9ec68 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 16 Nov 2009 11:45:25 -0800 Subject: [PATCH] mon: fail on write error Don't rename badly written file. Also assert success, for now. --- src/mon/MonitorStore.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mon/MonitorStore.cc b/src/mon/MonitorStore.cc index 0579ffcd07c3e..0f7129ff89497 100644 --- a/src/mon/MonitorStore.cc +++ b/src/mon/MonitorStore.cc @@ -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; } -- 2.39.5