Due to cl_loi_list_lock release in osc_send_oap_rpc(), this
leaves a window where lov_oinfo may be freed/poisoned between both
write/read steps/calls of osc_send_oap_rpc() in osc_check_rpcs(),
thus it needs to be refreshed.
Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: Id3056c1fca91bade65b6d2b556b6b47a3d3d089e
Reviewed-on: http://review.whamcloud.com/6089
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Johann Lombardi <johann.lombardi@intel.com>
else if (rc == 0)
race_counter++;
}
+
+ /* Refresh loi just in case it has been freed during
+ * cl_loi_list_lock release in osc_send_oap_rpc().
+ */
+ loi = osc_next_loi(cli);
+ if (loi == NULL)
+ break;
+
if (lop_makes_rpc(cli, &loi->loi_read_lop, OBD_BRW_READ)) {
rc = osc_send_oap_rpc(env, cli, loi, OBD_BRW_READ,
&loi->loi_read_lop);