st->st_sub_th = sub_th;
sub_th->th_wait_submit = 1;
+ sub_thandle_register_stop_cb(st, top_th->tt_multiple_thandle);
return 0;
}
{
struct target_distribute_txn_data *tdtd;
struct dt_device *dt = new->tmt_master_sub_dt;
+ struct sub_thandle *st;
LASSERT(dt != NULL);
tdtd = dt2lu_dev(dt)->ld_site->ls_tgt->lut_tdtd;
new->tmt_batchid = tdtd->tdtd_batchid++;
list_add_tail(&new->tmt_commit_list, &tdtd->tdtd_list);
spin_unlock(&tdtd->tdtd_batchid_lock);
+ list_for_each_entry(st, &new->tmt_sub_thandle_list, st_sub_list) {
+ if (st->st_sub_th != NULL)
+ sub_thandle_register_commit_cb(st, new);
+ }
top_multiple_thandle_get(new);
top_multiple_thandle_dump(new, D_INFO);
}
struct dt_device *dt = new->tmt_master_sub_dt;
struct top_multiple_thandle *tmt;
struct target_distribute_txn_data *tdtd;
+ struct sub_thandle *st;
bool at_head = false;
LASSERT(dt != NULL);
list_add(&new->tmt_commit_list, &tdtd->tdtd_list);
}
spin_unlock(&tdtd->tdtd_batchid_lock);
+
+ list_for_each_entry(st, &new->tmt_sub_thandle_list, st_sub_list) {
+ if (st->st_sub_th != NULL)
+ sub_thandle_register_commit_cb(st, new);
+ }
+
top_multiple_thandle_get(new);
top_multiple_thandle_dump(new, D_INFO);
if (new->tmt_committed && at_head)
st->st_sub_th);
if (rc != 0)
GOTO(out, rc);
-
- sub_thandle_register_stop_cb(st, tmt);
- sub_thandle_register_commit_cb(st, tmt);
}
out:
th->th_result = rc;
st->st_sub_th = sub_th;
sub_th->th_top = &top_th->tt_super;
+ sub_thandle_register_stop_cb(st, top_th->tt_multiple_thandle);
return st;
}