From: Yan, Zheng Date: Tue, 13 May 2014 05:50:47 +0000 (+0800) Subject: mds: lower IO priority of storing backtrace X-Git-Tag: v0.81~15^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1802%2Fhead;p=ceph.git mds: lower IO priority of storing backtrace Signed-off-by: Yan, Zheng --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 94705de26f67..a3d6d5eea5a7 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -1026,11 +1026,14 @@ struct C_Inode_StoredBacktrace : public Context { } }; -void CInode::store_backtrace(Context *fin) +void CInode::store_backtrace(Context *fin, int op_prio) { dout(10) << "store_backtrace on " << *this << dendl; assert(is_dirty_parent()); + if (op_prio < 0) + op_prio = CEPH_MSG_PRIO_DEFAULT; + auth_pin(this); int64_t pool; @@ -1045,6 +1048,7 @@ void CInode::store_backtrace(Context *fin) ::encode(bt, bl); ObjectOperation op; + op.priority = op_prio; op.create(false); op.setxattr("parent", bl); @@ -1071,6 +1075,7 @@ void CInode::store_backtrace(Context *fin) continue; ObjectOperation op; + op.priority = op_prio; op.create(false); op.setxattr("parent", bl); diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 727d43ea7c41..adc0bf7d364a 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -527,7 +527,7 @@ public: void _fetched(bufferlist& bl, bufferlist& bl2, Context *fin); void build_backtrace(int64_t pool, inode_backtrace_t& bt); - void store_backtrace(Context *fin); + void store_backtrace(Context *fin, int op_prio=-1); void _stored_backtrace(version_t v, Context *fin); void _mark_dirty_parent(LogSegment *ls, bool dirty_pool=false); void clear_dirty_parent(); diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 44e51840c1e7..53bcc6906e69 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -199,7 +199,7 @@ void LogSegment::try_to_expire(MDS *mds, C_GatherBuilder &gather_bld, int op_pri assert(in->is_auth()); if (in->can_auth_pin()) { dout(15) << "try_to_expire waiting for storing backtrace on " << *in << dendl; - in->store_backtrace(gather_bld.new_sub()); + in->store_backtrace(gather_bld.new_sub(), op_prio); } else { dout(15) << "try_to_expire waiting for unfreeze on " << *in << dendl; in->add_waiter(CInode::WAIT_UNFREEZE, gather_bld.new_sub());