From 35a8ed2b2007d89c1f125f01f155232e7f511e98 Mon Sep 17 00:00:00 2001 From: Jinshan Xiong Date: Thu, 29 Mar 2012 17:31:40 -0700 Subject: [PATCH] LU-1252 recovery: don't always swap nidtbl entries Swap nidtbl entries only when server and client are using different byte order. Signed-off-by: Jinshan Xiong Change-Id: I58ebe98e81040ec187f4ecd75020b7b84c7d8904 Reviewed-on: http://review.whamcloud.com/2410 Tested-by: Hudson Reviewed-by: Johann Lombardi Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/mgc/mgc_request.c | 8 +++++--- lustre/mgs/mgs_nids.c | 4 ---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lustre/mgc/mgc_request.c b/lustre/mgc/mgc_request.c index 86df5ee..9beed29 100644 --- a/lustre/mgc/mgc_request.c +++ b/lustre/mgc/mgc_request.c @@ -1231,7 +1231,7 @@ enum { static int mgc_apply_recover_logs(struct obd_device *mgc, struct config_llog_data *cld, __u64 max_version, - void *data, int datalen) + void *data, int datalen, int need_swab) { struct config_llog_instance *cfg = &cld->cld_cfg; struct lustre_sb_info *lsi = s2lsi(cfg->cfg_sb); @@ -1292,7 +1292,8 @@ static int mgc_apply_recover_logs(struct obd_device *mgc, if (datalen < entry_len) /* must have entry_len at least */ break; - lustre_swab_mgs_nidtbl_entry(entry); + if (need_swab) + lustre_swab_mgs_nidtbl_entry(entry); LASSERT(entry->mne_length <= CFS_PAGE_SIZE); if (entry->mne_length < entry_len) break; @@ -1509,7 +1510,8 @@ again: ptr = cfs_kmap(pages[i]); rc2 = mgc_apply_recover_logs(obd, cld, res->mcr_offset, ptr, - min_t(int, ealen, CFS_PAGE_SIZE)); + min_t(int, ealen, CFS_PAGE_SIZE), + ptlrpc_rep_need_swab(req)); cfs_kunmap(pages[i]); if (rc2 < 0) { CWARN("Process recover log %s error %d\n", diff --git a/lustre/mgs/mgs_nids.c b/lustre/mgs/mgs_nids.c index 794ee9e..5399e47 100644 --- a/lustre/mgs/mgs_nids.c +++ b/lustre/mgs/mgs_nids.c @@ -146,10 +146,7 @@ static int mgs_nidtbl_read(struct obd_device *unused, struct mgs_nidtbl *tbl, /* check if we need to consume remaining bytes. */ if (last_in_unit != NULL && bytes_in_unit) { - /* entry has been swapped. */ - __swab32s(&last_in_unit->mne_length); last_in_unit->mne_length += bytes_in_unit; - __swab32s(&last_in_unit->mne_length); rc += bytes_in_unit; buf += bytes_in_unit; last_in_unit = NULL; @@ -195,7 +192,6 @@ static int mgs_nidtbl_read(struct obd_device *unused, struct mgs_nidtbl *tbl, entry->mne_nid_count = mti->mti_nid_count; memcpy(entry->u.nids, mti->mti_nids, mti->mti_nid_count * sizeof(lnet_nid_t)); - lustre_swab_mgs_nidtbl_entry(entry); version = tgt->mnt_version; rc += entry_len; -- 1.8.3.1