OSD::ms_fast_dispatch

本文介绍了一个名为voidOSD的服务中消息快速调度方法ms_fast_dispatch的实现细节。此方法首先检查服务是否处于关闭状态,若服务正在关闭,则减少消息引用计数并返回;接着将消息转换为OpRequest结构并通过跟踪器创建请求;然后获取next_osdmap的引用并预留其epoch;再查找与消息关联的会话并更新等待状态;最后释放预留的osdmap epoch。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void OSD::ms_fast_dispatch(Message *m)
{
//判断osd服务是否正在关闭,若是则减少一个message的引用,引用为0时空间会被释放。
  if (service.is_stopping()) {
    m->put();
    return;
  }
  //将message结构转变成OpRequest结构,有智能指针op指向。
  OpRequestRef op = op_tracker.create_request<OpRequest>(m);
  {
#ifdef WITH_LTTNG
    osd_reqid_t reqid = op->get_reqid();
#endif
    tracepoint(osd, ms_fast_dispatch, reqid.name._type,
        reqid.name._num, reqid.tid, reqid.inc);
  }
  //获取next_osdmap的引用,并注册该osdmap的epoch,作为预留
  OSDMapRef nextmap = service.get_nextmap_reserved();
  //获取与该message相关的session。
  Session *session = static_cast<Session*>(m->get_connection()->get_priv());
  if (session) {
    {
      Mutex::Locker l(session->session_dispatch_lock);
      update_waiting_for_pg(session, nextmap);
      session->waiting_on_map.push_back(op);
      dispatch_session_waiting(session, nextmap);
    }
    session->put();
  }
  //释放之前预留的osdmap epoch。
  service.release_map(nextmap);
}
`m_dispatch/dispatch-x86-solaris.S m_dispatch/dispatch-arm-linux.S: Assembler messages: m_dispatch/dispatch-arm-linux.S:102: Error: selected processor does not support `movw r1,#47' in ARM mode m_dispatch/dispatch-arm-linux.S:103: Error: selected processor does not support `movw r2,#0' in ARM mode m_dispatch/dispatch-arm-linux.S:155: Error: selected processor does not support `movw r4,#:lower16:vgPlain_stats__n_xIndirs_32' in ARM mode m_dispatch/dispatch-arm-linux.S:156: Error: selected processor does not support `movt r4,#:upper16:vgPlain_stats__n_xIndirs_32' in ARM mode m_dispatch/dispatch-arm-linux.S:173: Error: selected processor does not support `ubfx r6,r6,#0,#13' in ARM mode m_dispatch/dispatch-arm-linux.S:176: Error: selected processor does not support `movw r4,#:lower16:vgPlain_tt_fast' in ARM mode m_dispatch/dispatch-arm-linux.S:177: Error: selected processor does not support `movt r4,#:upper16:vgPlain_tt_fast' in ARM mode m_dispatch/dispatch-arm-linux.S:204: Error: selected processor does not support `movw r4,#:lower16:vgPlain_stats__n_xIndir_hits1_32' in ARM mode m_dispatch/dispatch-arm-linux.S:205: Error: selected processor does not support `movt r4,#:upper16:vgPlain_stats__n_xIndir_hits1_32' in ARM mode m_dispatch/dispatch-arm-linux.S:226: Error: selected processor does not support `movw r4,#:lower16:vgPlain_stats__n_xIndir_hits2_32' in ARM mode m_dispatch/dispatch-arm-linux.S:227: Error: selected processor does not support `movt r4,#:upper16:vgPlain_stats__n_xIndir_hits2_32' in ARM mode m_dispatch/dispatch-arm-linux.S:248: Error: selected processor does not support `movw r4,#:lower16:vgPlain_stats__n_xIndir_hits3_32' in ARM mode m_dispatch/dispatch-arm-linux.S:249: Error: selected processor does not support `movt r4,#:upper16:vgPlain_stats__n_xIndir_hits3_32' in ARM mode m_dispatch/dispatch-arm-linux.S:258: Error: selected processor does not support `movw r4,#:lower16:vgPlain_stats__n_xIndir_misses_32' in ARM mode m_dispatch/dispatch-arm-linux.S:259:
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值