}
};
-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;
::encode(bt, bl);
ObjectOperation op;
+ op.priority = op_prio;
op.create(false);
op.setxattr("parent", bl);
continue;
ObjectOperation op;
+ op.priority = op_prio;
op.create(false);
op.setxattr("parent", bl);
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();
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());