Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-6840 target: update reply data after update replay
[fs/lustre-release.git]
/
lustre
/
ldlm
/
ldlm_lib.c
diff --git
a/lustre/ldlm/ldlm_lib.c
b/lustre/ldlm/ldlm_lib.c
index
f56b452
..
9b51752
100644
(file)
--- a/
lustre/ldlm/ldlm_lib.c
+++ b/
lustre/ldlm/ldlm_lib.c
@@
-1571,7
+1571,6
@@
void target_cleanup_recovery(struct obd_device *obd)
{
struct ptlrpc_request *req, *n;
struct list_head clean_list;
- ENTRY;
INIT_LIST_HEAD(&clean_list);
spin_lock(&obd->obd_dev_lock);
@@
-2135,100
+2134,6
@@
static void drop_duplicate_replay_req(struct lu_env *env,
obd->obd_replayed_requests++;
}
-/**
- * Update last_rcvd of the update
- *
- * Because update recovery might update the last_rcvd by updates, i.e.
- * it will not update the last_rcvd information in memory, so we need
- * refresh these information in memory after update recovery.
- *
- * \param[in] obd obd_device under recoverying.
- * \param[in] dtrq the update replay requests being replayed.
- */
-static void target_update_lcd(struct lu_env *env, struct lu_target *lut,
- struct distribute_txn_replay_req *dtrq)
-{
- struct obd_device *obd = lut->lut_obd;
- struct obd_export *export;
- struct tg_export_data *ted;
- struct distribute_txn_replay_req_sub *dtrqs;
- struct seq_server_site *site;
- struct update_records *ur;
- const struct lu_fid *fid;
- struct update_ops *ops;
- struct update_params *params;
- struct update_op *op;
- __u32 mdt_index;
- unsigned int i;
- struct lsd_client_data *lcd = NULL;
-
- /* if Updates has been executed(committed) on the recovery target,
- * i.e. the updates is not being executed on the target, so we do
- * not need update it in memory */
- site = lu_site2seq(obd->obd_lu_dev->ld_site);
- mdt_index = site->ss_node_id;
- dtrqs = dtrq_sub_lookup(dtrq, mdt_index);
- if (dtrqs != NULL)
- return;
-
- if (dtrq->dtrq_lur == NULL)
- return;
-
- /* Find the update last_rcvd record */
- fid = lu_object_fid(&lut->lut_last_rcvd->do_lu);
- ur = &dtrq->dtrq_lur->lur_update_rec;
- ops = &ur->ur_ops;
- params = update_records_get_params(ur);
- for (i = 0, op = &ops->uops_op[0]; i < ur->ur_update_count;
- i++, op = update_op_next_op(op)) {
- __u64 pos;
- __u16 size;
- void *buf;
-
- if (!lu_fid_eq(&op->uop_fid, fid))
- continue;
-
- if (op->uop_type != OUT_WRITE)
- continue;
-
- buf = update_params_get_param_buf(params, op->uop_params_off[1],
- ur->ur_param_count, NULL);
- if (buf == NULL)
- continue;
-
- pos = le64_to_cpu(*(__u64 *)buf);
- if (pos == 0)
- continue;
-
- buf = update_params_get_param_buf(params, op->uop_params_off[0],
- ur->ur_param_count, &size);
- if (buf == NULL)
- continue;
-
- if (size != sizeof(*lcd))
- continue;
- lcd = buf;
- }
-
- if (lcd == NULL || lcd->lcd_uuid[0] == '\0')
- return;
-
- /* locate the export then update the exp_target_data if needed */
- export = cfs_hash_lookup(obd->obd_uuid_hash, lcd->lcd_uuid);
- if (export == NULL)
- return;
-
- ted = &export->exp_target_data;
- if (lcd->lcd_last_xid > ted->ted_lcd->lcd_last_xid) {
- CDEBUG(D_HA, "%s update xid from "LPU64" to "LPU64"\n",
- lut->lut_obd->obd_name, ted->ted_lcd->lcd_last_xid,
- lcd->lcd_last_xid);
- ted->ted_lcd->lcd_last_xid = lcd->lcd_last_xid;
- ted->ted_lcd->lcd_last_result = lcd->lcd_last_result;
- }
- class_export_put(export);
-}
-
static void replay_request_or_update(struct lu_env *env,
struct lu_target *lut,
struct target_recovery_data *trd,
@@
-2315,7
+2220,6
@@
static void replay_request_or_update(struct lu_env *env,
if (transno > obd->obd_next_recovery_transno)
obd->obd_next_recovery_transno = transno;
spin_unlock(&obd->obd_recovery_task_lock);
- target_update_lcd(env, lut, dtrq);
dtrq_destroy(dtrq);
} else {
spin_unlock(&obd->obd_recovery_task_lock);