From ff05b936e0504c45c0fe39711ee166510a710568 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 26 Nov 2008 14:35:56 -0800 Subject: [PATCH] osd: clean up touch() calls to use exists bool We only need to touch of the head object itself doesn't exist. Do so far all ops. This works cleanly despite any op munging above. --- src/osd/ReplicatedPG.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ad2b0c89c15c2..83d9158166e9f 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -995,7 +995,7 @@ int ReplicatedPG::prepare_simple_op(ObjectStore::Transaction& t, osd_reqid_t req case CEPH_OSD_OP_ZERO: { // zero assert(op.length); - if (!snapset.head_exists) + if (!exists) t.touch(info.pgid.to_coll(), poid); t.zero(info.pgid.to_coll(), poid, op.offset, op.length); if (snapset.clones.size()) { @@ -1012,7 +1012,7 @@ int ReplicatedPG::prepare_simple_op(ObjectStore::Transaction& t, osd_reqid_t req case CEPH_OSD_OP_TRUNCATE: { // truncate - if (!snapset.head_exists) + if (!exists) t.touch(info.pgid.to_coll(), poid); t.truncate(info.pgid.to_coll(), poid, op.length); if (snapset.clones.size()) { @@ -1063,6 +1063,8 @@ int ReplicatedPG::prepare_simple_op(ObjectStore::Transaction& t, osd_reqid_t req case CEPH_OSD_OP_SETXATTR: { + if (!exists) + t.touch(info.pgid.to_coll(), poid); nstring name(op.name_len + 1); name[0] = '_'; bp.copy(op.name_len, name.data()+1); -- 2.39.5