staging: lustre: hsm: prevent migration of HSM archived files

The reference copytool cannot handle migration of HSM archive
files. In the MDT migration path check for HSM attributes and fail if
they are present. In the LMV layer allow creation of volatile files
with any MDT index. Add a test to sanity-hsm to ensure that attempting
to migrate an HSM archive file is handled safely.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6866
Reviewed-on: http://review.whamcloud.com/17511
Reviewed-by: wangdi <di.wang@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
John L. Hammond 2016-11-10 12:31:03 -05:00 committed by Greg Kroah-Hartman
parent 542c45acfe
commit 7da42db835

View File

@ -1618,27 +1618,28 @@ lmv_locate_mds(struct lmv_obd *lmv, struct md_op_data *op_data,
* ct_restore().
*/
if (op_data->op_bias & MDS_CREATE_VOLATILE &&
(int)op_data->op_mds != -1 && lsm) {
(int)op_data->op_mds != -1) {
int i;
tgt = lmv_get_target(lmv, op_data->op_mds, NULL);
if (IS_ERR(tgt))
return tgt;
/* refill the right parent fid */
for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
struct lmv_oinfo *oinfo;
if (lsm) {
/* refill the right parent fid */
for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
struct lmv_oinfo *oinfo;
oinfo = &lsm->lsm_md_oinfo[i];
if (oinfo->lmo_mds == op_data->op_mds) {
*fid = oinfo->lmo_fid;
break;
oinfo = &lsm->lsm_md_oinfo[i];
if (oinfo->lmo_mds == op_data->op_mds) {
*fid = oinfo->lmo_fid;
break;
}
}
}
/* Hmm, can not find the stripe by mdt_index(op_mds) */
if (i == lsm->lsm_md_stripe_count)
tgt = ERR_PTR(-EINVAL);
if (i == lsm->lsm_md_stripe_count)
*fid = lsm->lsm_md_oinfo[0].lmo_fid;
}
return tgt;
}