CT_TRACE("'%s' data archived to '%s' done\n", src, dst);
/* attrs will remain on the MDS; no need to copy them, except possibly
for disaster recovery */
if (opt.o_copy_attrs) {
rc = ct_copy_attr(src, dst, src_fd, dst_fd);
if (rc < 0) {
CT_ERROR("'%s' attr copy failed to '%s' (%s)\n",
src, dst, strerror(-rc));
rcf = rc;
}
CT_TRACE("'%s' attr file copied to archive '%s'\n",
src, dst);
}
/* xattrs will remain on the MDS; no need to copy them, except possibly
for disaster recovery */
if (opt.o_copy_xattrs) {
rc = ct_copy_xattr(src, dst, src_fd, dst_fd, false);
if (rc < 0) {
CT_ERROR("'%s' xattr copy failed to '%s' (%s)\n",
src, dst, strerror(-rc));
rcf = rcf ? rcf : rc;
}
CT_ERROR("'%s' xattr file copied to archive '%s'\n",
src, dst);
}
if (rename_needed == true) {
char tmp_src[PATH_MAX];
char tmp_dst[PATH_MAX];
ct_path_archive(src, sizeof(src), opt.o_hsm_root,
&hai->hai_fid);
rc = rename(dst, src);
if (rc < 0) {
CT_ERROR("'%s' renamed to '%s' failed (%s)\n", dst, src,
strerror(errno));
rc = -errno;
goto fini_major;
}
snprintf(tmp_src, sizeof(tmp_src), "%s.lov", src);
snprintf(tmp_dst, sizeof(tmp_dst), "%s.lov", dst);
rc = rename(tmp_dst, tmp_src);
if (rc < 0)
CT_ERROR("'%s' renamed to '%s' failed (%s)\n",
tmp_dst, tmp_src, strerror(errno));
}
if (opt.o_shadow_tree) {
/* Create a namespace of softlinks that shadows the original
* Lustre namespace. This will only be current at
* time-of-archive (won't follow renames).
* WARNING: release won't kill these links; a manual
* cleanup of dead links would be required.
*/
Also perhaps the test can be fixed up so that it could detects this incompatibility and "skip" it when local resources are not compliant? These tests will be ran in all sorts of environments.