X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_object.c;h=39d3814ab6609642f50a91f248aa316d35c8fb1b;hb=1a24137e8f26eaae9a2dac39a1e8a8a0bed46b6b;hp=1bea083a7fc28a958844b3387dd663368a658d1f;hpb=c173ef1be8e2936d4f186dda576e401602d485fd;p=fs%2Flustre-release.git diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index 1bea083..39d3814 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -735,6 +735,7 @@ static int mdd_fix_attr(const struct lu_env *env, struct mdd_object *obj, /* Bypass la_vaild == LA_MODE, * this is for changing file with SUID or SGID. */ if ((la->la_valid & ~LA_MODE) && + !(ma->ma_attr_flags & MDS_PERM_BYPASS) && (uc->mu_fsuid != tmp_la->la_uid) && !mdd_capable(uc, CAP_FOWNER)) RETURN(-EPERM); @@ -1602,6 +1603,16 @@ out_unlock: return rc; } +static int mdd_object_sync(const struct lu_env *env, struct md_object *obj) +{ + struct mdd_object *mdd_obj = md2mdd_obj(obj); + struct dt_object *next; + + LASSERT(mdd_object_exists(mdd_obj)); + next = mdd_object_child(mdd_obj); + return next->do_ops->do_object_sync(env, next); +} + struct md_object_operations mdd_obj_ops = { .moo_permission = mdd_permission, .moo_attr_get = mdd_attr_get, @@ -1617,5 +1628,6 @@ struct md_object_operations mdd_obj_ops = { .moo_close = mdd_close, .moo_readpage = mdd_readpage, .moo_readlink = mdd_readlink, - .moo_capa_get = mdd_capa_get + .moo_capa_get = mdd_capa_get, + .moo_object_sync = mdd_object_sync, };