-#ifdef CONFIG_FS_POSIX_ACL
- if (sbi->ll_flags & LL_SBI_RMT_CLIENT &&
- (xattr_type == XATTR_ACL_ACCESS_T ||
- xattr_type == XATTR_ACL_DEFAULT_T)) {
- rce = rct_search(&sbi->ll_rct, current_pid());
- if (rce == NULL ||
- (rce->rce_ops != RMT_LSETFACL &&
- rce->rce_ops != RMT_RSETFACL))
- RETURN(-EOPNOTSUPP);
-
- if (rce->rce_ops == RMT_LSETFACL) {
- struct eacl_entry *ee;
-
- ee = et_search_del(&sbi->ll_et, current_pid(),
- ll_inode2fid(inode), xattr_type);
- LASSERT(ee != NULL);
- if (valid & OBD_MD_FLXATTR) {
- acl = lustre_acl_xattr_merge2ext(
- (posix_acl_xattr_header *)value,
- size, ee->ee_acl);
- if (IS_ERR(acl)) {
- ee_free(ee);
- RETURN(PTR_ERR(acl));
- }
- size = CFS_ACL_XATTR_SIZE(\
- le32_to_cpu(acl->a_count), \
- ext_acl_xattr);
- pv = (const char *)acl;
- }
- ee_free(ee);
- } else if (rce->rce_ops == RMT_RSETFACL) {
- int acl_size = lustre_posix_acl_xattr_filter(
- (posix_acl_xattr_header *)value,
- size, &new_value);
- if (unlikely(acl_size < 0))
- RETURN(acl_size);
- size = acl_size;
-
- pv = (const char *)new_value;
- } else
- RETURN(-EOPNOTSUPP);
-
- valid |= rce_ops2valid(rce->rce_ops);
- }
-#endif
- oc = ll_mdscapa_get(inode);
- rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode), oc,
- valid, name, pv, size, 0, flags,
- ll_i2suppgid(inode), &req);
- capa_put(oc);
-#ifdef CONFIG_FS_POSIX_ACL
- if (new_value != NULL)
- lustre_posix_acl_xattr_free(new_value, size);
- if (acl != NULL)
- lustre_ext_acl_xattr_free(acl);
-#endif
+ rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode), valid, name, pv,
+ size, 0, flags, ll_i2suppgid(inode), &req);