Question about ReplicatedBackend::sub_op_modify_reply

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, everyone.


I'm trying to read the source code of ceph, and I found that some code seems strange.
In ReplicatedBackend::sub_op_modify_reply, there is the following code:
		if (r->ack_type & CEPH_OSD_FLAG_ONDISK) {
			assert(ip_op.waiting_for_commit.count(from));
			ip_op.waiting_for_commit.erase(from);
			if (ip_op.op) {
				ostringstream ss;
				ss << "sub_op_commit_rec_from_osd." << from.osd;
				ip_op.op->mark_event(ss.str());
			}
		} else {
			assert(ip_op.waiting_for_applied.count(from));
			if (ip_op.op) {
				ostringstream ss;
				ss << "sub_op_applied_rec_from_osd." << from.osd;
				ip_op.op->mark_event(ss.str());
			}
		}
		ip_op.waiting_for_applied.erase(from);
It seems that the statement "ip_op.waiting_for_applied.erase(from)" should be in the "else" clause, otherwise items in waiting_for_applied could be errorly erased when ack_type is CEPH_OSD_FLAG_ONDISK.

Why put it outside the "else" clause?
Thank you:-)?韬{.n?壏煯壄?%娝?檩?w?{.n?壏渮?u朕楕Ф洝塄}财爖?j:+v墾畐娻2娹櫒璀??摺玜囤?z夸z罐楘+凒殠娸?w棹f




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux