From 8e82b52081133a78be0d0eac3502428085340442 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 21 Nov 2008 20:30:00 -0800 Subject: [PATCH] filestore: fix truncate argument, subsequent Transaction fuggering --- src/os/FileStore.cc | 9 +++++---- src/os/ObjectStore.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index f3be0adb06df7..2b0fd54069711 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -588,7 +588,7 @@ void FileStore::_transaction_finish(int fd) unsigned FileStore::_apply_transaction(Transaction& t) { // non-atomic implementation - int id = _transaction_start(t.get_len()); + int id = _transaction_start(t.get_trans_len()); if (id < 0) return id; while (t.have_op()) { @@ -623,7 +623,7 @@ unsigned FileStore::_apply_transaction(Transaction& t) break; case Transaction::OP_TRUNCATE: - _truncate(t.get_cid(), t.get_oid(), t.get_len()); + _truncate(t.get_cid(), t.get_oid(), t.get_length()); break; case Transaction::OP_REMOVE: @@ -1195,10 +1195,11 @@ int FileStore::_remove(coll_t cid, pobject_t oid) int FileStore::_truncate(coll_t cid, pobject_t oid, __u64 size) { - dout(20) << "truncate " << cid << " " << oid << " size " << size << dendl; - char fn[200]; get_coname(cid, oid, fn); + + dout(20) << "truncate " << fn << " size " << size << dendl; + int r = ::truncate(fn, size); return r < 0 ? -errno:r; } diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index df55bec767118..e90c4cda7c8b8 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -116,7 +116,7 @@ public: unsigned opp, blp, oidp, cidp, lengthp, attrnamep, attrsetp; public: - int get_len() { return len ? len : ops.size(); } + int get_trans_len() { return len ? len : ops.size(); } int get_btrfs_len() { return blen; } __u64 disk_space_required() { -- 2.39.5