#define DEBUG_SUBSYSTEM S_MDS
#include <linux/module.h>
+#include <linux/pagemap.h>
#include <dt_object.h>
#include <lustre_acl.h>
nodemap_fileset = nodemap_get_fileset(exp->exp_target_data.ted_nodemap);
if (nodemap_fileset && nodemap_fileset[0]) {
+ CDEBUG(D_INFO, "nodemap fileset is %s\n", nodemap_fileset);
if (fileset) {
/* consider fileset from client as a sub-fileset
* of the nodemap one */
}
if (fileset) {
+ CDEBUG(D_INFO, "Getting fileset %s\n", fileset);
rc = mdt_lookup_fileset(info, fileset, &repbody->mbo_fid1);
if (rc < 0)
GOTO(out, rc = err_serious(rc));
rc = mdt_attr_get_complex(info, o, ma);
if (unlikely(rc)) {
- CERROR("%s: getattr error for "DFID": rc = %d\n",
+ CDEBUG(rc == -ENOENT ? D_OTHER : D_ERROR,
+ "%s: getattr error for "DFID": rc = %d\n",
mdt_obd_name(info->mti_mdt),
PFID(mdt_object_fid(o)), rc);
RETURN(rc);
PFID(mdt_object_fid(o)), rc);
rc = -EFAULT;
} else {
- int print_limit = min_t(int, PAGE_CACHE_SIZE - 128, rc);
+ int print_limit = min_t(int, PAGE_SIZE - 128, rc);
if (OBD_FAIL_CHECK(OBD_FAIL_MDS_READLINK_EPROTO))
rc -= 2;
rdpg->rp_attrs |= LUDA_64BITHASH;
rdpg->rp_count = min_t(unsigned int, reqbody->mbo_nlink,
exp_max_brw_size(tsi->tsi_exp));
- rdpg->rp_npages = (rdpg->rp_count + PAGE_CACHE_SIZE - 1) >>
- PAGE_CACHE_SHIFT;
+ rdpg->rp_npages = (rdpg->rp_count + PAGE_SIZE - 1) >>
+ PAGE_SHIFT;
OBD_ALLOC(rdpg->rp_pages, rdpg->rp_npages * sizeof rdpg->rp_pages[0]);
if (rdpg->rp_pages == NULL)
RETURN(-ENOMEM);
for (i = 0; i < rdpg->rp_npages; ++i) {
- rdpg->rp_pages[i] = alloc_page(GFP_IOFS);
+ rdpg->rp_pages[i] = alloc_page(GFP_NOFS);
if (rdpg->rp_pages[i] == NULL)
GOTO(free_rdpg, rc = -ENOMEM);
}
{
struct mdt_lock_handle *lhc = &info->mti_lh[MDT_LH_RMT];
struct ldlm_reply *ldlm_rep = NULL;
- int rc, grc;
+ int rc;
+ ENTRY;
/*
* Initialize lhc->mlh_reg_lh either from a previously granted lock
return rc;
}
- grc = mdt_getxattr(info);
-
- rc = mdt_intent_lock_replace(info, lockp, lhc, flags, 0);
+ rc = mdt_getxattr(info);
if (mdt_info_req(info)->rq_repmsg != NULL)
ldlm_rep = req_capsule_server_get(info->mti_pill, &RMF_DLM_REP);
- if (ldlm_rep == NULL)
+
+ if (ldlm_rep == NULL ||
+ OBD_FAIL_CHECK(OBD_FAIL_MDS_XATTR_REP)) {
+ mdt_object_unlock(info, info->mti_object, lhc, 1);
RETURN(err_serious(-EFAULT));
+ }
+
+ ldlm_rep->lock_policy_res2 = clear_serious(rc);
- ldlm_rep->lock_policy_res2 = grc;
+ /* This is left for interop instead of adding a new interop flag.
+ * LU-7433 */
+#if LUSTRE_VERSION_CODE > OBD_OCD_VERSION(3, 0, 0, 0)
+ if (ldlm_rep->lock_policy_res2) {
+ mdt_object_unlock(info, info->mti_object, lhc, 1);
+ RETURN(ELDLM_LOCK_ABORTED);
+ }
+#endif
- return rc;
+ rc = mdt_intent_lock_replace(info, lockp, lhc, flags, rc);
+ RETURN(rc);
}
static int mdt_intent_getattr(enum mdt_it_code opcode,
next->md_ops->mdo_iocontrol(env, next, OBD_IOC_STOP_LFSCK, 0, &stop);
mdt_stack_pre_fini(env, m, md2lu_dev(m->mdt_child));
- target_recovery_fini(obd);
ping_evictor_stop();
if (m->mdt_opts.mo_coordinator)