From: Zhiqiang Wang Date: Thu, 12 Mar 2015 03:22:22 +0000 (+0800) Subject: osd/OpRequest: add osd op flag SKIP_PROMOTE X-Git-Tag: v9.0.1~38^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4b2c6e3d45634fbe9dcbccb83a8d33caff335227;p=ceph.git 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 --- diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index 12963342feb7..dc9cb5f73986 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 88a2704d5fa4..21815a59fb8b 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 21f3388e1268..18f540250196 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), };