RETURN(-ENOENT);
}
- if (exp_connect_rmtclient(exp)) {
- void *buf = req_capsule_server_get(info->mti_pill, &RMF_ACL);
-
- rc = mdt_pack_remote_perm(info, o, buf);
- if (rc) {
- repbody->mbo_valid &= ~OBD_MD_FLRMTPERM;
- repbody->mbo_aclsize = 0;
- } else {
- repbody->mbo_valid |= OBD_MD_FLRMTPERM;
- repbody->mbo_aclsize = sizeof(struct mdt_remote_perm);
- }
- }
#ifdef CONFIG_FS_POSIX_ACL
- else if (exp_connect_flags(exp) & OBD_CONNECT_ACL)
- rc = mdt_pack_acl2body(info, repbody, o,
- exp->exp_target_data.ted_nodemap);
+ if (exp_connect_flags(exp) & OBD_CONNECT_ACL) {
+ struct lu_nodemap *nodemap = nodemap_get_from_exp(exp);
+ if (IS_ERR(nodemap))
+ RETURN(PTR_ERR(nodemap));
+
+ rc = mdt_pack_acl2body(info, repbody, o, nodemap);
+ nodemap_putref(nodemap);
+ if (rc)
+ RETURN(rc);
+ }
#endif
/*
mdt_obd_name(info->mti_mdt), PFID(fid), -EFAULT);
LU_OBJECT_DEBUG(D_WARNING, info->mti_env,
&o->mot_obj,
- "Object isn't on this server! FLD error?\n");
+ "Object isn't on this server! FLD error?");
rc = -EFAULT;
} else {
if (mdt_object_exists(o)) {
info->mti_spec.u.sp_ea.eadata == NULL)
GOTO(out, result = err_serious(-EINVAL));
+ if (create_flags & FMODE_WRITE &&
+ exp_connect_flags(req->rq_export) & OBD_CONNECT_RDONLY)
+ GOTO(out, result = -EROFS);
+
CDEBUG(D_INODE, "I am going to open "DFID"/("DNAME"->"DFID") "
"cr_flag="LPO64" mode=0%06o msg_flag=0x%x\n",
PFID(rr->rr_fid1), PNAME(&rr->rr_name),
if (result != 0)
GOTO(out_child, result);
}
- created = 1;
+ created = 1;
+ mdt_counter_incr(req, LPROC_MDT_MKNOD);
} else {
/*
* The object is on remote node, return its FID for remote open.
lease_broken = ldlm_is_cancel(lease);
unlock_res_and_lock(lease);
- LDLM_DEBUG(lease, DFID " lease broken? %d\n",
+ LDLM_DEBUG(lease, DFID " lease broken? %d",
PFID(mdt_object_fid(o)), lease_broken);
/* Cancel server side lease. Client side counterpart should
CERROR("%s: error closing volatile file "DFID": rc = %d\n",
mdt_obd_name(info->mti_mdt), PFID(&data->cd_fid), rc2);
LU_OBJECT_DEBUG(D_HSM, info->mti_env, &orphan->mot_obj,
- "object closed\n");
+ "object closed");
mdt_object_put(info->mti_env, orphan);
out_unlock:
lease_broken = ldlm_is_cancel(lease);
unlock_res_and_lock(lease);
- LDLM_DEBUG(lease, DFID " lease broken? %d\n",
+ LDLM_DEBUG(lease, DFID " lease broken? %d",
PFID(mdt_object_fid(o)), lease_broken);
/* Cancel server side lease. Client side counterpart should
o = mfd->mfd_object;
mdt_object_get(info->mti_env, o);
ret = mdt_mfd_close(info, mfd);
- rc = mdt_handle_last_unlink(info, o, ma);
+ if (repbody != NULL)
+ rc = mdt_handle_last_unlink(info, o, ma);
mdt_object_put(info->mti_env, o);
}