From: Colin Patrick McCabe Date: Fri, 4 Feb 2011 14:22:08 +0000 (-0800) Subject: os: FileStore::mkjournal: fix error handling X-Git-Tag: v0.25~220^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f45d55660871620ae0305319770874b49e253eec;p=ceph.git os: FileStore::mkjournal: fix error handling Signed-off-by: Colin McCabe --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 1f20f22ac452..b8d9036becba 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;