From 26151ec62f5b675ba799bcfce0027705a940b742 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Tue, 13 May 2014 13:50:47 +0800 Subject: [PATCH] mds: lower IO priority of storing backtrace Signed-off-by: Yan, Zheng --- src/mds/CInode.cc | 7 ++++++- src/mds/CInode.h | 2 +- src/mds/journal.cc | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 94705de26f67e..a3d6d5eea5a7f 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 727d43ea7c41e..adc0bf7d364a3 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 44e51840c1e7a..53bcc6906e69b 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()); -- 2.39.5