From 4b2c6e3d45634fbe9dcbccb83a8d33caff335227 Mon Sep 17 00:00:00 2001 From: Zhiqiang Wang Date: Thu, 12 Mar 2015 11:22:22 +0800 Subject: [PATCH] osd/OpRequest: add osd op flag SKIP_PROMOTE In some cases we want to skip promoting an object, use this flag to indicate that. Signed-off-by: Zhiqiang Wang --- src/osd/OpRequest.cc | 8 ++++++-- src/osd/OpRequest.h | 2 ++ src/osd/osd_types.h | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index 12963342feb..dc9cb5f7398 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -98,7 +98,10 @@ bool OpRequest::need_class_write_cap() { return check_rmw(CEPH_OSD_RMW_FLAG_CLASS_WRITE); } bool OpRequest::need_promote() { - return check_rmw(CEPH_OSD_RMW_FLAG_PROMOTE); + return check_rmw(CEPH_OSD_RMW_FLAG_FORCE_PROMOTE); +} +bool OpRequest::need_skip_promote() { + return check_rmw(CEPH_OSD_RMW_FLAG_SKIP_PROMOTE); } void OpRequest::set_rmw_flags(int flags) { @@ -117,7 +120,8 @@ void OpRequest::set_class_read() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CLASS_READ); void OpRequest::set_class_write() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CLASS_WRITE); } void OpRequest::set_pg_op() { set_rmw_flags(CEPH_OSD_RMW_FLAG_PGOP); } void OpRequest::set_cache() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CACHE); } -void OpRequest::set_promote() { set_rmw_flags(CEPH_OSD_RMW_FLAG_PROMOTE); } +void OpRequest::set_promote() { set_rmw_flags(CEPH_OSD_RMW_FLAG_FORCE_PROMOTE); } +void OpRequest::set_skip_promote() { set_rmw_flags(CEPH_OSD_RMW_FLAG_SKIP_PROMOTE); } void OpRequest::mark_flag_point(uint8_t flag, const string& s) { #ifdef WITH_LTTNG diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index 88a2704d5fa..21815a59fb8 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -66,6 +66,7 @@ struct OpRequest : public TrackedOp { bool need_class_read_cap(); bool need_class_write_cap(); bool need_promote(); + bool need_skip_promote(); void set_read(); void set_write(); void set_cache(); @@ -73,6 +74,7 @@ struct OpRequest : public TrackedOp { void set_class_write(); void set_pg_op(); void set_promote(); + void set_skip_promote(); void _dump(utime_t now, Formatter *f) const; diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 21f3388e126..18f54025019 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -241,7 +241,8 @@ enum { CEPH_OSD_RMW_FLAG_CLASS_WRITE = (1 << 4), CEPH_OSD_RMW_FLAG_PGOP = (1 << 5), CEPH_OSD_RMW_FLAG_CACHE = (1 << 6), - CEPH_OSD_RMW_FLAG_PROMOTE = (1 << 7), + CEPH_OSD_RMW_FLAG_FORCE_PROMOTE = (1 << 7), + CEPH_OSD_RMW_FLAG_SKIP_PROMOTE = (1 << 8), }; -- 2.47.3