[lustre-devel] [PATCH] staging: lustre: remove remote client support

Oleg Drokin oleg.drokin at intel.com
Sun Jun 19 20:44:41 PDT 2016


On Jun 19, 2016, at 10:53 PM, James Simmons wrote:

> From: Fan Yong <fan.yong at intel.com>
> 
> There are several obsolete sub commands for lfs to work with
> remote client. We do not support that anymore, and should be
> deleted along with any kernel code related to remote client.

I wish you reworked this message to say that it removes
remote something or other that's no longer in use.

I am not sure why Greag or kernel guys would care for lctl
commands, esp. considering those are not even part of this patch.

> Signed-off-by: Fan Yong <fan.yong at intel.com>
> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6971
> Reviewed-on: http://review.whamcloud.com/19789
> Reviewed-by: Andreas Dilger <andreas.dilger at intel.com>
> Reviewed-by: James Simmons <uja.ornl at yahoo.com>
> Reviewed-by: Lai Siyao <lai.siyao at intel.com>
> Reviewed-by: Oleg Drokin <oleg.drokin at intel.com>
> Signed-off-by: James Simmons <jsimmons at infradead.org>
> ---
> .../lustre/lustre/include/lustre/lustre_idl.h      |   40 +--
> .../lustre/lustre/include/lustre/lustre_user.h     |   15 +-
> .../staging/lustre/lustre/include/lustre_eacl.h    |   11 -
> .../staging/lustre/lustre/include/lustre_export.h  |   13 -
> drivers/staging/lustre/lustre/include/lustre_net.h |    1 -
> .../lustre/lustre/include/lustre_req_layout.h      |    2 +-
> drivers/staging/lustre/lustre/include/obd.h        |    3 -
> drivers/staging/lustre/lustre/include/obd_class.h  |   10 -
> drivers/staging/lustre/lustre/llite/Makefile       |    3 +-
> drivers/staging/lustre/lustre/llite/dir.c          |   29 +--
> drivers/staging/lustre/lustre/llite/file.c         |   15 -
> .../staging/lustre/lustre/llite/llite_internal.h   |   88 +----
> drivers/staging/lustre/lustre/llite/llite_lib.c    |   69 +---
> drivers/staging/lustre/lustre/llite/llite_rmtacl.c |  295 --------------
> drivers/staging/lustre/lustre/llite/lproc_llite.c  |    6 +-
> drivers/staging/lustre/lustre/llite/remote_perm.c  |  320 ---------------
> drivers/staging/lustre/lustre/llite/super25.c      |   19 -
> drivers/staging/lustre/lustre/llite/xattr.c        |   97 +-----
> drivers/staging/lustre/lustre/lmv/lmv_obd.c        |   22 -
> drivers/staging/lustre/lustre/mdc/mdc_locks.c      |   21 +-
> drivers/staging/lustre/lustre/mdc/mdc_reint.c      |    2 +-
> drivers/staging/lustre/lustre/mdc/mdc_request.c    |   76 +----
> drivers/staging/lustre/lustre/obdclass/Makefile    |    3 +-
> drivers/staging/lustre/lustre/obdclass/acl.c       |  411 --------------------
> drivers/staging/lustre/lustre/osc/osc_cache.c      |    5 +-
> drivers/staging/lustre/lustre/osc/osc_page.c       |    4 +-
> drivers/staging/lustre/lustre/ptlrpc/layout.c      |   12 +-
> .../staging/lustre/lustre/ptlrpc/pack_generic.c    |   13 -
> drivers/staging/lustre/lustre/ptlrpc/wiretest.c    |   48 ---
> 29 files changed, 55 insertions(+), 1598 deletions(-)
> delete mode 100644 drivers/staging/lustre/lustre/llite/llite_rmtacl.c
> delete mode 100644 drivers/staging/lustre/lustre/llite/remote_perm.c
> delete mode 100644 drivers/staging/lustre/lustre/obdclass/acl.c
> 
> diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h
> index fac7215..051864c 100644
> --- a/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h
> +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_idl.h
> @@ -1237,8 +1237,16 @@ void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb);
> 						  */
> #define OBD_CONNECT_ATTRFID	       0x4000ULL /*Server can GetAttr By Fid*/
> #define OBD_CONNECT_NODEVOH	       0x8000ULL /*No open hndl on specl nodes*/
> -#define OBD_CONNECT_RMT_CLIENT	      0x10000ULL /*Remote client */
> -#define OBD_CONNECT_RMT_CLIENT_FORCE  0x20000ULL /*Remote client by force */
> +#define OBD_CONNECT_RMT_CLIENT	      0x10000ULL /* Remote client, never used
> +						  * in production. Removed in
> +						  * 2.9. Keep this flag to
> +						  * avoid reuse.
> +						  */
> +#define OBD_CONNECT_RMT_CLIENT_FORCE  0x20000ULL /* Remote client by force,
> +						  * never used in production.
> +						  * Removed in 2.9. Keep this
> +						  * flag to avoid reuse
> +						  */
> #define OBD_CONNECT_BRW_SIZE	      0x40000ULL /*Max bytes per rpc */
> #define OBD_CONNECT_QUOTA64	      0x80000ULL /*Not used since 2.4 */
> #define OBD_CONNECT_MDS_CAPA	     0x100000ULL /*MDS capability */
> @@ -1699,7 +1707,7 @@ lov_mds_md_max_stripe_count(size_t buf_size, __u32 lmm_magic)
> #define OBD_MD_FLXATTRLS     (0x0000002000000000ULL) /* xattr list */
> #define OBD_MD_FLXATTRRM     (0x0000004000000000ULL) /* xattr remove */
> #define OBD_MD_FLACL	     (0x0000008000000000ULL) /* ACL */
> -#define OBD_MD_FLRMTPERM     (0x0000010000000000ULL) /* remote permission */
> +/*	OBD_MD_FLRMTPERM     (0x0000010000000000ULL) remote perm, obsolete */
> #define OBD_MD_FLMDSCAPA     (0x0000020000000000ULL) /* MDS capability */
> #define OBD_MD_FLOSSCAPA     (0x0000040000000000ULL) /* OSS capability */
> #define OBD_MD_FLCKSPLIT     (0x0000080000000000ULL) /* Check split on server */
> @@ -1711,10 +1719,10 @@ lov_mds_md_max_stripe_count(size_t buf_size, __u32 lmm_magic)
> 						      */
> #define OBD_MD_FLOBJCOUNT    (0x0000400000000000ULL) /* for multiple destroy */
> 
> -#define OBD_MD_FLRMTLSETFACL (0x0001000000000000ULL) /* lfs lsetfacl case */
> -#define OBD_MD_FLRMTLGETFACL (0x0002000000000000ULL) /* lfs lgetfacl case */
> -#define OBD_MD_FLRMTRSETFACL (0x0004000000000000ULL) /* lfs rsetfacl case */
> -#define OBD_MD_FLRMTRGETFACL (0x0008000000000000ULL) /* lfs rgetfacl case */
> +/*	OBD_MD_FLRMTLSETFACL (0x0001000000000000ULL) lfs lsetfacl, obsolete */
> +/*	OBD_MD_FLRMTLGETFACL (0x0002000000000000ULL) lfs lgetfacl, obsolete */
> +/*	OBD_MD_FLRMTRSETFACL (0x0004000000000000ULL) lfs rsetfacl, obsolete */
> +/*	OBD_MD_FLRMTRGETFACL (0x0008000000000000ULL) lfs rgetfacl, obsolete */
> 
> #define OBD_MD_FLDATAVERSION (0x0010000000000000ULL) /* iversion sum */
> #define OBD_MD_FLRELEASED    (0x0020000000000000ULL) /* file released */
> @@ -2155,26 +2163,8 @@ enum {
> 	CFS_SETUID_PERM = 0x01,
> 	CFS_SETGID_PERM = 0x02,
> 	CFS_SETGRP_PERM = 0x04,
> -	CFS_RMTACL_PERM = 0x08,
> -	CFS_RMTOWN_PERM = 0x10
> -};
> -
> -/* inode access permission for remote user, the inode info are omitted,
> - * for client knows them.
> - */
> -struct mdt_remote_perm {
> -	__u32	   rp_uid;
> -	__u32	   rp_gid;
> -	__u32	   rp_fsuid;
> -	__u32	   rp_fsuid_h;
> -	__u32	   rp_fsgid;
> -	__u32	   rp_fsgid_h;
> -	__u32	   rp_access_perm; /* MAY_READ/WRITE/EXEC */
> -	__u32	   rp_padding;
> };
> 
> -void lustre_swab_mdt_remote_perm(struct mdt_remote_perm *p);
> -
> struct mdt_rec_setattr {
> 	__u32	   sa_opcode;
> 	__u32	   sa_cap;
> diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
> index a6e351a..ef6f38f 100644
> --- a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
> +++ b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
> @@ -211,7 +211,7 @@ struct ost_id {
> #define IOC_OBD_STATFS		  _IOWR('f', 164, struct obd_statfs *)
> #define IOC_LOV_GETINFO		 _IOWR('f', 165, struct lov_user_mds_data *)
> #define LL_IOC_FLUSHCTX		 _IOW('f', 166, long)
> -#define LL_IOC_RMTACL		   _IOW('f', 167, long)
> +/* LL_IOC_RMTACL			167 obsolete */
> #define LL_IOC_GETOBDCOUNT	      _IOR('f', 168, long)
> #define LL_IOC_LLOOP_ATTACH	     _IOWR('f', 169, long)
> #define LL_IOC_LLOOP_DETACH	     _IOWR('f', 170, long)
> @@ -538,19 +538,6 @@ struct identity_downcall_data {
> 	__u32			    idd_groups[0];
> };
> 
> -/* for non-mapped uid/gid */
> -#define NOBODY_UID      99
> -#define NOBODY_GID      99
> -
> -#define INVALID_ID      (-1)
> -
> -enum {
> -	RMT_LSETFACL    = 1,
> -	RMT_LGETFACL    = 2,
> -	RMT_RSETFACL    = 3,
> -	RMT_RGETFACL    = 4
> -};
> -
> /* lustre volatile file support
>  * file name header: .^L^S^T^R:volatile"
>  */
> diff --git a/drivers/staging/lustre/lustre/include/lustre_eacl.h b/drivers/staging/lustre/lustre/include/lustre_eacl.h
> index e5eadc4..d1039e1 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_eacl.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_eacl.h
> @@ -66,17 +66,6 @@ typedef struct {
> #define CFS_ACL_XATTR_COUNT(size, prefix) \
> 	(((size) - sizeof(prefix ## _header)) / sizeof(prefix ## _entry))
> 
> -extern ext_acl_xattr_header *
> -lustre_posix_acl_xattr_2ext(posix_acl_xattr_header *header, int size);
> -extern int
> -lustre_posix_acl_xattr_filter(posix_acl_xattr_header *header, size_t size,
> -			      posix_acl_xattr_header **out);
> -extern void
> -lustre_ext_acl_xattr_free(ext_acl_xattr_header *header);
> -extern ext_acl_xattr_header *
> -lustre_acl_xattr_merge2ext(posix_acl_xattr_header *posix_header, int size,
> -			   ext_acl_xattr_header *ext_header);
> -
> #endif /* CONFIG_FS_POSIX_ACL */
> 
> /** @} eacl */
> diff --git a/drivers/staging/lustre/lustre/include/lustre_export.h b/drivers/staging/lustre/lustre/include/lustre_export.h
> index 7c3ed55..6e7cc46 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_export.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_export.h
> @@ -176,19 +176,6 @@ static inline int exp_connect_lru_resize(struct obd_export *exp)
> 	return !!(exp_connect_flags(exp) & OBD_CONNECT_LRU_RESIZE);
> }
> 
> -static inline int exp_connect_rmtclient(struct obd_export *exp)
> -{
> -	return !!(exp_connect_flags(exp) & OBD_CONNECT_RMT_CLIENT);
> -}
> -
> -static inline int client_is_remote(struct obd_export *exp)
> -{
> -	struct obd_import *imp = class_exp2cliimp(exp);
> -
> -	return !!(imp->imp_connect_data.ocd_connect_flags &
> -		  OBD_CONNECT_RMT_CLIENT);
> -}
> -
> static inline int exp_connect_vbr(struct obd_export *exp)
> {
> 	return !!(exp_connect_flags(exp) & OBD_CONNECT_VBR);
> diff --git a/drivers/staging/lustre/lustre/include/lustre_net.h b/drivers/staging/lustre/lustre/include/lustre_net.h
> index dba4d1d..bdd2ed5 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_net.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_net.h
> @@ -1384,7 +1384,6 @@ struct ptlrpc_request {
> 				 rq_bulk_write:1,    /* request bulk write */
> 				 /* server authentication flags */
> 				 rq_auth_gss:1,      /* authenticated by gss */
> -				 rq_auth_remote:1,   /* authed as remote user */
> 				 rq_auth_usr_root:1, /* authed as root */
> 				 rq_auth_usr_mdt:1,  /* authed as mdt */
> 				 rq_auth_usr_ost:1,  /* authed as ost */
> diff --git a/drivers/staging/lustre/lustre/include/lustre_req_layout.h b/drivers/staging/lustre/lustre/include/lustre_req_layout.h
> index d00aae5..544a43c 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_req_layout.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_req_layout.h
> @@ -160,7 +160,7 @@ extern struct req_format RQF_MDS_IS_SUBDIR;
> extern struct req_format RQF_MDS_DONE_WRITING;
> extern struct req_format RQF_MDS_REINT;
> extern struct req_format RQF_MDS_REINT_CREATE;
> -extern struct req_format RQF_MDS_REINT_CREATE_RMT_ACL;
> +extern struct req_format RQF_MDS_REINT_CREATE_ACL;
> extern struct req_format RQF_MDS_REINT_CREATE_SLAVE;
> extern struct req_format RQF_MDS_REINT_CREATE_SYM;
> extern struct req_format RQF_MDS_REINT_OPEN;
> diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
> index e654d42..9971ee5 100644
> --- a/drivers/staging/lustre/lustre/include/obd.h
> +++ b/drivers/staging/lustre/lustre/include/obd.h
> @@ -1115,9 +1115,6 @@ struct md_ops {
> 			     ldlm_policy_data_t *, enum ldlm_mode,
> 			     enum ldlm_cancel_flags flags, void *opaque);
> 
> -	int (*get_remote_perm)(struct obd_export *, const struct lu_fid *,
> -			       __u32, struct ptlrpc_request **);
> -
> 	int (*intent_getattr_async)(struct obd_export *,
> 				    struct md_enqueue_info *,
> 				    struct ldlm_enqueue_info *);
> diff --git a/drivers/staging/lustre/lustre/include/obd_class.h b/drivers/staging/lustre/lustre/include/obd_class.h
> index 2196744..6482a93 100644
> --- a/drivers/staging/lustre/lustre/include/obd_class.h
> +++ b/drivers/staging/lustre/lustre/include/obd_class.h
> @@ -1650,16 +1650,6 @@ static inline int md_init_ea_size(struct obd_export *exp, int easize,
> 					       cookiesize, def_cookiesize);
> }
> 
> -static inline int md_get_remote_perm(struct obd_export *exp,
> -				     const struct lu_fid *fid, __u32 suppgid,
> -				     struct ptlrpc_request **request)
> -{
> -	EXP_CHECK_MD_OP(exp, get_remote_perm);
> -	EXP_MD_COUNTER_INCREMENT(exp, get_remote_perm);
> -	return MDP(exp->exp_obd, get_remote_perm)(exp, fid, suppgid,
> -						  request);
> -}
> -
> static inline int md_intent_getattr_async(struct obd_export *exp,
> 					  struct md_enqueue_info *minfo,
> 					  struct ldlm_enqueue_info *einfo)
> diff --git a/drivers/staging/lustre/lustre/llite/Makefile b/drivers/staging/lustre/lustre/llite/Makefile
> index 19701e7..2cbb1b8 100644
> --- a/drivers/staging/lustre/lustre/llite/Makefile
> +++ b/drivers/staging/lustre/lustre/llite/Makefile
> @@ -1,8 +1,7 @@
> obj-$(CONFIG_LUSTRE_FS) += lustre.o
> lustre-y := dcache.o dir.o file.o llite_close.o llite_lib.o llite_nfs.o \
> 	    rw.o namei.o symlink.o llite_mmap.o \
> -	    xattr.o xattr_cache.o remote_perm.o llite_rmtacl.o \
> -	    rw26.o super25.o statahead.o \
> +	    xattr.o xattr_cache.o rw26.o super25.o statahead.o \
> 	    glimpse.o lcommon_cl.o lcommon_misc.o \
> 	    vvp_dev.o vvp_page.o vvp_lock.o vvp_io.o vvp_object.o vvp_req.o \
> 	    lproc_llite.o
> diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
> index 99735f6..2f2c57e 100644
> --- a/drivers/staging/lustre/lustre/llite/dir.c
> +++ b/drivers/staging/lustre/lustre/llite/dir.c
> @@ -1097,8 +1097,7 @@ static int quotactl_ioctl(struct ll_sb_info *sbi, struct if_quotactl *qctl)
> 	case Q_QUOTAOFF:
> 	case Q_SETQUOTA:
> 	case Q_SETINFO:
> -		if (!capable(CFS_CAP_SYS_ADMIN) ||
> -		    sbi->ll_flags & LL_SBI_RMT_CLIENT)
> +		if (!capable(CFS_CAP_SYS_ADMIN))
> 			return -EPERM;
> 		break;
> 	case Q_GETQUOTA:
> @@ -1106,8 +1105,7 @@ static int quotactl_ioctl(struct ll_sb_info *sbi, struct if_quotactl *qctl)
> 		      !uid_eq(current_euid(), make_kuid(&init_user_ns, id))) ||
> 		     (type == GRPQUOTA &&
> 		      !in_egroup_p(make_kgid(&init_user_ns, id)))) &&
> -		    (!capable(CFS_CAP_SYS_ADMIN) ||
> -		     sbi->ll_flags & LL_SBI_RMT_CLIENT))
> +		      !capable(CFS_CAP_SYS_ADMIN))
> 			return -EPERM;
> 		break;
> 	case Q_GETINFO:
> @@ -1118,9 +1116,6 @@ static int quotactl_ioctl(struct ll_sb_info *sbi, struct if_quotactl *qctl)
> 	}
> 
> 	if (valid != QC_GENERAL) {
> -		if (sbi->ll_flags & LL_SBI_RMT_CLIENT)
> -			return -EOPNOTSUPP;
> -
> 		if (cmd == Q_GETINFO)
> 			qctl->qc_cmd = Q_GETOINFO;
> 		else if (cmd == Q_GETQUOTA)
> @@ -1621,8 +1616,7 @@ free_lmm:
> 		struct obd_quotactl *oqctl;
> 		int error = 0;
> 
> -		if (!capable(CFS_CAP_SYS_ADMIN) ||
> -		    sbi->ll_flags & LL_SBI_RMT_CLIENT)
> +		if (!capable(CFS_CAP_SYS_ADMIN))
> 			return -EPERM;
> 
> 		oqctl = kzalloc(sizeof(*oqctl), GFP_NOFS);
> @@ -1645,8 +1639,7 @@ free_lmm:
> 	case OBD_IOC_POLL_QUOTACHECK: {
> 		struct if_quotacheck *check;
> 
> -		if (!capable(CFS_CAP_SYS_ADMIN) ||
> -		    sbi->ll_flags & LL_SBI_RMT_CLIENT)
> +		if (!capable(CFS_CAP_SYS_ADMIN))
> 			return -EPERM;
> 
> 		check = kzalloc(sizeof(*check), GFP_NOFS);
> @@ -1703,20 +1696,6 @@ out_quotactl:
> 		return ll_get_obd_name(inode, cmd, arg);
> 	case LL_IOC_FLUSHCTX:
> 		return ll_flush_ctx(inode);
> -#ifdef CONFIG_FS_POSIX_ACL
> -	case LL_IOC_RMTACL: {
> -		if (sbi->ll_flags & LL_SBI_RMT_CLIENT && is_root_inode(inode)) {
> -			struct ll_file_data *fd = LUSTRE_FPRIVATE(file);
> -
> -			rc = rct_add(&sbi->ll_rct, current_pid(), arg);
> -			if (!rc)
> -				fd->fd_flags |= LL_FILE_RMTACL;
> -			return rc;
> -		} else {
> -			return 0;
> -		}
> -	}
> -#endif
> 	case LL_IOC_GETOBDCOUNT: {
> 		int count, vallen;
> 		struct obd_export *exp;
> diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c
> index b0c4548..2d50d1c 100644
> --- a/drivers/staging/lustre/lustre/llite/file.c
> +++ b/drivers/staging/lustre/lustre/llite/file.c
> @@ -344,18 +344,6 @@ int ll_file_release(struct inode *inode, struct file *file)
> 	CDEBUG(D_VFSTRACE, "VFS Op:inode="DFID"(%p)\n",
> 	       PFID(ll_inode2fid(inode)), inode);
> 
> -#ifdef CONFIG_FS_POSIX_ACL
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT && is_root_inode(inode)) {
> -		struct ll_file_data *fd = LUSTRE_FPRIVATE(file);
> -
> -		if (unlikely(fd->fd_flags & LL_FILE_RMTACL)) {
> -			fd->fd_flags &= ~LL_FILE_RMTACL;
> -			rct_del(&sbi->ll_rct, current_pid());
> -			et_search_free(&sbi->ll_et, current_pid());
> -		}
> -	}
> -#endif
> -
> 	if (!is_root_inode(inode))
> 		ll_stats_ops_tally(sbi, LPROC_LL_RELEASE, 1);
> 	fd = LUSTRE_FPRIVATE(file);
> @@ -3156,9 +3144,6 @@ int ll_inode_permission(struct inode *inode, int mask)
> 	CDEBUG(D_VFSTRACE, "VFS Op:inode="DFID"(%p), inode mode %x mask %o\n",
> 	       PFID(ll_inode2fid(inode)), inode, inode->i_mode, mask);
> 
> -	if (ll_i2sbi(inode)->ll_flags & LL_SBI_RMT_CLIENT)
> -		return lustre_check_remote_perm(inode, mask);
> -
> 	ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_INODE_PERM, 1);
> 	rc = generic_permission(inode, mask);
> 
> diff --git a/drivers/staging/lustre/lustre/llite/llite_internal.h b/drivers/staging/lustre/lustre/llite/llite_internal.h
> index 7c1a325..8fe63bd 100644
> --- a/drivers/staging/lustre/lustre/llite/llite_internal.h
> +++ b/drivers/staging/lustre/lustre/llite/llite_internal.h
> @@ -72,9 +72,6 @@ struct ll_dentry_data {
> #define LLI_INODE_MAGIC		 0x111d0de5
> #define LLI_INODE_DEAD		  0xdeadd00d
> 
> -/* remote client permission cache */
> -#define REMOTE_PERM_HASHSIZE 16
> -
> struct ll_getname_data {
> 	struct dir_context ctx;
> 	char	    *lgd_name;      /* points to a buffer with NAME_MAX+1 size */
> @@ -82,19 +79,6 @@ struct ll_getname_data {
> 	int	      lgd_found;     /* inode matched? */
> };
> 
> -/* llite setxid/access permission for user on remote client */
> -struct ll_remote_perm {
> -	struct hlist_node	lrp_list;
> -	uid_t		   lrp_uid;
> -	gid_t		   lrp_gid;
> -	uid_t		   lrp_fsuid;
> -	gid_t		   lrp_fsgid;
> -	int		   lrp_access_perm; /* MAY_READ/WRITE/EXEC, this
> -					     * is access permission with
> -					     * lrp_fsuid/lrp_fsgid.
> -					     */
> -};
> -
> struct ll_grouplock {
> 	struct lu_env	*lg_env;
> 	struct cl_io	*lg_io;
> @@ -129,9 +113,6 @@ struct ll_inode_info {
> 	spinlock_t			lli_lock;
> 	struct posix_acl		*lli_posix_acl;
> 
> -	struct hlist_head		*lli_remote_perms;
> -	struct mutex				lli_rmtperm_mutex;
> -
> 	/* identifying fields for both metadata and data stacks. */
> 	struct lu_fid		   lli_fid;
> 	/* Parent fid for accessing default stripe data on parent directory
> @@ -141,8 +122,6 @@ struct ll_inode_info {
> 
> 	struct list_head	      lli_close_list;
> 
> -	unsigned long		      lli_rmtperm_time;
> -
> 	/* handle is to be sent to MDS later on done_writing and setattr.
> 	 * Open handle data are needed for the recovery to reconstruct
> 	 * the inode state on the MDS. XXX: recovery is not ready yet.
> @@ -407,7 +386,7 @@ enum stats_track_type {
> #define LL_SBI_FLOCK	     0x04
> #define LL_SBI_USER_XATTR	0x08 /* support user xattr */
> #define LL_SBI_ACL	       0x10 /* support ACL */
> -#define LL_SBI_RMT_CLIENT	0x40 /* remote client */
> +/* LL_SBI_RMT_CLIENT		 0x40	 remote client */
> #define LL_SBI_MDS_CAPA		 0x80 /* support mds capa, obsolete */
> #define LL_SBI_OSS_CAPA		0x100 /* support oss capa, obsolete */
> #define LL_SBI_LOCALFLOCK       0x200 /* Local flocks support by kernel */
> @@ -429,7 +408,7 @@ enum stats_track_type {
> 	"xattr",	\
> 	"acl",		\
> 	"???",		\
> -	"rmt_client",	\
> +	"???",		\
> 	"mds_capa",	\
> 	"oss_capa",	\
> 	"flock",	\
> @@ -445,26 +424,6 @@ enum stats_track_type {
> 	"xattr",	\
> }
> 
> -#define RCE_HASHES      32
> -
> -struct rmtacl_ctl_entry {
> -	struct list_head       rce_list;
> -	pid_t	    rce_key; /* hash key */
> -	int	      rce_ops; /* acl operation type */
> -};
> -
> -struct rmtacl_ctl_table {
> -	spinlock_t	rct_lock;
> -	struct list_head	rct_entries[RCE_HASHES];
> -};
> -
> -#define EE_HASHES       32
> -
> -struct eacl_table {
> -	spinlock_t	et_lock;
> -	struct list_head	et_entries[EE_HASHES];
> -};
> -
> struct ll_sb_info {
> 	/* this protects pglist and ra_info.  It isn't safe to
> 	 * grab from interrupt contexts
> @@ -529,8 +488,6 @@ struct ll_sb_info {
> 	dev_t			  ll_sdev_orig; /* save s_dev before assign for
> 						 * clustered nfs
> 						 */
> -	struct rmtacl_ctl_table   ll_rct;
> -	struct eacl_table	 ll_et;
> 	__kernel_fsid_t		  ll_fsid;
> 	struct kobject		 ll_kobj; /* sysfs object */
> 	struct super_block	*ll_sb; /* struct super_block (for sysfs code)*/
> @@ -982,14 +939,6 @@ ssize_t ll_getxattr(struct dentry *dentry, struct inode *inode,
> ssize_t ll_listxattr(struct dentry *dentry, char *buffer, size_t size);
> int ll_removexattr(struct dentry *dentry, const char *name);
> 
> -/* llite/remote_perm.c */
> -extern struct kmem_cache *ll_remote_perm_cachep;
> -extern struct kmem_cache *ll_rmtperm_hash_cachep;
> -
> -void free_rmtperm_hash(struct hlist_head *hash);
> -int ll_update_remote_perm(struct inode *inode, struct mdt_remote_perm *perm);
> -int lustre_check_remote_perm(struct inode *inode, int mask);
> -
> /**
>  * Common IO arguments for various VFS I/O interfaces.
>  */
> @@ -1003,40 +952,7 @@ void ras_update(struct ll_sb_info *sbi, struct inode *inode,
> void ll_ra_count_put(struct ll_sb_info *sbi, unsigned long len);
> void ll_ra_stats_inc(struct inode *inode, enum ra_stat which);
> 
> -/* llite/llite_rmtacl.c */
> -#ifdef CONFIG_FS_POSIX_ACL
> -struct eacl_entry {
> -	struct list_head	    ee_list;
> -	pid_t		 ee_key; /* hash key */
> -	struct lu_fid	 ee_fid;
> -	int		   ee_type; /* ACL type for ACCESS or DEFAULT */
> -	ext_acl_xattr_header *ee_acl;
> -};
> -
> -u64 rce_ops2valid(int ops);
> -struct rmtacl_ctl_entry *rct_search(struct rmtacl_ctl_table *rct, pid_t key);
> -int rct_add(struct rmtacl_ctl_table *rct, pid_t key, int ops);
> -int rct_del(struct rmtacl_ctl_table *rct, pid_t key);
> -void rct_init(struct rmtacl_ctl_table *rct);
> -void rct_fini(struct rmtacl_ctl_table *rct);
> -
> -void ee_free(struct eacl_entry *ee);
> -int ee_add(struct eacl_table *et, pid_t key, struct lu_fid *fid, int type,
> -	   ext_acl_xattr_header *header);
> -struct eacl_entry *et_search_del(struct eacl_table *et, pid_t key,
> -				 struct lu_fid *fid, int type);
> -void et_search_free(struct eacl_table *et, pid_t key);
> -void et_init(struct eacl_table *et);
> -void et_fini(struct eacl_table *et);
> -#else
> -static inline u64 rce_ops2valid(int ops)
> -{
> -	return 0;
> -}
> -#endif
> -
> /* statahead.c */
> -
> #define LL_SA_RPC_MIN	   2
> #define LL_SA_RPC_DEF	   32
> #define LL_SA_RPC_MAX	   8192
> diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
> index ac833db..ae6a571 100644
> --- a/drivers/staging/lustre/lustre/llite/llite_lib.c
> +++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
> @@ -171,8 +171,8 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 				  OBD_CONNECT_VERSION  | OBD_CONNECT_BRW_SIZE |
> 				  OBD_CONNECT_CANCELSET | OBD_CONNECT_FID     |
> 				  OBD_CONNECT_AT       | OBD_CONNECT_LOV_V3   |
> -				  OBD_CONNECT_RMT_CLIENT | OBD_CONNECT_VBR    |
> -				  OBD_CONNECT_FULL20   | OBD_CONNECT_64BITHASH|
> +				  OBD_CONNECT_VBR	| OBD_CONNECT_FULL20  |
> +				  OBD_CONNECT_64BITHASH |
> 				  OBD_CONNECT_EINPROGRESS |
> 				  OBD_CONNECT_JOBSTATS | OBD_CONNECT_LVB_TYPE |
> 				  OBD_CONNECT_LAYOUTLOCK |
> @@ -213,8 +213,6 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 
> 	/* real client */
> 	data->ocd_connect_flags |= OBD_CONNECT_REAL;
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT)
> -		data->ocd_connect_flags |= OBD_CONNECT_RMT_CLIENT_FORCE;
> 
> 	data->ocd_brw_size = MD_MAX_BRW_SIZE;
> 
> @@ -307,18 +305,6 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 		sbi->ll_flags &= ~LL_SBI_ACL;
> 	}
> 
> -	if (data->ocd_connect_flags & OBD_CONNECT_RMT_CLIENT) {
> -		if (!(sbi->ll_flags & LL_SBI_RMT_CLIENT)) {
> -			sbi->ll_flags |= LL_SBI_RMT_CLIENT;
> -			LCONSOLE_INFO("client is set as remote by default.\n");
> -		}
> -	} else {
> -		if (sbi->ll_flags & LL_SBI_RMT_CLIENT) {
> -			sbi->ll_flags &= ~LL_SBI_RMT_CLIENT;
> -			LCONSOLE_INFO("client claims to be remote, but server rejected, forced to be local.\n");
> -		}
> -	}
> -
> 	if (data->ocd_connect_flags & OBD_CONNECT_64BITHASH)
> 		sbi->ll_flags |= LL_SBI_64BIT_HASH;
> 
> @@ -352,10 +338,9 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 				  OBD_CONNECT_REQPORTAL | OBD_CONNECT_BRW_SIZE |
> 				  OBD_CONNECT_CANCELSET | OBD_CONNECT_FID      |
> 				  OBD_CONNECT_SRVLOCK   | OBD_CONNECT_TRUNCLOCK|
> -				  OBD_CONNECT_AT | OBD_CONNECT_RMT_CLIENT |
> -				  OBD_CONNECT_OSS_CAPA | OBD_CONNECT_VBR|
> -				  OBD_CONNECT_FULL20 | OBD_CONNECT_64BITHASH |
> -				  OBD_CONNECT_MAXBYTES |
> +				  OBD_CONNECT_AT	| OBD_CONNECT_OSS_CAPA |
> +				  OBD_CONNECT_VBR	| OBD_CONNECT_FULL20   |
> +				  OBD_CONNECT_64BITHASH | OBD_CONNECT_MAXBYTES |
> 				  OBD_CONNECT_EINPROGRESS |
> 				  OBD_CONNECT_JOBSTATS | OBD_CONNECT_LVB_TYPE |
> 				  OBD_CONNECT_LAYOUTLOCK | OBD_CONNECT_PINGLESS;
> @@ -378,8 +363,6 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 	}
> 
> 	data->ocd_connect_flags |= OBD_CONNECT_LRU_RESIZE;
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT)
> -		data->ocd_connect_flags |= OBD_CONNECT_RMT_CLIENT_FORCE;
> 
> 	CDEBUG(D_RPCTRACE, "ocd_connect_flags: %#llx ocd_version: %d ocd_grant: %d\n",
> 	       data->ocd_connect_flags,
> @@ -442,9 +425,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 	 * XXX: move this to after cbd setup?
> 	 */
> 	valid = OBD_MD_FLGETATTR | OBD_MD_FLBLOCKS | OBD_MD_FLMODEASIZE;
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT)
> -		valid |= OBD_MD_FLRMTPERM;
> -	else if (sbi->ll_flags & LL_SBI_ACL)
> +	if (sbi->ll_flags & LL_SBI_ACL)
> 		valid |= OBD_MD_FLACL;
> 
> 	op_data = kzalloc(sizeof(*op_data), GFP_NOFS);
> @@ -500,13 +481,6 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
> 		goto out_root;
> 	}
> 
> -#ifdef CONFIG_FS_POSIX_ACL
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT) {
> -		rct_init(&sbi->ll_rct);
> -		et_init(&sbi->ll_et);
> -	}
> -#endif
> -
> 	checksum = sbi->ll_flags & LL_SBI_CHECKSUM;
> 	err = obd_set_info_async(NULL, sbi->ll_dt_exp, sizeof(KEY_CHECKSUM),
> 				 KEY_CHECKSUM, sizeof(checksum), &checksum,
> @@ -604,13 +578,6 @@ static void client_common_put_super(struct super_block *sb)
> {
> 	struct ll_sb_info *sbi = ll_s2sbi(sb);
> 
> -#ifdef CONFIG_FS_POSIX_ACL
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT) {
> -		et_fini(&sbi->ll_et);
> -		rct_fini(&sbi->ll_rct);
> -	}
> -#endif
> -
> 	ll_close_thread_shutdown(sbi->ll_lcq);
> 
> 	cl_sb_fini(sb);
> @@ -700,11 +667,6 @@ static int ll_options(char *options, int *flags)
> 			*flags &= ~tmp;
> 			goto next;
> 		}
> -		tmp = ll_set_opt("remote_client", s1, LL_SBI_RMT_CLIENT);
> -		if (tmp) {
> -			*flags |= tmp;
> -			goto next;
> -		}
> 		tmp = ll_set_opt("user_fid2path", s1, LL_SBI_USER_FID2PATH);
> 		if (tmp) {
> 			*flags |= tmp;
> @@ -788,12 +750,9 @@ void ll_lli_init(struct ll_inode_info *lli)
> 	lli->lli_maxbytes = MAX_LFS_FILESIZE;
> 	spin_lock_init(&lli->lli_lock);
> 	lli->lli_posix_acl = NULL;
> -	lli->lli_remote_perms = NULL;
> -	mutex_init(&lli->lli_rmtperm_mutex);
> 	/* Do not set lli_fid, it has been initialized already. */
> 	fid_zero(&lli->lli_pfid);
> 	INIT_LIST_HEAD(&lli->lli_close_list);
> -	lli->lli_rmtperm_time = 0;
> 	lli->lli_pending_och = NULL;
> 	lli->lli_mds_read_och = NULL;
> 	lli->lli_mds_write_och = NULL;
> @@ -1075,17 +1034,9 @@ void ll_clear_inode(struct inode *inode)
> 
> 	ll_xattr_cache_destroy(inode);
> 
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT) {
> -		LASSERT(!lli->lli_posix_acl);
> -		if (lli->lli_remote_perms) {
> -			free_rmtperm_hash(lli->lli_remote_perms);
> -			lli->lli_remote_perms = NULL;
> -		}
> -	}
> #ifdef CONFIG_FS_POSIX_ACL
> -	else if (lli->lli_posix_acl) {
> +	if (lli->lli_posix_acl) {
> 		LASSERT(atomic_read(&lli->lli_posix_acl->a_refcount) == 1);
> -		LASSERT(!lli->lli_remote_perms);
> 		posix_acl_release(lli->lli_posix_acl);
> 		lli->lli_posix_acl = NULL;
> 	}
> @@ -1537,12 +1488,8 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md)
> 			lli->lli_maxbytes = MAX_LFS_FILESIZE;
> 	}
> 
> -	if (sbi->ll_flags & LL_SBI_RMT_CLIENT) {
> -		if (body->valid & OBD_MD_FLRMTPERM)
> -			ll_update_remote_perm(inode, md->remote_perm);
> -	}
> #ifdef CONFIG_FS_POSIX_ACL
> -	else if (body->valid & OBD_MD_FLACL) {
> +	if (body->valid & OBD_MD_FLACL) {
> 		spin_lock(&lli->lli_lock);
> 		if (lli->lli_posix_acl)
> 			posix_acl_release(lli->lli_posix_acl);
> diff --git a/drivers/staging/lustre/lustre/llite/llite_rmtacl.c b/drivers/staging/lustre/lustre/llite/llite_rmtacl.c
> deleted file mode 100644
> index edb92f9..0000000
> --- a/drivers/staging/lustre/lustre/llite/llite_rmtacl.c
> +++ /dev/null
> @@ -1,295 +0,0 @@
> -/*
> - * GPL HEADER START
> - *
> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 only,
> - * as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> - * General Public License version 2 for more details (a copy is included
> - * in the LICENSE file that accompanied this code).
> - *
> - * You should have received a copy of the GNU General Public License
> - * version 2 along with this program; If not, see
> - * http://www.gnu.org/licenses/gpl-2.0.html
> - *
> - * GPL HEADER END
> - */
> -/*
> - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
> - * Use is subject to license terms.
> - *
> - * Copyright (c) 2012, Intel Corporation.
> - */
> -/*
> - * This file is part of Lustre, http://www.lustre.org/
> - * Lustre is a trademark of Sun Microsystems, Inc.
> - *
> - * lustre/llite/llite_rmtacl.c
> - *
> - * Lustre Remote User Access Control List.
> - *
> - * Author: Fan Yong <fanyong at clusterfs.com>
> - */
> -
> -#define DEBUG_SUBSYSTEM S_LLITE
> -
> -#ifdef CONFIG_FS_POSIX_ACL
> -
> -#include "../include/lustre_lite.h"
> -#include "../include/lustre_eacl.h"
> -#include "llite_internal.h"
> -
> -static inline __u32 rce_hashfunc(uid_t id)
> -{
> -	return id & (RCE_HASHES - 1);
> -}
> -
> -static inline __u32 ee_hashfunc(uid_t id)
> -{
> -	return id & (EE_HASHES - 1);
> -}
> -
> -u64 rce_ops2valid(int ops)
> -{
> -	switch (ops) {
> -	case RMT_LSETFACL:
> -		return OBD_MD_FLRMTLSETFACL;
> -	case RMT_LGETFACL:
> -		return OBD_MD_FLRMTLGETFACL;
> -	case RMT_RSETFACL:
> -		return OBD_MD_FLRMTRSETFACL;
> -	case RMT_RGETFACL:
> -		return OBD_MD_FLRMTRGETFACL;
> -	default:
> -		return 0;
> -	}
> -}
> -
> -static struct rmtacl_ctl_entry *rce_alloc(pid_t key, int ops)
> -{
> -	struct rmtacl_ctl_entry *rce;
> -
> -	rce = kzalloc(sizeof(*rce), GFP_NOFS);
> -	if (!rce)
> -		return NULL;
> -
> -	INIT_LIST_HEAD(&rce->rce_list);
> -	rce->rce_key = key;
> -	rce->rce_ops = ops;
> -
> -	return rce;
> -}
> -
> -static void rce_free(struct rmtacl_ctl_entry *rce)
> -{
> -	if (!list_empty(&rce->rce_list))
> -		list_del(&rce->rce_list);
> -
> -	kfree(rce);
> -}
> -
> -static struct rmtacl_ctl_entry *__rct_search(struct rmtacl_ctl_table *rct,
> -					     pid_t key)
> -{
> -	struct rmtacl_ctl_entry *rce;
> -	struct list_head *head = &rct->rct_entries[rce_hashfunc(key)];
> -
> -	list_for_each_entry(rce, head, rce_list)
> -		if (rce->rce_key == key)
> -			return rce;
> -
> -	return NULL;
> -}
> -
> -struct rmtacl_ctl_entry *rct_search(struct rmtacl_ctl_table *rct, pid_t key)
> -{
> -	struct rmtacl_ctl_entry *rce;
> -
> -	spin_lock(&rct->rct_lock);
> -	rce = __rct_search(rct, key);
> -	spin_unlock(&rct->rct_lock);
> -	return rce;
> -}
> -
> -int rct_add(struct rmtacl_ctl_table *rct, pid_t key, int ops)
> -{
> -	struct rmtacl_ctl_entry *rce, *e;
> -
> -	rce = rce_alloc(key, ops);
> -	if (!rce)
> -		return -ENOMEM;
> -
> -	spin_lock(&rct->rct_lock);
> -	e = __rct_search(rct, key);
> -	if (unlikely(e)) {
> -		CWARN("Unexpected stale rmtacl_entry found: [key: %d] [ops: %d]\n",
> -		      (int)key, ops);
> -		rce_free(e);
> -	}
> -	list_add_tail(&rce->rce_list, &rct->rct_entries[rce_hashfunc(key)]);
> -	spin_unlock(&rct->rct_lock);
> -
> -	return 0;
> -}
> -
> -int rct_del(struct rmtacl_ctl_table *rct, pid_t key)
> -{
> -	struct rmtacl_ctl_entry *rce;
> -
> -	spin_lock(&rct->rct_lock);
> -	rce = __rct_search(rct, key);
> -	if (rce)
> -		rce_free(rce);
> -	spin_unlock(&rct->rct_lock);
> -
> -	return rce ? 0 : -ENOENT;
> -}
> -
> -void rct_init(struct rmtacl_ctl_table *rct)
> -{
> -	int i;
> -
> -	spin_lock_init(&rct->rct_lock);
> -	for (i = 0; i < RCE_HASHES; i++)
> -		INIT_LIST_HEAD(&rct->rct_entries[i]);
> -}
> -
> -void rct_fini(struct rmtacl_ctl_table *rct)
> -{
> -	struct rmtacl_ctl_entry *rce;
> -	int i;
> -
> -	spin_lock(&rct->rct_lock);
> -	for (i = 0; i < RCE_HASHES; i++)
> -		while (!list_empty(&rct->rct_entries[i])) {
> -			rce = list_entry(rct->rct_entries[i].next,
> -					 struct rmtacl_ctl_entry, rce_list);
> -			rce_free(rce);
> -		}
> -	spin_unlock(&rct->rct_lock);
> -}
> -
> -static struct eacl_entry *ee_alloc(pid_t key, struct lu_fid *fid, int type,
> -				   ext_acl_xattr_header *header)
> -{
> -	struct eacl_entry *ee;
> -
> -	ee = kzalloc(sizeof(*ee), GFP_NOFS);
> -	if (!ee)
> -		return NULL;
> -
> -	INIT_LIST_HEAD(&ee->ee_list);
> -	ee->ee_key = key;
> -	ee->ee_fid = *fid;
> -	ee->ee_type = type;
> -	ee->ee_acl = header;
> -
> -	return ee;
> -}
> -
> -void ee_free(struct eacl_entry *ee)
> -{
> -	if (!list_empty(&ee->ee_list))
> -		list_del(&ee->ee_list);
> -
> -	if (ee->ee_acl)
> -		lustre_ext_acl_xattr_free(ee->ee_acl);
> -
> -	kfree(ee);
> -}
> -
> -static struct eacl_entry *__et_search_del(struct eacl_table *et, pid_t key,
> -					  struct lu_fid *fid, int type)
> -{
> -	struct eacl_entry *ee;
> -	struct list_head *head = &et->et_entries[ee_hashfunc(key)];
> -
> -	LASSERT(fid);
> -	list_for_each_entry(ee, head, ee_list)
> -		if (ee->ee_key == key) {
> -			if (lu_fid_eq(&ee->ee_fid, fid) &&
> -			    ee->ee_type == type) {
> -				list_del_init(&ee->ee_list);
> -				return ee;
> -			}
> -		}
> -
> -	return NULL;
> -}
> -
> -struct eacl_entry *et_search_del(struct eacl_table *et, pid_t key,
> -				 struct lu_fid *fid, int type)
> -{
> -	struct eacl_entry *ee;
> -
> -	spin_lock(&et->et_lock);
> -	ee = __et_search_del(et, key, fid, type);
> -	spin_unlock(&et->et_lock);
> -	return ee;
> -}
> -
> -void et_search_free(struct eacl_table *et, pid_t key)
> -{
> -	struct eacl_entry *ee, *next;
> -	struct list_head *head = &et->et_entries[ee_hashfunc(key)];
> -
> -	spin_lock(&et->et_lock);
> -	list_for_each_entry_safe(ee, next, head, ee_list)
> -		if (ee->ee_key == key)
> -			ee_free(ee);
> -
> -	spin_unlock(&et->et_lock);
> -}
> -
> -int ee_add(struct eacl_table *et, pid_t key, struct lu_fid *fid, int type,
> -	   ext_acl_xattr_header *header)
> -{
> -	struct eacl_entry *ee, *e;
> -
> -	ee = ee_alloc(key, fid, type, header);
> -	if (!ee)
> -		return -ENOMEM;
> -
> -	spin_lock(&et->et_lock);
> -	e = __et_search_del(et, key, fid, type);
> -	if (unlikely(e)) {
> -		CWARN("Unexpected stale eacl_entry found: [key: %d] [fid: " DFID "] [type: %d]\n",
> -		      (int)key, PFID(fid), type);
> -		ee_free(e);
> -	}
> -	list_add_tail(&ee->ee_list, &et->et_entries[ee_hashfunc(key)]);
> -	spin_unlock(&et->et_lock);
> -
> -	return 0;
> -}
> -
> -void et_init(struct eacl_table *et)
> -{
> -	int i;
> -
> -	spin_lock_init(&et->et_lock);
> -	for (i = 0; i < EE_HASHES; i++)
> -		INIT_LIST_HEAD(&et->et_entries[i]);
> -}
> -
> -void et_fini(struct eacl_table *et)
> -{
> -	struct eacl_entry *ee;
> -	int i;
> -
> -	spin_lock(&et->et_lock);
> -	for (i = 0; i < EE_HASHES; i++)
> -		while (!list_empty(&et->et_entries[i])) {
> -			ee = list_entry(et->et_entries[i].next,
> -					struct eacl_entry, ee_list);
> -			ee_free(ee);
> -		}
> -	spin_unlock(&et->et_lock);
> -}
> -
> -#endif
> diff --git a/drivers/staging/lustre/lustre/llite/lproc_llite.c b/drivers/staging/lustre/lustre/llite/lproc_llite.c
> index 6e9a8a5..18a7775 100644
> --- a/drivers/staging/lustre/lustre/llite/lproc_llite.c
> +++ b/drivers/staging/lustre/lustre/llite/lproc_llite.c
> @@ -176,11 +176,7 @@ LUSTRE_RO_ATTR(filesfree);
> static ssize_t client_type_show(struct kobject *kobj, struct attribute *attr,
> 				char *buf)
> {
> -	struct ll_sb_info *sbi = container_of(kobj, struct ll_sb_info,
> -					      ll_kobj);
> -
> -	return sprintf(buf, "%s client\n",
> -			sbi->ll_flags & LL_SBI_RMT_CLIENT ? "remote" : "local");
> +	return sprintf(buf, "local client\n");
> }
> LUSTRE_RO_ATTR(client_type);
> 
> diff --git a/drivers/staging/lustre/lustre/llite/remote_perm.c b/drivers/staging/lustre/lustre/llite/remote_perm.c
> deleted file mode 100644
> index 9df9e78..0000000
> --- a/drivers/staging/lustre/lustre/llite/remote_perm.c
> +++ /dev/null
> @@ -1,320 +0,0 @@
> -/*
> - * GPL HEADER START
> - *
> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 only,
> - * as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> - * General Public License version 2 for more details (a copy is included
> - * in the LICENSE file that accompanied this code).
> - *
> - * You should have received a copy of the GNU General Public License
> - * version 2 along with this program; If not, see
> - * http://www.gnu.org/licenses/gpl-2.0.html
> - *
> - * GPL HEADER END
> - */
> -/*
> - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
> - * Use is subject to license terms.
> - *
> - * Copyright (c) 2011, 2012, Intel Corporation.
> - */
> -/*
> - * This file is part of Lustre, http://www.lustre.org/
> - * Lustre is a trademark of Sun Microsystems, Inc.
> - *
> - * lustre/llite/remote_perm.c
> - *
> - * Lustre Permission Cache for Remote Client
> - *
> - * Author: Lai Siyao <lsy at clusterfs.com>
> - * Author: Fan Yong <fanyong at clusterfs.com>
> - */
> -
> -#define DEBUG_SUBSYSTEM S_LLITE
> -
> -#include <linux/module.h>
> -#include <linux/types.h>
> -
> -#include "../include/lustre_lite.h"
> -#include "../include/lustre_ha.h"
> -#include "../include/lustre_dlm.h"
> -#include "../include/lprocfs_status.h"
> -#include "../include/lustre_disk.h"
> -#include "../include/lustre_param.h"
> -#include "llite_internal.h"
> -
> -struct kmem_cache *ll_remote_perm_cachep;
> -struct kmem_cache *ll_rmtperm_hash_cachep;
> -
> -static inline struct ll_remote_perm *alloc_ll_remote_perm(void)
> -{
> -	struct ll_remote_perm *lrp;
> -
> -	lrp = kmem_cache_zalloc(ll_remote_perm_cachep, GFP_KERNEL);
> -	if (lrp)
> -		INIT_HLIST_NODE(&lrp->lrp_list);
> -	return lrp;
> -}
> -
> -static inline void free_ll_remote_perm(struct ll_remote_perm *lrp)
> -{
> -	if (!lrp)
> -		return;
> -
> -	if (!hlist_unhashed(&lrp->lrp_list))
> -		hlist_del(&lrp->lrp_list);
> -	kmem_cache_free(ll_remote_perm_cachep, lrp);
> -}
> -
> -static struct hlist_head *alloc_rmtperm_hash(void)
> -{
> -	struct hlist_head *hash;
> -	int i;
> -
> -	hash = kmem_cache_zalloc(ll_rmtperm_hash_cachep, GFP_NOFS);
> -	if (!hash)
> -		return NULL;
> -
> -	for (i = 0; i < REMOTE_PERM_HASHSIZE; i++)
> -		INIT_HLIST_HEAD(hash + i);
> -
> -	return hash;
> -}
> -
> -void free_rmtperm_hash(struct hlist_head *hash)
> -{
> -	int i;
> -	struct ll_remote_perm *lrp;
> -	struct hlist_node *next;
> -
> -	if (!hash)
> -		return;
> -
> -	for (i = 0; i < REMOTE_PERM_HASHSIZE; i++)
> -		hlist_for_each_entry_safe(lrp, next, hash + i, lrp_list)
> -			free_ll_remote_perm(lrp);
> -	kmem_cache_free(ll_rmtperm_hash_cachep, hash);
> -}
> -
> -static inline int remote_perm_hashfunc(uid_t uid)
> -{
> -	return uid & (REMOTE_PERM_HASHSIZE - 1);
> -}
> -
> -/* NB: setxid permission is not checked here, instead it's done on
> - * MDT when client get remote permission.
> - */
> -static int do_check_remote_perm(struct ll_inode_info *lli, int mask)
> -{
> -	struct hlist_head *head;
> -	struct ll_remote_perm *lrp;
> -	int found = 0, rc;
> -
> -	if (!lli->lli_remote_perms)
> -		return -ENOENT;
> -
> -	head = lli->lli_remote_perms +
> -		remote_perm_hashfunc(from_kuid(&init_user_ns, current_uid()));
> -
> -	spin_lock(&lli->lli_lock);
> -	hlist_for_each_entry(lrp, head, lrp_list) {
> -		if (lrp->lrp_uid != from_kuid(&init_user_ns, current_uid()))
> -			continue;
> -		if (lrp->lrp_gid != from_kgid(&init_user_ns, current_gid()))
> -			continue;
> -		if (lrp->lrp_fsuid != from_kuid(&init_user_ns, current_fsuid()))
> -			continue;
> -		if (lrp->lrp_fsgid != from_kgid(&init_user_ns, current_fsgid()))
> -			continue;
> -		found = 1;
> -		break;
> -	}
> -
> -	if (!found) {
> -		rc = -ENOENT;
> -		goto out;
> -	}
> -
> -	CDEBUG(D_SEC, "found remote perm: %u/%u/%u/%u - %#x\n",
> -	       lrp->lrp_uid, lrp->lrp_gid, lrp->lrp_fsuid, lrp->lrp_fsgid,
> -	       lrp->lrp_access_perm);
> -	rc = ((lrp->lrp_access_perm & mask) == mask) ? 0 : -EACCES;
> -
> -out:
> -	spin_unlock(&lli->lli_lock);
> -	return rc;
> -}
> -
> -int ll_update_remote_perm(struct inode *inode, struct mdt_remote_perm *perm)
> -{
> -	struct ll_inode_info *lli = ll_i2info(inode);
> -	struct ll_remote_perm *lrp = NULL, *tmp = NULL;
> -	struct hlist_head *head, *perm_hash = NULL;
> -
> -	LASSERT(ll_i2sbi(inode)->ll_flags & LL_SBI_RMT_CLIENT);
> -
> -#if 0
> -	if (perm->rp_uid != current->uid ||
> -	    perm->rp_gid != current->gid ||
> -	    perm->rp_fsuid != current->fsuid ||
> -	    perm->rp_fsgid != current->fsgid) {
> -		/* user might setxid in this small period */
> -		CDEBUG(D_SEC,
> -		       "remote perm user %u/%u/%u/%u != current %u/%u/%u/%u\n",
> -		       perm->rp_uid, perm->rp_gid, perm->rp_fsuid,
> -		       perm->rp_fsgid, current->uid, current->gid,
> -		       current->fsuid, current->fsgid);
> -		return -EAGAIN;
> -	}
> -#endif
> -
> -	if (!lli->lli_remote_perms) {
> -		perm_hash = alloc_rmtperm_hash();
> -		if (!perm_hash) {
> -			CERROR("alloc lli_remote_perms failed!\n");
> -			return -ENOMEM;
> -		}
> -	}
> -
> -	spin_lock(&lli->lli_lock);
> -
> -	if (!lli->lli_remote_perms)
> -		lli->lli_remote_perms = perm_hash;
> -	else
> -		free_rmtperm_hash(perm_hash);
> -
> -	head = lli->lli_remote_perms + remote_perm_hashfunc(perm->rp_uid);
> -
> -again:
> -	hlist_for_each_entry(tmp, head, lrp_list) {
> -		if (tmp->lrp_uid != perm->rp_uid)
> -			continue;
> -		if (tmp->lrp_gid != perm->rp_gid)
> -			continue;
> -		if (tmp->lrp_fsuid != perm->rp_fsuid)
> -			continue;
> -		if (tmp->lrp_fsgid != perm->rp_fsgid)
> -			continue;
> -		free_ll_remote_perm(lrp);
> -		lrp = tmp;
> -		break;
> -	}
> -
> -	if (!lrp) {
> -		spin_unlock(&lli->lli_lock);
> -		lrp = alloc_ll_remote_perm();
> -		if (!lrp) {
> -			CERROR("alloc memory for ll_remote_perm failed!\n");
> -			return -ENOMEM;
> -		}
> -		spin_lock(&lli->lli_lock);
> -		goto again;
> -	}
> -
> -	lrp->lrp_access_perm = perm->rp_access_perm;
> -	if (lrp != tmp) {
> -		lrp->lrp_uid	 = perm->rp_uid;
> -		lrp->lrp_gid	 = perm->rp_gid;
> -		lrp->lrp_fsuid       = perm->rp_fsuid;
> -		lrp->lrp_fsgid       = perm->rp_fsgid;
> -		hlist_add_head(&lrp->lrp_list, head);
> -	}
> -	lli->lli_rmtperm_time = cfs_time_current();
> -	spin_unlock(&lli->lli_lock);
> -
> -	CDEBUG(D_SEC, "new remote perm@%p: %u/%u/%u/%u - %#x\n",
> -	       lrp, lrp->lrp_uid, lrp->lrp_gid, lrp->lrp_fsuid, lrp->lrp_fsgid,
> -	       lrp->lrp_access_perm);
> -
> -	return 0;
> -}
> -
> -int lustre_check_remote_perm(struct inode *inode, int mask)
> -{
> -	struct ll_inode_info *lli = ll_i2info(inode);
> -	struct ll_sb_info *sbi = ll_i2sbi(inode);
> -	struct ptlrpc_request *req = NULL;
> -	struct mdt_remote_perm *perm;
> -	unsigned long save;
> -	int i = 0, rc;
> -
> -	do {
> -		save = lli->lli_rmtperm_time;
> -		rc = do_check_remote_perm(lli, mask);
> -		if (!rc || (rc != -ENOENT && i))
> -			break;
> -
> -		might_sleep();
> -
> -		mutex_lock(&lli->lli_rmtperm_mutex);
> -		/* check again */
> -		if (save != lli->lli_rmtperm_time) {
> -			rc = do_check_remote_perm(lli, mask);
> -			if (!rc || (rc != -ENOENT && i)) {
> -				mutex_unlock(&lli->lli_rmtperm_mutex);
> -				break;
> -			}
> -		}
> -
> -		if (i++ > 5) {
> -			CERROR("check remote perm falls in dead loop!\n");
> -			LBUG();
> -		}
> -
> -		rc = md_get_remote_perm(sbi->ll_md_exp, ll_inode2fid(inode),
> -					ll_i2suppgid(inode), &req);
> -		if (rc) {
> -			mutex_unlock(&lli->lli_rmtperm_mutex);
> -			break;
> -		}
> -
> -		perm = req_capsule_server_swab_get(&req->rq_pill, &RMF_ACL,
> -						   lustre_swab_mdt_remote_perm);
> -		if (unlikely(!perm)) {
> -			mutex_unlock(&lli->lli_rmtperm_mutex);
> -			rc = -EPROTO;
> -			break;
> -		}
> -
> -		rc = ll_update_remote_perm(inode, perm);
> -		mutex_unlock(&lli->lli_rmtperm_mutex);
> -		if (rc == -ENOMEM)
> -			break;
> -
> -		ptlrpc_req_finished(req);
> -		req = NULL;
> -	} while (1);
> -	ptlrpc_req_finished(req);
> -	return rc;
> -}
> -
> -#if 0  /* NB: remote perms can't be freed in ll_mdc_blocking_ast of UPDATE lock,
> -	* because it will fail sanity test 48.
> -	*/
> -void ll_free_remote_perms(struct inode *inode)
> -{
> -	struct ll_inode_info *lli = ll_i2info(inode);
> -	struct hlist_head *hash = lli->lli_remote_perms;
> -	struct ll_remote_perm *lrp;
> -	struct hlist_node *node, *next;
> -	int i;
> -
> -	LASSERT(hash);
> -
> -	spin_lock(&lli->lli_lock);
> -
> -	for (i = 0; i < REMOTE_PERM_HASHSIZE; i++) {
> -		hlist_for_each_entry_safe(lrp, node, next, hash + i, lrp_list)
> -			free_ll_remote_perm(lrp);
> -	}
> -
> -	spin_unlock(&lli->lli_lock);
> -}
> -#endif
> diff --git a/drivers/staging/lustre/lustre/llite/super25.c b/drivers/staging/lustre/lustre/llite/super25.c
> index b40ea79..3dd7e0e 100644
> --- a/drivers/staging/lustre/lustre/llite/super25.c
> +++ b/drivers/staging/lustre/lustre/llite/super25.c
> @@ -114,19 +114,6 @@ static int __init lustre_init(void)
> 	if (!ll_file_data_slab)
> 		goto out_cache;
> 
> -	ll_remote_perm_cachep = kmem_cache_create("ll_remote_perm_cache",
> -						  sizeof(struct ll_remote_perm),
> -						      0, 0, NULL);
> -	if (!ll_remote_perm_cachep)
> -		goto out_cache;
> -
> -	ll_rmtperm_hash_cachep = kmem_cache_create("ll_rmtperm_hash_cache",
> -						   REMOTE_PERM_HASHSIZE *
> -						   sizeof(struct list_head),
> -						   0, 0, NULL);
> -	if (!ll_rmtperm_hash_cachep)
> -		goto out_cache;
> -
> 	llite_root = debugfs_create_dir("llite", debugfs_lustre_root);
> 	if (IS_ERR_OR_NULL(llite_root)) {
> 		rc = llite_root ? PTR_ERR(llite_root) : -ENOMEM;
> @@ -190,8 +177,6 @@ out_debugfs:
> out_cache:
> 	kmem_cache_destroy(ll_inode_cachep);
> 	kmem_cache_destroy(ll_file_data_slab);
> -	kmem_cache_destroy(ll_remote_perm_cachep);
> -	kmem_cache_destroy(ll_rmtperm_hash_cachep);
> 	return rc;
> }
> 
> @@ -209,10 +194,6 @@ static void __exit lustre_exit(void)
> 	vvp_global_fini();
> 
> 	kmem_cache_destroy(ll_inode_cachep);
> -	kmem_cache_destroy(ll_rmtperm_hash_cachep);
> -
> -	kmem_cache_destroy(ll_remote_perm_cachep);
> -
> 	kmem_cache_destroy(ll_file_data_slab);
> }
> 
> diff --git a/drivers/staging/lustre/lustre/llite/xattr.c b/drivers/staging/lustre/lustre/llite/xattr.c
> index 6ce790e..98303cf 100644
> --- a/drivers/staging/lustre/lustre/llite/xattr.c
> +++ b/drivers/staging/lustre/lustre/llite/xattr.c
> @@ -107,11 +107,6 @@ int ll_setxattr_common(struct inode *inode, const char *name,
> 	struct ll_sb_info *sbi = ll_i2sbi(inode);
> 	struct ptlrpc_request *req = NULL;
> 	int xattr_type, rc;
> -#ifdef CONFIG_FS_POSIX_ACL
> -	struct rmtacl_ctl_entry *rce = NULL;
> -	posix_acl_xattr_header *new_value = NULL;
> -	ext_acl_xattr_header *acl = NULL;
> -#endif
> 	const char *pv = value;
> 
> 	xattr_type = get_xattr_type(name);
> @@ -139,62 +134,9 @@ int ll_setxattr_common(struct inode *inode, const char *name,
> 	    strcmp(name, "security.selinux") == 0)
> 		return -EOPNOTSUPP;
> 
> -#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 ||
> -		    (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);
> -			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) {
> -			rc = lustre_posix_acl_xattr_filter(
> -						(posix_acl_xattr_header *)value,
> -						size, &new_value);
> -			if (unlikely(rc < 0))
> -				return rc;
> -			size = rc;
> -
> -			pv = (const char *)new_value;
> -		} else {
> -			return -EOPNOTSUPP;
> -		}
> -
> -		valid |= rce_ops2valid(rce->rce_ops);
> -	}
> -#endif
> 	rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode),
> 			 valid, name, pv, size, 0, flags,
> 			 ll_i2suppgid(inode), &req);
> -#ifdef CONFIG_FS_POSIX_ACL
> -	/*
> -	 * Release the posix ACL space.
> -	 */
> -	kfree(new_value);
> -	if (acl)
> -		lustre_ext_acl_xattr_free(acl);
> -#endif
> 	if (rc) {
> 		if (rc == -EOPNOTSUPP && xattr_type == XATTR_USER_T) {
> 			LCONSOLE_INFO("Disabling user_xattr feature because it is not supported on the server\n");
> @@ -284,7 +226,6 @@ int ll_getxattr_common(struct inode *inode, const char *name,
> 	struct mdt_body *body;
> 	int xattr_type, rc;
> 	void *xdata;
> -	struct rmtacl_ctl_entry *rce = NULL;
> 	struct ll_inode_info *lli = ll_i2info(inode);
> 
> 	CDEBUG(D_VFSTRACE, "VFS Op:inode="DFID"(%p)\n",
> @@ -315,24 +256,11 @@ int ll_getxattr_common(struct inode *inode, const char *name,
> 		return -EOPNOTSUPP;
> 
> #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 ||
> -		    (rce->rce_ops != RMT_LSETFACL &&
> -		    rce->rce_ops != RMT_LGETFACL &&
> -		    rce->rce_ops != RMT_RSETFACL &&
> -		    rce->rce_ops != RMT_RGETFACL))
> -			return -EOPNOTSUPP;
> -	}
> -
> 	/* posix acl is under protection of LOOKUP lock. when calling to this,
> 	 * we just have path resolution to the target inode, so we have great
> 	 * chance that cached ACL is uptodate.
> 	 */
> -	if (xattr_type == XATTR_ACL_ACCESS_T &&
> -	    !(sbi->ll_flags & LL_SBI_RMT_CLIENT)) {
> +	if (xattr_type == XATTR_ACL_ACCESS_T) {
> 		struct posix_acl *acl;
> 
> 		spin_lock(&lli->lli_lock);
> @@ -374,9 +302,7 @@ do_getxattr:
> 	} else {
> getxattr_nocache:
> 		rc = md_getxattr(sbi->ll_md_exp, ll_inode2fid(inode),
> -				valid | (rce ? rce_ops2valid(rce->rce_ops) : 0),
> -				name, NULL, 0, size, 0, &req);
> -
> +				 valid, name, NULL, 0, size, 0, &req);
> 		if (rc < 0)
> 			goto out_xattr;
> 
> @@ -413,25 +339,6 @@ getxattr_nocache:
> 		rc = body->eadatasize;
> 	}
> 
> -#ifdef CONFIG_FS_POSIX_ACL
> -	if (rce && rce->rce_ops == RMT_LSETFACL) {
> -		ext_acl_xattr_header *acl;
> -
> -		acl = lustre_posix_acl_xattr_2ext(buffer, rc);
> -		if (IS_ERR(acl)) {
> -			rc = PTR_ERR(acl);
> -			goto out;
> -		}
> -
> -		rc = ee_add(&sbi->ll_et, current_pid(), ll_inode2fid(inode),
> -			    xattr_type, acl);
> -		if (unlikely(rc < 0)) {
> -			lustre_ext_acl_xattr_free(acl);
> -			goto out;
> -		}
> -	}
> -#endif
> -
> out_xattr:
> 	if (rc == -EOPNOTSUPP && xattr_type == XATTR_USER_T) {
> 		LCONSOLE_INFO(
> diff --git a/drivers/staging/lustre/lustre/lmv/lmv_obd.c b/drivers/staging/lustre/lustre/lmv/lmv_obd.c
> index ab4f4fb..6483f2c 100644
> --- a/drivers/staging/lustre/lustre/lmv/lmv_obd.c
> +++ b/drivers/staging/lustre/lustre/lmv/lmv_obd.c
> @@ -2607,27 +2607,6 @@ static int lmv_clear_open_replay_data(struct obd_export *exp,
> 	return md_clear_open_replay_data(tgt->ltd_exp, och);
> }
> 
> -static int lmv_get_remote_perm(struct obd_export *exp,
> -			       const struct lu_fid *fid,
> -			       __u32 suppgid, struct ptlrpc_request **request)
> -{
> -	struct obd_device       *obd = exp->exp_obd;
> -	struct lmv_obd	  *lmv = &obd->u.lmv;
> -	struct lmv_tgt_desc     *tgt;
> -	int		      rc;
> -
> -	rc = lmv_check_connect(obd);
> -	if (rc)
> -		return rc;
> -
> -	tgt = lmv_find_target(lmv, fid);
> -	if (IS_ERR(tgt))
> -		return PTR_ERR(tgt);
> -
> -	rc = md_get_remote_perm(tgt->ltd_exp, fid, suppgid, request);
> -	return rc;
> -}
> -
> static int lmv_intent_getattr_async(struct obd_export *exp,
> 				    struct md_enqueue_info *minfo,
> 				    struct ldlm_enqueue_info *einfo)
> @@ -2791,7 +2770,6 @@ static struct md_ops lmv_md_ops = {
> 	.free_lustre_md		= lmv_free_lustre_md,
> 	.set_open_replay_data	= lmv_set_open_replay_data,
> 	.clear_open_replay_data	= lmv_clear_open_replay_data,
> -	.get_remote_perm	= lmv_get_remote_perm,
> 	.intent_getattr_async	= lmv_intent_getattr_async,
> 	.revalidate_lock	= lmv_revalidate_lock
> };
> diff --git a/drivers/staging/lustre/lustre/mdc/mdc_locks.c b/drivers/staging/lustre/lustre/mdc/mdc_locks.c
> index b395420..d55a5d8 100644
> --- a/drivers/staging/lustre/lustre/mdc/mdc_locks.c
> +++ b/drivers/staging/lustre/lustre/mdc/mdc_locks.c
> @@ -343,10 +343,6 @@ static struct ptlrpc_request *mdc_intent_open_pack(struct obd_export *exp,
> 	mdc_open_pack(req, op_data, it->it_create_mode, 0, it->it_flags, lmm,
> 		      lmmsize);
> 
> -	/* for remote client, fetch remote perm for current user */
> -	if (client_is_remote(exp))
> -		req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
> -				     sizeof(struct mdt_remote_perm));
> 	ptlrpc_request_set_replen(req);
> 	return req;
> }
> @@ -440,9 +436,7 @@ static struct ptlrpc_request *mdc_intent_getattr_pack(struct obd_export *exp,
> 	struct obd_device     *obddev = class_exp2obd(exp);
> 	u64		       valid = OBD_MD_FLGETATTR | OBD_MD_FLEASIZE |
> 				       OBD_MD_FLMODEASIZE | OBD_MD_FLDIREA |
> -				       OBD_MD_MEA |
> -				       (client_is_remote(exp) ?
> -					       OBD_MD_FLRMTPERM : OBD_MD_FLACL);
> +				       OBD_MD_MEA | OBD_MD_FLACL;
> 	struct ldlm_intent    *lit;
> 	int		    rc;
> 	int		    easize;
> @@ -474,9 +468,6 @@ static struct ptlrpc_request *mdc_intent_getattr_pack(struct obd_export *exp,
> 	mdc_getattr_pack(req, valid, it->it_flags, op_data, easize);
> 
> 	req_capsule_set_size(&req->rq_pill, &RMF_MDT_MD, RCL_SERVER, easize);
> -	if (client_is_remote(exp))
> -		req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
> -				     sizeof(struct mdt_remote_perm));
> 	ptlrpc_request_set_replen(req);
> 	return req;
> }
> @@ -683,16 +674,6 @@ static int mdc_finish_enqueue(struct obd_export *exp,
> 					memcpy(lmm, eadata, body->eadatasize);
> 			}
> 		}
> -
> -		if (body->valid & OBD_MD_FLRMTPERM) {
> -			struct mdt_remote_perm *perm;
> -
> -			LASSERT(client_is_remote(exp));
> -			perm = req_capsule_server_swab_get(pill, &RMF_ACL,
> -						lustre_swab_mdt_remote_perm);
> -			if (!perm)
> -				return -EPROTO;
> -		}
> 	} else if (it->it_op & IT_LAYOUT) {
> 		/* maybe the lock was granted right away and layout
> 		 * is packed into RMF_DLM_LVB of req
> diff --git a/drivers/staging/lustre/lustre/mdc/mdc_reint.c b/drivers/staging/lustre/lustre/mdc/mdc_reint.c
> index 661488e..5dba2c8 100644
> --- a/drivers/staging/lustre/lustre/mdc/mdc_reint.c
> +++ b/drivers/staging/lustre/lustre/mdc/mdc_reint.c
> @@ -230,7 +230,7 @@ rebuild:
> 						MDS_INODELOCK_UPDATE);
> 
> 	req = ptlrpc_request_alloc(class_exp2cliimp(exp),
> -				   &RQF_MDS_REINT_CREATE_RMT_ACL);
> +				   &RQF_MDS_REINT_CREATE_ACL);
> 	if (!req) {
> 		ldlm_lock_list_put(&cancels, l_bl_ast, count);
> 		return -ENOMEM;
> diff --git a/drivers/staging/lustre/lustre/mdc/mdc_request.c b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> index f371e1d..f7e30b1 100644
> --- a/drivers/staging/lustre/lustre/mdc/mdc_request.c
> +++ b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> @@ -146,16 +146,6 @@ static int mdc_getattr_common(struct obd_export *exp,
> 			return -EPROTO;
> 	}
> 
> -	if (body->valid & OBD_MD_FLRMTPERM) {
> -		struct mdt_remote_perm *perm;
> -
> -		LASSERT(client_is_remote(exp));
> -		perm = req_capsule_server_swab_get(pill, &RMF_ACL,
> -						lustre_swab_mdt_remote_perm);
> -		if (!perm)
> -			return -EPROTO;
> -	}
> -
> 	return 0;
> }
> 
> @@ -186,11 +176,6 @@ static int mdc_getattr(struct obd_export *exp, struct md_op_data *op_data,
> 
> 	req_capsule_set_size(&req->rq_pill, &RMF_MDT_MD, RCL_SERVER,
> 			     op_data->op_mode);
> -	if (op_data->op_valid & OBD_MD_FLRMTPERM) {
> -		LASSERT(client_is_remote(exp));
> -		req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
> -				     sizeof(struct mdt_remote_perm));
> -	}
> 	ptlrpc_request_set_replen(req);
> 
> 	rc = mdc_getattr_common(exp, req);
> @@ -535,16 +520,7 @@ static int mdc_get_lustre_md(struct obd_export *exp,
> 	}
> 	rc = 0;
> 
> -	if (md->body->valid & OBD_MD_FLRMTPERM) {
> -		/* remote permission */
> -		LASSERT(client_is_remote(exp));
> -		md->remote_perm = req_capsule_server_swab_get(pill, &RMF_ACL,
> -						lustre_swab_mdt_remote_perm);
> -		if (!md->remote_perm) {
> -			rc = -EPROTO;
> -			goto out;
> -		}
> -	} else if (md->body->valid & OBD_MD_FLACL) {
> +	if (md->body->valid & OBD_MD_FLACL) {
> 		/* for ACL, it's possible that FLACL is set but aclsize is zero.
> 		 * only when aclsize != 0 there's an actual segment for ACL
> 		 * in reply buffer.
> @@ -1164,7 +1140,7 @@ static int mdc_ioc_hsm_progress(struct obd_export *exp,
> 		goto out;
> 	}
> 
> -	mdc_pack_body(req, NULL, OBD_MD_FLRMTPERM, 0, -1, 0);
> +	mdc_pack_body(req, NULL, 0, 0, -1, 0);
> 
> 	/* Copy hsm_progress struct */
> 	req_hpk = req_capsule_client_get(&req->rq_pill, &RMF_MDS_HSM_PROGRESS);
> @@ -1198,7 +1174,7 @@ static int mdc_ioc_hsm_ct_register(struct obd_import *imp, __u32 archives)
> 		goto out;
> 	}
> 
> -	mdc_pack_body(req, NULL, OBD_MD_FLRMTPERM, 0, -1, 0);
> +	mdc_pack_body(req, NULL, 0, 0, -1, 0);
> 
> 	/* Copy hsm_progress struct */
> 	archive_mask = req_capsule_client_get(&req->rq_pill,
> @@ -1237,7 +1213,7 @@ static int mdc_ioc_hsm_current_action(struct obd_export *exp,
> 		return rc;
> 	}
> 
> -	mdc_pack_body(req, &op_data->op_fid1, OBD_MD_FLRMTPERM, 0,
> +	mdc_pack_body(req, &op_data->op_fid1, 0, 0,
> 		      op_data->op_suppgids[0], 0);
> 
> 	ptlrpc_request_set_replen(req);
> @@ -1273,7 +1249,7 @@ static int mdc_ioc_hsm_ct_unregister(struct obd_import *imp)
> 		goto out;
> 	}
> 
> -	mdc_pack_body(req, NULL, OBD_MD_FLRMTPERM, 0, -1, 0);
> +	mdc_pack_body(req, NULL, 0, 0, -1, 0);
> 
> 	ptlrpc_request_set_replen(req);
> 
> @@ -1302,7 +1278,7 @@ static int mdc_ioc_hsm_state_get(struct obd_export *exp,
> 		return rc;
> 	}
> 
> -	mdc_pack_body(req, &op_data->op_fid1, OBD_MD_FLRMTPERM, 0,
> +	mdc_pack_body(req, &op_data->op_fid1, 0, 0,
> 		      op_data->op_suppgids[0], 0);
> 
> 	ptlrpc_request_set_replen(req);
> @@ -1343,7 +1319,7 @@ static int mdc_ioc_hsm_state_set(struct obd_export *exp,
> 		return rc;
> 	}
> 
> -	mdc_pack_body(req, &op_data->op_fid1, OBD_MD_FLRMTPERM, 0,
> +	mdc_pack_body(req, &op_data->op_fid1, 0, 0,
> 		      op_data->op_suppgids[0], 0);
> 
> 	/* Copy states */
> @@ -1390,7 +1366,7 @@ static int mdc_ioc_hsm_request(struct obd_export *exp,
> 		return rc;
> 	}
> 
> -	mdc_pack_body(req, NULL, OBD_MD_FLRMTPERM, 0, -1, 0);
> +	mdc_pack_body(req, NULL, 0, 0, -1, 0);
> 
> 	/* Copy hsm_request struct */
> 	req_hr = req_capsule_client_get(&req->rq_pill, &RMF_MDS_HSM_REQUEST);
> @@ -2428,41 +2404,6 @@ static int mdc_process_config(struct obd_device *obd, u32 len, void *buf)
> 	return rc;
> }
> 
> -/* get remote permission for current user on fid */
> -static int mdc_get_remote_perm(struct obd_export *exp, const struct lu_fid *fid,
> -			       __u32 suppgid, struct ptlrpc_request **request)
> -{
> -	struct ptlrpc_request  *req;
> -	int		    rc;
> -
> -	LASSERT(client_is_remote(exp));
> -
> -	*request = NULL;
> -	req = ptlrpc_request_alloc(class_exp2cliimp(exp), &RQF_MDS_GETATTR);
> -	if (!req)
> -		return -ENOMEM;
> -
> -	rc = ptlrpc_request_pack(req, LUSTRE_MDS_VERSION, MDS_GETATTR);
> -	if (rc) {
> -		ptlrpc_request_free(req);
> -		return rc;
> -	}
> -
> -	mdc_pack_body(req, fid, OBD_MD_FLRMTPERM, 0, suppgid, 0);
> -
> -	req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
> -			     sizeof(struct mdt_remote_perm));
> -
> -	ptlrpc_request_set_replen(req);
> -
> -	rc = ptlrpc_queue_wait(req);
> -	if (rc)
> -		ptlrpc_req_finished(req);
> -	else
> -		*request = req;
> -	return rc;
> -}
> -
> static struct obd_ops mdc_obd_ops = {
> 	.owner          = THIS_MODULE,
> 	.setup          = mdc_setup,
> @@ -2514,7 +2455,6 @@ static struct md_ops mdc_md_ops = {
> 	.free_lustre_md		= mdc_free_lustre_md,
> 	.set_open_replay_data	= mdc_set_open_replay_data,
> 	.clear_open_replay_data	= mdc_clear_open_replay_data,
> -	.get_remote_perm	= mdc_get_remote_perm,
> 	.intent_getattr_async	= mdc_intent_getattr_async,
> 	.revalidate_lock	= mdc_revalidate_lock
> };
> diff --git a/drivers/staging/lustre/lustre/obdclass/Makefile b/drivers/staging/lustre/lustre/obdclass/Makefile
> index c404eb3..df7e47f 100644
> --- a/drivers/staging/lustre/lustre/obdclass/Makefile
> +++ b/drivers/staging/lustre/lustre/obdclass/Makefile
> @@ -5,5 +5,4 @@ obdclass-y := linux/linux-module.o linux/linux-obdo.o linux/linux-sysctl.o \
> 	      genops.o uuid.o lprocfs_status.o lprocfs_counters.o \
> 	      lustre_handles.o lustre_peer.o statfs_pack.o \
> 	      obdo.o obd_config.o obd_mount.o lu_object.o lu_ref.o \
> -	      cl_object.o cl_page.o cl_lock.o cl_io.o \
> -	      acl.o kernelcomm.o
> +	      cl_object.o cl_page.o cl_lock.o cl_io.o kernelcomm.o
> diff --git a/drivers/staging/lustre/lustre/obdclass/acl.c b/drivers/staging/lustre/lustre/obdclass/acl.c
> deleted file mode 100644
> index 30d8b42..0000000
> --- a/drivers/staging/lustre/lustre/obdclass/acl.c
> +++ /dev/null
> @@ -1,411 +0,0 @@
> -/*
> - * GPL HEADER START
> - *
> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 only,
> - * as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> - * General Public License version 2 for more details (a copy is included
> - * in the LICENSE file that accompanied this code).
> - *
> - * You should have received a copy of the GNU General Public License
> - * version 2 along with this program; If not, see
> - * http://www.gnu.org/licenses/gpl-2.0.html
> - *
> - * GPL HEADER END
> - */
> -/*
> - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
> - * Use is subject to license terms.
> - *
> - * Copyright (c) 2012, Intel Corporation.
> - */
> -/*
> - * This file is part of Lustre, http://www.lustre.org/
> - * Lustre is a trademark of Sun Microsystems, Inc.
> - *
> - * lustre/obdclass/acl.c
> - *
> - * Lustre Access Control List.
> - *
> - * Author: Fan Yong <fanyong at clusterfs.com>
> - */
> -
> -#define DEBUG_SUBSYSTEM S_SEC
> -#include "../include/lu_object.h"
> -#include "../include/lustre_acl.h"
> -#include "../include/lustre_eacl.h"
> -#include "../include/obd_support.h"
> -
> -#ifdef CONFIG_FS_POSIX_ACL
> -
> -#define CFS_ACL_XATTR_VERSION POSIX_ACL_XATTR_VERSION
> -
> -enum {
> -	ES_UNK  = 0,    /* unknown stat */
> -	ES_UNC  = 1,    /* ACL entry is not changed */
> -	ES_MOD  = 2,    /* ACL entry is modified */
> -	ES_ADD  = 3,    /* ACL entry is added */
> -	ES_DEL  = 4     /* ACL entry is deleted */
> -};
> -
> -static inline void lustre_ext_acl_le_to_cpu(ext_acl_xattr_entry *d,
> -					    ext_acl_xattr_entry *s)
> -{
> -	d->e_tag	= le16_to_cpu(s->e_tag);
> -	d->e_perm       = le16_to_cpu(s->e_perm);
> -	d->e_id	 = le32_to_cpu(s->e_id);
> -	d->e_stat       = le32_to_cpu(s->e_stat);
> -}
> -
> -static inline void lustre_ext_acl_cpu_to_le(ext_acl_xattr_entry *d,
> -					    ext_acl_xattr_entry *s)
> -{
> -	d->e_tag	= cpu_to_le16(s->e_tag);
> -	d->e_perm       = cpu_to_le16(s->e_perm);
> -	d->e_id	 = cpu_to_le32(s->e_id);
> -	d->e_stat       = cpu_to_le32(s->e_stat);
> -}
> -
> -static inline void lustre_posix_acl_le_to_cpu(posix_acl_xattr_entry *d,
> -					      posix_acl_xattr_entry *s)
> -{
> -	d->e_tag	= le16_to_cpu(s->e_tag);
> -	d->e_perm       = le16_to_cpu(s->e_perm);
> -	d->e_id	 = le32_to_cpu(s->e_id);
> -}
> -
> -static inline void lustre_posix_acl_cpu_to_le(posix_acl_xattr_entry *d,
> -					      posix_acl_xattr_entry *s)
> -{
> -	d->e_tag	= cpu_to_le16(s->e_tag);
> -	d->e_perm       = cpu_to_le16(s->e_perm);
> -	d->e_id	 = cpu_to_le32(s->e_id);
> -}
> -
> -/* if "new_count == 0", then "new = {a_version, NULL}", NOT NULL. */
> -static int lustre_posix_acl_xattr_reduce_space(posix_acl_xattr_header **header,
> -					       int old_count, int new_count)
> -{
> -	int old_size = CFS_ACL_XATTR_SIZE(old_count, posix_acl_xattr);
> -	int new_size = CFS_ACL_XATTR_SIZE(new_count, posix_acl_xattr);
> -	posix_acl_xattr_header *new;
> -
> -	if (unlikely(old_count <= new_count))
> -		return old_size;
> -
> -	new = kmemdup(*header, new_size, GFP_NOFS);
> -	if (unlikely(!new))
> -		return -ENOMEM;
> -
> -	kfree(*header);
> -	*header = new;
> -	return new_size;
> -}
> -
> -/* if "new_count == 0", then "new = {0, NULL}", NOT NULL. */
> -static int lustre_ext_acl_xattr_reduce_space(ext_acl_xattr_header **header,
> -					     int old_count)
> -{
> -	int ext_count = le32_to_cpu((*header)->a_count);
> -	int ext_size = CFS_ACL_XATTR_SIZE(ext_count, ext_acl_xattr);
> -	ext_acl_xattr_header *new;
> -
> -	if (unlikely(old_count <= ext_count))
> -		return 0;
> -
> -	new = kmemdup(*header, ext_size, GFP_NOFS);
> -	if (unlikely(!new))
> -		return -ENOMEM;
> -
> -	kfree(*header);
> -	*header = new;
> -	return 0;
> -}
> -
> -/*
> - * Generate new extended ACL based on the posix ACL.
> - */
> -ext_acl_xattr_header *
> -lustre_posix_acl_xattr_2ext(posix_acl_xattr_header *header, int size)
> -{
> -	int count, i, esize;
> -	ext_acl_xattr_header *new;
> -
> -	if (unlikely(size < 0))
> -		return ERR_PTR(-EINVAL);
> -	else if (!size)
> -		count = 0;
> -	else
> -		count = CFS_ACL_XATTR_COUNT(size, posix_acl_xattr);
> -	esize = CFS_ACL_XATTR_SIZE(count, ext_acl_xattr);
> -	new = kzalloc(esize, GFP_NOFS);
> -	if (unlikely(!new))
> -		return ERR_PTR(-ENOMEM);
> -
> -	new->a_count = cpu_to_le32(count);
> -	for (i = 0; i < count; i++) {
> -		new->a_entries[i].e_tag  = header->a_entries[i].e_tag;
> -		new->a_entries[i].e_perm = header->a_entries[i].e_perm;
> -		new->a_entries[i].e_id   = header->a_entries[i].e_id;
> -		new->a_entries[i].e_stat = cpu_to_le32(ES_UNK);
> -	}
> -
> -	return new;
> -}
> -EXPORT_SYMBOL(lustre_posix_acl_xattr_2ext);
> -
> -/*
> - * Filter out the "nobody" entries in the posix ACL.
> - */
> -int lustre_posix_acl_xattr_filter(posix_acl_xattr_header *header, size_t size,
> -				  posix_acl_xattr_header **out)
> -{
> -	int count, i, j, rc = 0;
> -	__u32 id;
> -	posix_acl_xattr_header *new;
> -
> -	if (!size)
> -		return 0;
> -	if (size < sizeof(*new))
> -		return -EINVAL;
> -
> -	new = kzalloc(size, GFP_NOFS);
> -	if (unlikely(!new))
> -		return -ENOMEM;
> -
> -	new->a_version = cpu_to_le32(CFS_ACL_XATTR_VERSION);
> -	count = CFS_ACL_XATTR_COUNT(size, posix_acl_xattr);
> -	for (i = 0, j = 0; i < count; i++) {
> -		id = le32_to_cpu(header->a_entries[i].e_id);
> -		switch (le16_to_cpu(header->a_entries[i].e_tag)) {
> -		case ACL_USER_OBJ:
> -		case ACL_GROUP_OBJ:
> -		case ACL_MASK:
> -		case ACL_OTHER:
> -			if (id != ACL_UNDEFINED_ID) {
> -				rc = -EIO;
> -				goto _out;
> -			}
> -
> -			memcpy(&new->a_entries[j++], &header->a_entries[i],
> -			       sizeof(posix_acl_xattr_entry));
> -			break;
> -		case ACL_USER:
> -			if (id != NOBODY_UID)
> -				memcpy(&new->a_entries[j++],
> -				       &header->a_entries[i],
> -				       sizeof(posix_acl_xattr_entry));
> -			break;
> -		case ACL_GROUP:
> -			if (id != NOBODY_GID)
> -				memcpy(&new->a_entries[j++],
> -				       &header->a_entries[i],
> -				       sizeof(posix_acl_xattr_entry));
> -			break;
> -		default:
> -			rc = -EIO;
> -			goto _out;
> -		}
> -	}
> -
> -	/* free unused space. */
> -	rc = lustre_posix_acl_xattr_reduce_space(&new, count, j);
> -	if (rc >= 0) {
> -		size = rc;
> -		*out = new;
> -		rc = 0;
> -	}
> -
> -_out:
> -	if (rc) {
> -		kfree(new);
> -		size = rc;
> -	}
> -	return size;
> -}
> -EXPORT_SYMBOL(lustre_posix_acl_xattr_filter);
> -
> -/*
> - * Release the extended ACL space.
> - */
> -void lustre_ext_acl_xattr_free(ext_acl_xattr_header *header)
> -{
> -	kfree(header);
> -}
> -EXPORT_SYMBOL(lustre_ext_acl_xattr_free);
> -
> -static ext_acl_xattr_entry *
> -lustre_ext_acl_xattr_search(ext_acl_xattr_header *header,
> -			    posix_acl_xattr_entry *entry, int *pos)
> -{
> -	int once, start, end, i, j, count = le32_to_cpu(header->a_count);
> -
> -	once = 0;
> -	start = *pos;
> -	end = count;
> -
> -again:
> -	for (i = start; i < end; i++) {
> -		if (header->a_entries[i].e_tag == entry->e_tag &&
> -		    header->a_entries[i].e_id == entry->e_id) {
> -			j = i;
> -			if (++i >= count)
> -				i = 0;
> -			*pos = i;
> -			return &header->a_entries[j];
> -		}
> -	}
> -
> -	if (!once) {
> -		once = 1;
> -		start = 0;
> -		end = *pos;
> -		goto again;
> -	}
> -
> -	return NULL;
> -}
> -
> -/*
> - * Merge the posix ACL and the extended ACL into new extended ACL.
> - */
> -ext_acl_xattr_header *
> -lustre_acl_xattr_merge2ext(posix_acl_xattr_header *posix_header, int size,
> -			   ext_acl_xattr_header *ext_header)
> -{
> -	int ori_ext_count, posix_count, ext_count, ext_size;
> -	int i, j, pos = 0, rc = 0;
> -	posix_acl_xattr_entry pae;
> -	ext_acl_xattr_header *new;
> -	ext_acl_xattr_entry *ee, eae;
> -
> -	if (unlikely(size < 0))
> -		return ERR_PTR(-EINVAL);
> -	else if (!size)
> -		posix_count = 0;
> -	else
> -		posix_count = CFS_ACL_XATTR_COUNT(size, posix_acl_xattr);
> -	ori_ext_count = le32_to_cpu(ext_header->a_count);
> -	ext_count = posix_count + ori_ext_count;
> -	ext_size = CFS_ACL_XATTR_SIZE(ext_count, ext_acl_xattr);
> -
> -	new = kzalloc(ext_size, GFP_NOFS);
> -	if (unlikely(!new))
> -		return ERR_PTR(-ENOMEM);
> -
> -	for (i = 0, j = 0; i < posix_count; i++) {
> -		lustre_posix_acl_le_to_cpu(&pae, &posix_header->a_entries[i]);
> -		switch (pae.e_tag) {
> -		case ACL_USER_OBJ:
> -		case ACL_GROUP_OBJ:
> -		case ACL_MASK:
> -		case ACL_OTHER:
> -			if (pae.e_id != ACL_UNDEFINED_ID) {
> -				rc = -EIO;
> -				goto out;
> -		}
> -		case ACL_USER:
> -			/* ignore "nobody" entry. */
> -			if (pae.e_id == NOBODY_UID)
> -				break;
> -
> -			new->a_entries[j].e_tag =
> -					posix_header->a_entries[i].e_tag;
> -			new->a_entries[j].e_perm =
> -					posix_header->a_entries[i].e_perm;
> -			new->a_entries[j].e_id =
> -					posix_header->a_entries[i].e_id;
> -			ee = lustre_ext_acl_xattr_search(ext_header,
> -					&posix_header->a_entries[i], &pos);
> -			if (ee) {
> -				if (posix_header->a_entries[i].e_perm !=
> -								ee->e_perm)
> -					/* entry modified. */
> -					ee->e_stat =
> -					new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_MOD);
> -				else
> -					/* entry unchanged. */
> -					ee->e_stat =
> -					new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_UNC);
> -			} else {
> -				/* new entry. */
> -				new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_ADD);
> -			}
> -			break;
> -		case ACL_GROUP:
> -			/* ignore "nobody" entry. */
> -			if (pae.e_id == NOBODY_GID)
> -				break;
> -			new->a_entries[j].e_tag =
> -					posix_header->a_entries[i].e_tag;
> -			new->a_entries[j].e_perm =
> -					posix_header->a_entries[i].e_perm;
> -			new->a_entries[j].e_id =
> -					posix_header->a_entries[i].e_id;
> -			ee = lustre_ext_acl_xattr_search(ext_header,
> -					&posix_header->a_entries[i], &pos);
> -			if (ee) {
> -				if (posix_header->a_entries[i].e_perm !=
> -								ee->e_perm)
> -					/* entry modified. */
> -					ee->e_stat =
> -					new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_MOD);
> -				else
> -					/* entry unchanged. */
> -					ee->e_stat =
> -					new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_UNC);
> -			} else {
> -				/* new entry. */
> -				new->a_entries[j++].e_stat =
> -							cpu_to_le32(ES_ADD);
> -			}
> -			break;
> -		default:
> -			rc = -EIO;
> -			goto out;
> -		}
> -	}
> -
> -	/* process deleted entries. */
> -	for (i = 0; i < ori_ext_count; i++) {
> -		lustre_ext_acl_le_to_cpu(&eae, &ext_header->a_entries[i]);
> -		if (eae.e_stat == ES_UNK) {
> -			/* ignore "nobody" entry. */
> -			if ((eae.e_tag == ACL_USER && eae.e_id == NOBODY_UID) ||
> -			    (eae.e_tag == ACL_GROUP && eae.e_id == NOBODY_GID))
> -				continue;
> -
> -			new->a_entries[j].e_tag =
> -						ext_header->a_entries[i].e_tag;
> -			new->a_entries[j].e_perm =
> -						ext_header->a_entries[i].e_perm;
> -			new->a_entries[j].e_id = ext_header->a_entries[i].e_id;
> -			new->a_entries[j++].e_stat = cpu_to_le32(ES_DEL);
> -		}
> -	}
> -
> -	new->a_count = cpu_to_le32(j);
> -	/* free unused space. */
> -	rc = lustre_ext_acl_xattr_reduce_space(&new, ext_count);
> -
> -out:
> -	if (rc) {
> -		kfree(new);
> -		new = ERR_PTR(rc);
> -	}
> -	return new;
> -}
> -EXPORT_SYMBOL(lustre_acl_xattr_merge2ext);
> -
> -#endif
> diff --git a/drivers/staging/lustre/lustre/osc/osc_cache.c b/drivers/staging/lustre/lustre/osc/osc_cache.c
> index 1a6df43..4c78b53 100644
> --- a/drivers/staging/lustre/lustre/osc/osc_cache.c
> +++ b/drivers/staging/lustre/lustre/osc/osc_cache.c
> @@ -2367,7 +2367,7 @@ int osc_prep_async_page(struct osc_object *osc, struct osc_page *ops,
> 	oap->oap_obj_off = offset;
> 	LASSERT(!(offset & ~PAGE_MASK));
> 
> -	if (!client_is_remote(exp) && capable(CFS_CAP_SYS_RESOURCE))
> +	if (capable(CFS_CAP_SYS_RESOURCE))
> 		oap->oap_brw_flags = OBD_BRW_NOQUOTA;
> 
> 	INIT_LIST_HEAD(&oap->oap_pending_item);
> @@ -2406,8 +2406,7 @@ int osc_queue_async_io(const struct lu_env *env, struct cl_io *io,
> 
> 	/* Set the OBD_BRW_SRVLOCK before the page is queued. */
> 	brw_flags |= ops->ops_srvlock ? OBD_BRW_SRVLOCK : 0;
> -	if (!client_is_remote(osc_export(osc)) &&
> -	    capable(CFS_CAP_SYS_RESOURCE)) {
> +	if (capable(CFS_CAP_SYS_RESOURCE)) {
> 		brw_flags |= OBD_BRW_NOQUOTA;
> 		cmd |= OBD_BRW_NOQUOTA;
> 	}
> diff --git a/drivers/staging/lustre/lustre/osc/osc_page.c b/drivers/staging/lustre/lustre/osc/osc_page.c
> index 57d8a5a..18c261b 100644
> --- a/drivers/staging/lustre/lustre/osc/osc_page.c
> +++ b/drivers/staging/lustre/lustre/osc/osc_page.c
> @@ -357,7 +357,6 @@ void osc_page_submit(const struct lu_env *env, struct osc_page *opg,
> 		     enum cl_req_type crt, int brw_flags)
> {
> 	struct osc_async_page *oap = &opg->ops_oap;
> -	struct osc_object *obj = oap->oap_obj;
> 
> 	LASSERTF(oap->oap_magic == OAP_MAGIC, "Bad oap magic: oap %p, magic 0x%x\n",
> 		 oap, oap->oap_magic);
> @@ -372,8 +371,7 @@ void osc_page_submit(const struct lu_env *env, struct osc_page *opg,
> 	if (osc_over_unstable_soft_limit(oap->oap_cli))
> 		oap->oap_brw_flags |= OBD_BRW_SOFT_SYNC;
> 
> -	if (!client_is_remote(osc_export(obj)) &&
> -	    capable(CFS_CAP_SYS_RESOURCE)) {
> +	if (capable(CFS_CAP_SYS_RESOURCE)) {
> 		oap->oap_brw_flags |= OBD_BRW_NOQUOTA;
> 		oap->oap_cmd |= OBD_BRW_NOQUOTA;
> 	}
> diff --git a/drivers/staging/lustre/lustre/ptlrpc/layout.c b/drivers/staging/lustre/lustre/ptlrpc/layout.c
> index e6ff97d..ab5d851 100644
> --- a/drivers/staging/lustre/lustre/ptlrpc/layout.c
> +++ b/drivers/staging/lustre/lustre/ptlrpc/layout.c
> @@ -194,7 +194,7 @@ static const struct req_msg_field *mds_reint_create_slave_client[] = {
> 	&RMF_DLM_REQ
> };
> 
> -static const struct req_msg_field *mds_reint_create_rmt_acl_client[] = {
> +static const struct req_msg_field *mds_reint_create_acl_client[] = {
> 	&RMF_PTLRPC_BODY,
> 	&RMF_REC_REINT,
> 	&RMF_CAPA1,
> @@ -675,7 +675,7 @@ static struct req_format *req_formats[] = {
> 	&RQF_MDS_DONE_WRITING,
> 	&RQF_MDS_REINT,
> 	&RQF_MDS_REINT_CREATE,
> -	&RQF_MDS_REINT_CREATE_RMT_ACL,
> +	&RQF_MDS_REINT_CREATE_ACL,
> 	&RQF_MDS_REINT_CREATE_SLAVE,
> 	&RQF_MDS_REINT_CREATE_SYM,
> 	&RQF_MDS_REINT_OPEN,
> @@ -1238,10 +1238,10 @@ struct req_format RQF_MDS_REINT_CREATE =
> 			mds_reint_create_client, mdt_body_capa);
> EXPORT_SYMBOL(RQF_MDS_REINT_CREATE);
> 
> -struct req_format RQF_MDS_REINT_CREATE_RMT_ACL =
> -	DEFINE_REQ_FMT0("MDS_REINT_CREATE_RMT_ACL",
> -			mds_reint_create_rmt_acl_client, mdt_body_capa);
> -EXPORT_SYMBOL(RQF_MDS_REINT_CREATE_RMT_ACL);
> +struct req_format RQF_MDS_REINT_CREATE_ACL =
> +	DEFINE_REQ_FMT0("MDS_REINT_CREATE_ACL",
> +			mds_reint_create_acl_client, mdt_body_capa);
> +EXPORT_SYMBOL(RQF_MDS_REINT_CREATE_ACL);
> 
> struct req_format RQF_MDS_REINT_CREATE_SLAVE =
> 	DEFINE_REQ_FMT0("MDS_REINT_CREATE_EA",
> diff --git a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c
> index 9ff58a1..b514f18 100644
> --- a/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c
> +++ b/drivers/staging/lustre/lustre/ptlrpc/pack_generic.c
> @@ -1802,19 +1802,6 @@ void lustre_swab_obd_quotactl(struct obd_quotactl *q)
> }
> EXPORT_SYMBOL(lustre_swab_obd_quotactl);
> 
> -void lustre_swab_mdt_remote_perm(struct mdt_remote_perm *p)
> -{
> -	__swab32s(&p->rp_uid);
> -	__swab32s(&p->rp_gid);
> -	__swab32s(&p->rp_fsuid);
> -	__swab32s(&p->rp_fsuid_h);
> -	__swab32s(&p->rp_fsgid);
> -	__swab32s(&p->rp_fsgid_h);
> -	__swab32s(&p->rp_access_perm);
> -	__swab32s(&p->rp_padding);
> -};
> -EXPORT_SYMBOL(lustre_swab_mdt_remote_perm);
> -
> void lustre_swab_fid2path(struct getinfo_fid2path *gf)
> {
> 	lustre_swab_lu_fid(&gf->gf_fid);
> diff --git a/drivers/staging/lustre/lustre/ptlrpc/wiretest.c b/drivers/staging/lustre/lustre/ptlrpc/wiretest.c
> index 9fd9de9..6cc2b2e 100644
> --- a/drivers/staging/lustre/lustre/ptlrpc/wiretest.c
> +++ b/drivers/staging/lustre/lustre/ptlrpc/wiretest.c
> @@ -1265,8 +1265,6 @@ void lustre_assert_wire_constants(void)
> 		 OBD_MD_FLXATTRRM);
> 	LASSERTF(OBD_MD_FLACL == (0x0000008000000000ULL), "found 0x%.16llxULL\n",
> 		 OBD_MD_FLACL);
> -	LASSERTF(OBD_MD_FLRMTPERM == (0x0000010000000000ULL), "found 0x%.16llxULL\n",
> -		 OBD_MD_FLRMTPERM);
> 	LASSERTF(OBD_MD_FLMDSCAPA == (0x0000020000000000ULL), "found 0x%.16llxULL\n",
> 		 OBD_MD_FLMDSCAPA);
> 	LASSERTF(OBD_MD_FLOSSCAPA == (0x0000040000000000ULL), "found 0x%.16llxULL\n",
> @@ -1277,14 +1275,6 @@ void lustre_assert_wire_constants(void)
> 		 OBD_MD_FLCROSSREF);
> 	LASSERTF(OBD_MD_FLGETATTRLOCK == (0x0000200000000000ULL), "found 0x%.16llxULL\n",
> 		 OBD_MD_FLGETATTRLOCK);
> -	LASSERTF(OBD_MD_FLRMTLSETFACL == (0x0001000000000000ULL), "found 0x%.16llxULL\n",
> -		 OBD_MD_FLRMTLSETFACL);
> -	LASSERTF(OBD_MD_FLRMTLGETFACL == (0x0002000000000000ULL), "found 0x%.16llxULL\n",
> -		 OBD_MD_FLRMTLGETFACL);
> -	LASSERTF(OBD_MD_FLRMTRSETFACL == (0x0004000000000000ULL), "found 0x%.16llxULL\n",
> -		 OBD_MD_FLRMTRSETFACL);
> -	LASSERTF(OBD_MD_FLRMTRGETFACL == (0x0008000000000000ULL), "found 0x%.16llxULL\n",
> -		 OBD_MD_FLRMTRGETFACL);
> 	LASSERTF(OBD_MD_FLDATAVERSION == (0x0010000000000000ULL), "found 0x%.16llxULL\n",
> 		 OBD_MD_FLDATAVERSION);
> 	CLASSERT(OBD_FL_INLINEDATA == 0x00000001);
> @@ -1891,44 +1881,6 @@ void lustre_assert_wire_constants(void)
> 	LASSERTF((int)sizeof(((struct mdt_ioepoch *)0)->padding) == 4, "found %lld\n",
> 		 (long long)(int)sizeof(((struct mdt_ioepoch *)0)->padding));
> 
> -	/* Checks for struct mdt_remote_perm */
> -	LASSERTF((int)sizeof(struct mdt_remote_perm) == 32, "found %lld\n",
> -		 (long long)(int)sizeof(struct mdt_remote_perm));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_uid) == 0, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_uid));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_uid) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_uid));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_gid) == 4, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_gid));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_gid) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_gid));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_fsuid) == 8, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_fsuid));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_fsuid) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_fsuid));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_fsgid) == 16, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_fsgid));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_fsgid) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_fsgid));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_access_perm) == 24, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_access_perm));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_access_perm) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_access_perm));
> -	LASSERTF((int)offsetof(struct mdt_remote_perm, rp_padding) == 28, "found %lld\n",
> -		 (long long)(int)offsetof(struct mdt_remote_perm, rp_padding));
> -	LASSERTF((int)sizeof(((struct mdt_remote_perm *)0)->rp_padding) == 4, "found %lld\n",
> -		 (long long)(int)sizeof(((struct mdt_remote_perm *)0)->rp_padding));
> -	LASSERTF(CFS_SETUID_PERM == 0x00000001UL, "found 0x%.8xUL\n",
> -		(unsigned)CFS_SETUID_PERM);
> -	LASSERTF(CFS_SETGID_PERM == 0x00000002UL, "found 0x%.8xUL\n",
> -		(unsigned)CFS_SETGID_PERM);
> -	LASSERTF(CFS_SETGRP_PERM == 0x00000004UL, "found 0x%.8xUL\n",
> -		(unsigned)CFS_SETGRP_PERM);
> -	LASSERTF(CFS_RMTACL_PERM == 0x00000008UL, "found 0x%.8xUL\n",
> -		(unsigned)CFS_RMTACL_PERM);
> -	LASSERTF(CFS_RMTOWN_PERM == 0x00000010UL, "found 0x%.8xUL\n",
> -		(unsigned)CFS_RMTOWN_PERM);
> -
> 	/* Checks for struct mdt_rec_setattr */
> 	LASSERTF((int)sizeof(struct mdt_rec_setattr) == 136, "found %lld\n",
> 		 (long long)(int)sizeof(struct mdt_rec_setattr));
> -- 
> 1.7.1
> 
> _______________________________________________
> lustre-devel mailing list
> lustre-devel at lists.lustre.org
> http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org



More information about the lustre-devel mailing list