From f45d55660871620ae0305319770874b49e253eec Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Fri, 4 Feb 2011 06:22:08 -0800 Subject: [PATCH] os: FileStore::mkjournal: fix error handling Signed-off-by: Colin McCabe --- src/os/FileStore.cc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 1f20f22ac452d..b8d9036becbab 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -779,10 +779,22 @@ int FileStore::mkjournal() char fn[PATH_MAX]; snprintf(fn, sizeof(fn), "%s/fsid", basedir.c_str()); int fd = ::open(fn, O_RDONLY, 0644); - if (fd < 0) - return -errno; - ::read(fd, &fsid, sizeof(fsid)); - ::close(fd); + if (fd < 0) { + int err = errno; + derr << "FileStore::mkjournal: open error: " << cpp_strerror(err) << dendl; + return -err; + } + if (TEMP_FAILURE_RETRY(::read(fd, &fsid, sizeof(fsid))) < 0) { + int err = errno; + derr << "FileStore::mkjournal: read error: " << cpp_strerror(err) << dendl; + TEMP_FAILURE_RETRY(::close(fd)); + return -err; + } + if (TEMP_FAILURE_RETRY(::close(fd))) { + int err = errno; + derr << "FileStore::mkjournal: close error: " << cpp_strerror(err) << dendl; + return -err; + } int ret = 0; -- 2.39.5