<div>Hi all:</div><div>    I have a problem about the epoch information in SD_OP_READ_PEER request header. I'm not sure whether I misunderstand the code or it is a bug.</div><div>    When we recover a erasure code object in recovery, we need to read the remaining replicas firstly to rebuild the lost replica. In function read_erasure_object(), we init <span style="color: rgb(121, 93, 163); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 16.7999992370605px; white-space: pre;"></span><span style="line-height: 1.5;"> </span><span style="line-height: 1.5;">SD_OP_READ_PEER request header by the following code:</span></div><div><div><br></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre"> </span>sd_init_req(&hdr, SD_OP_READ_PEER);</font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">  </span><font color="#ff0000">hdr.epoch = epoch;</font></font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">    </span>hdr.flags = SD_FLAG_CMD_RECOVERY;</font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>hdr.data_length = rlen;</font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">  </span>hdr.obj.oid = oid;</font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">       </span><font color="#ff0000">hdr.obj.tgt_epoch = tgt_epoch;</font></font></div><div><font size="1"><span class="Apple-tab-span" style="white-space:pre">        </span>hdr.obj.ec_index = idx;</font></div></div><div><br></div><div>    I think hdr.epoch is current epoch of the cluster and hdr.obj.tgt_epoch is the historical epoch from which we want to read the stale replica. The target node will call peer_read_obj() to process <span style="line-height: 1.5;">SD_OP_READ_PEER request. Peer_read_obj() set </span><font size="1"><span style="line-height: 1.5;"> </span><span style="line-height: 1.5;"></span><span style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;">iocb.</span><span class="pl-smi" style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;">epoch</span><span style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;"> = hdr->epoch</span></font><span style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 16.7999992370605px; white-space: pre;"> </span><span style="line-height: 1.5;">then pass iocb to s</span>d_store->rea<span style="line-height: 1.5;">d(). In default_read(), we</span><span style="line-height: 15px;"><font size="2"> </font></span><span style="line-height: 1.5;">use </span><font size="1"><span style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;">iocb->epoch < </span><span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;">sys_epoch</span></font><span style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; line-height: 16.7999992370605px; white-space: pre;"><font size="1">() </font></span><font size="2"><span style="line-height: 1.5;">to  judge whether </span>the request is againt the older epoch which needs to read replica from </font><span style="line-height: 1.5;"><font size="2">the stale directory.</font></span><span style="line-height: 1.5;"><font size="2"> I think we use the wrong epoch here. We should use </font></span><span style="line-height: 15px;"><font size="2">hdr.obj.tgt_epoch rather than </font></span><span style="line-height: 15px;"><font size="2">hdr.epoch to make the judgement. </font></span><span style="line-height: 1.5; font-size: small;">Can anyone answer my question?</span></div><div><span style="line-height: 15px;"><font size="2"><br></font></span></div><div><font size="2"><span style="line-height: 19.5px;">Thanks.</span></font></div><div><font size="2"><span style="line-height: 19.5px;">Bingpeng</span></font></div><div><span style="line-height: 1.5;"><br></span></div><div><span style="line-height: 1.5;"><br></span></div>