if (uc->mu_valid != UCRED_INIT) {
uc->mu_suppgids[0] = uc->mu_suppgids[1] = -1;
if (uc->mu_ginfo) {
- groups_free(uc->mu_ginfo);
+ cfs_put_group_info(uc->mu_ginfo);
uc->mu_ginfo = NULL;
}
if (uc->mu_identity) {
}
}
-static int match_nosquash_list(struct rw_semaphore *sem,
- struct list_head *nidlist,
+static int match_nosquash_list(cfs_rw_semaphore_t *sem,
+ cfs_list_t *nidlist,
lnet_nid_t peernid)
{
int rc;
ENTRY;
- down_read(sem);
+ cfs_down_read(sem);
rc = cfs_match_nid(peernid, nidlist);
- up_read(sem);
+ cfs_up_read(sem);
RETURN(rc);
}
if (!remote && perm & CFS_SETGRP_PERM) {
if (pud->pud_ngroups) {
/* setgroups for local client */
- ucred->mu_ginfo = groups_alloc(pud->pud_ngroups);
+ ucred->mu_ginfo = cfs_groups_alloc(pud->pud_ngroups);
if (!ucred->mu_ginfo) {
CERROR("failed to alloc %d groups\n",
pud->pud_ngroups);
out:
if (rc) {
if (ucred->mu_ginfo) {
- groups_free(ucred->mu_ginfo);
+ cfs_put_group_info(ucred->mu_ginfo);
ucred->mu_ginfo = NULL;
}
if (ucred->mu_identity) {
ATTR_ATIME|ATTR_MTIME|ATTR_CTIME|ATTR_FROM_OPEN|
ATTR_ATIME_SET|ATTR_CTIME_SET|ATTR_MTIME_SET|
ATTR_ATTR_FLAG|ATTR_RAW|MDS_OPEN_OWNEROVERRIDE|
- ATTR_FORCE|ATTR_KILL_SUID);
+ ATTR_FORCE|ATTR_KILL_SUID|ATTR_KILL_SGID);
if (in != 0)
- CERROR("Unknown attr bits: %#llx\n", in);
+ CERROR("Unknown attr bits: "LPX64"\n", in);
return out;
}
/* unpacking */
RETURN(0);
}
-static int mdt_epoch_unpack(struct mdt_thread_info *info)
+static int mdt_ioepoch_unpack(struct mdt_thread_info *info)
{
struct req_capsule *pill = info->mti_pill;
ENTRY;
if (req_capsule_get_size(pill, &RMF_MDT_EPOCH, RCL_CLIENT))
- info->mti_epoch = req_capsule_client_get(pill, &RMF_MDT_EPOCH);
+ info->mti_ioepoch =
+ req_capsule_client_get(pill, &RMF_MDT_EPOCH);
else
- info->mti_epoch = NULL;
- RETURN(info->mti_epoch == NULL ? -EFAULT : 0);
+ info->mti_ioepoch = NULL;
+ RETURN(info->mti_ioepoch == NULL ? -EFAULT : 0);
}
static inline int mdt_dlmreq_unpack(struct mdt_thread_info *info) {
RETURN(rc);
/* Epoch may be absent */
- mdt_epoch_unpack(info);
+ mdt_ioepoch_unpack(info);
ma->ma_lmm_size = req_capsule_get_size(pill, &RMF_EADATA, RCL_CLIENT);
if (ma->ma_lmm_size) {
int rc;
ENTRY;
- rc = mdt_epoch_unpack(info);
+ rc = mdt_ioepoch_unpack(info);
if (rc)
RETURN(rc);
else
ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
- if (lustre_msg_get_flags(mdt_info_req(info)->rq_reqmsg) & MSG_REPLAY)
- info->mti_spec.no_create = 1;
+ info->mti_spec.no_create = !!req_is_replay(mdt_info_req(info));
rc = mdt_dlmreq_unpack(info);
RETURN(rc);
else
ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
+ info->mti_spec.no_create = !!req_is_replay(mdt_info_req(info));
+
rc = mdt_dlmreq_unpack(info);
RETURN(rc);
}
LA_CTIME | LA_MTIME | LA_ATIME;
memset(&info->mti_spec.u, 0, sizeof(info->mti_spec.u));
info->mti_spec.sp_cr_flags = rec->cr_flags;
+ /* Do not trigger ASSERTION if client miss to set such flags. */
+ if (unlikely(info->mti_spec.sp_cr_flags == 0))
+ RETURN(-EPROTO);
info->mti_replayepoch = rec->cr_ioepoch;
info->mti_spec.sp_ck_split = !!(rec->cr_bias & MDS_CHECK_SPLIT);
if (req_capsule_get_size(pill, &RMF_CAPA1, RCL_CLIENT))
mdt_set_capainfo(info, 0, rr->rr_fid1,
req_capsule_client_get(pill, &RMF_CAPA1));
- if ((lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY) &&
- (req_capsule_get_size(pill, &RMF_CAPA2, RCL_CLIENT))) {
+ if (req_is_replay(req) &&
+ req_capsule_get_size(pill, &RMF_CAPA2, RCL_CLIENT)) {
#if 0
mdt_set_capainfo(info, 1, rr->rr_fid2,
req_capsule_client_get(pill, &RMF_CAPA2));
RCL_CLIENT);
if (sp->u.sp_ea.eadatalen) {
sp->u.sp_ea.eadata = req_capsule_client_get(pill, &RMF_EADATA);
- if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY)
- sp->no_create = 1;
+ sp->no_create = !!req_is_replay(req);
}
RETURN(0);