From d923e33878b36521b932f0fc66d749c9a0162dbb Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 19 May 2012 14:58:35 -0700 Subject: [PATCH] filestore: pass target into read_fsid() Don't assume it should be read into this->fsid. Signed-off-by: Sage Weil --- src/os/FileStore.cc | 12 ++++++------ src/os/FileStore.h | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 5007c06b4fd9b..47f60e9477a35 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -1044,7 +1044,7 @@ int FileStore::mkjournal() derr << "FileStore::mkjournal: open error: " << cpp_strerror(err) << dendl; return -err; } - ret = read_fsid(fd); + ret = read_fsid(fd, fsid); if (ret < 0) { derr << "FileStore::mkjournal: read error: " << cpp_strerror(ret) << dendl; TEMP_FAILURE_RETRY(::close(fd)); @@ -1071,7 +1071,7 @@ int FileStore::mkjournal() return ret; } -int FileStore::read_fsid(int fd) +int FileStore::read_fsid(int fd, uuid_d& uuid) { char fsid_str[40]; int ret = safe_read(fd, fsid_str, sizeof(fsid_str)); @@ -1079,14 +1079,14 @@ int FileStore::read_fsid(int fd) return ret; if (ret == 8) { // old 64-bit fsid... mirror it. - *(uint64_t*)&fsid.uuid[0] = *(uint64_t*)fsid_str; - *(uint64_t*)&fsid.uuid[8] = *(uint64_t*)fsid_str; + *(uint64_t*)&uuid.uuid[0] = *(uint64_t*)fsid_str; + *(uint64_t*)&uuid.uuid[8] = *(uint64_t*)fsid_str; return 0; } if (ret > 36) fsid_str[36] = 0; - if (!fsid.parse(fsid_str)) + if (!uuid.parse(fsid_str)) return -EINVAL; return 0; } @@ -1545,7 +1545,7 @@ int FileStore::mount() goto done; } - ret = read_fsid(fsid_fd); + ret = read_fsid(fsid_fd, fsid); if (ret < 0) { derr << "FileStore::mount: error reading fsid_fd: " << cpp_strerror(ret) << dendl; diff --git a/src/os/FileStore.h b/src/os/FileStore.h index d665db86ae92c..cd2b026aac105 100644 --- a/src/os/FileStore.h +++ b/src/os/FileStore.h @@ -83,7 +83,10 @@ class FileStore : public JournalingObjectStore, // helper fns int get_cdir(coll_t cid, char *s, int len); - int read_fsid(int fd); + /// read a uuid from fd + int read_fsid(int fd, uuid_d& uuid); + + /// lock fsid_fd int lock_fsid(); // sync thread -- 2.39.5