Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 70a251f6 authored by John L. Hammond's avatar John L. Hammond Committed by Greg Kroah-Hartman
Browse files

staging: lustre: obd: decruft md_enqueue() and md_intent_lock()



Remove the lmm and lmmsize parameters from both functions, storing
that data in md_op_data when needed. Remove the unused lookup_flags
parameter from md_intent_lock(), and the unused reqp parameter from
md_enqueue(). Add a union ldlm_policy_data * parameter to
md_enqueue(). Remove the unused function lmv_enqueue_remote().

Signed-off-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2675
Reviewed-on: http://review.whamcloud.com/10205


Reviewed-by: default avatarwangdi <di.wang@intel.com>
Reviewed-by: default avatarJinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 58c78cd2
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -747,6 +747,7 @@ struct md_op_data {
	__u32		   op_fsgid;
	cfs_cap_t	       op_cap;
	void		   *op_data;
	size_t			op_data_size;

	/* iattr fields and blocks. */
	struct iattr	    op_attr;
@@ -967,15 +968,15 @@ struct md_ops {
	int (*done_writing)(struct obd_export *, struct md_op_data  *,
			    struct md_open_data *);
	int (*enqueue)(struct obd_export *, struct ldlm_enqueue_info *,
		       const ldlm_policy_data_t *,
		       struct lookup_intent *, struct md_op_data *,
		       struct lustre_handle *, void *, int,
		       struct ptlrpc_request **, __u64);
		       struct lustre_handle *, __u64);
	int (*getattr)(struct obd_export *, struct md_op_data *,
		       struct ptlrpc_request **);
	int (*getattr_name)(struct obd_export *, struct md_op_data *,
			    struct ptlrpc_request **);
	int (*intent_lock)(struct obd_export *, struct md_op_data *,
			   void *, int, struct lookup_intent *, int,
			   struct lookup_intent *,
			   struct ptlrpc_request **,
			   ldlm_blocking_callback, __u64);
	int (*link)(struct obd_export *, struct md_op_data *,
+8 −10
Original line number Diff line number Diff line
@@ -1410,19 +1410,18 @@ static inline int md_done_writing(struct obd_export *exp,

static inline int md_enqueue(struct obd_export *exp,
			     struct ldlm_enqueue_info *einfo,
			     const ldlm_policy_data_t *policy,
			     struct lookup_intent *it,
			     struct md_op_data *op_data,
			     struct lustre_handle *lockh,
			     void *lmm, int lmmsize,
			     struct ptlrpc_request **req,
			     __u64 extra_lock_flags)
{
	int rc;

	EXP_CHECK_MD_OP(exp, enqueue);
	EXP_MD_COUNTER_INCREMENT(exp, enqueue);
	rc = MDP(exp->exp_obd, enqueue)(exp, einfo, it, op_data, lockh,
					lmm, lmmsize, req, extra_lock_flags);
	rc = MDP(exp->exp_obd, enqueue)(exp, einfo, policy, it, op_data, lockh,
					extra_lock_flags);
	return rc;
}

@@ -1439,9 +1438,9 @@ static inline int md_getattr_name(struct obd_export *exp,
}

static inline int md_intent_lock(struct obd_export *exp,
				 struct md_op_data *op_data, void *lmm,
				 int lmmsize, struct lookup_intent *it,
				 int lookup_flags, struct ptlrpc_request **reqp,
				 struct md_op_data *op_data,
				 struct lookup_intent *it,
				 struct ptlrpc_request **reqp,
				 ldlm_blocking_callback cb_blocking,
				 __u64 extra_lock_flags)
{
@@ -1449,9 +1448,8 @@ static inline int md_intent_lock(struct obd_export *exp,

	EXP_CHECK_MD_OP(exp, intent_lock);
	EXP_MD_COUNTER_INCREMENT(exp, intent_lock);
	rc = MDP(exp->exp_obd, intent_lock)(exp, op_data, lmm, lmmsize,
					    it, lookup_flags, reqp, cb_blocking,
					    extra_lock_flags);
	rc = MDP(exp->exp_obd, intent_lock)(exp, op_data, it, reqp,
					    cb_blocking, extra_lock_flags);
	return rc;
}

+18 −21
Original line number Diff line number Diff line
@@ -387,7 +387,7 @@ static int ll_intent_file_open(struct dentry *de, void *lmm, int lmmsize,
	struct dentry *parent = de->d_parent;
	const char *name = NULL;
	struct md_op_data *op_data;
	struct ptlrpc_request *req;
	struct ptlrpc_request *req = NULL;
	int len = 0, rc;

	LASSERT(parent);
@@ -407,9 +407,11 @@ static int ll_intent_file_open(struct dentry *de, void *lmm, int lmmsize,
				      O_RDWR, LUSTRE_OPC_ANY, NULL);
	if (IS_ERR(op_data))
		return PTR_ERR(op_data);
	op_data->op_data = lmm;
	op_data->op_data_size = lmmsize;

	rc = md_intent_lock(sbi->ll_md_exp, op_data, lmm, lmmsize, itp,
			    0 /*unused */, &req, ll_md_blocking_ast, 0);
	rc = md_intent_lock(sbi->ll_md_exp, op_data, itp, &req,
			    &ll_md_blocking_ast, 0);
	ll_finish_md_op_data(op_data);
	if (rc == -ESTALE) {
		/* reason for keep own exit path - don`t flood log
@@ -759,7 +761,7 @@ ll_lease_open(struct inode *inode, struct file *file, fmode_t fmode,
	struct lookup_intent it = { .it_op = IT_OPEN };
	struct ll_sb_info *sbi = ll_i2sbi(inode);
	struct md_op_data *op_data;
	struct ptlrpc_request *req;
	struct ptlrpc_request *req = NULL;
	struct lustre_handle old_handle = { 0 };
	struct obd_client_handle *och = NULL;
	int rc;
@@ -826,8 +828,8 @@ ll_lease_open(struct inode *inode, struct file *file, fmode_t fmode,

	it.it_flags = fmode | open_flags;
	it.it_flags |= MDS_OPEN_LOCK | MDS_OPEN_BY_FID | MDS_OPEN_LEASE;
	rc = md_intent_lock(sbi->ll_md_exp, op_data, NULL, 0, &it, 0, &req,
			    ll_md_blocking_lease_ast,
	rc = md_intent_lock(sbi->ll_md_exp, op_data, &it, &req,
			    &ll_md_blocking_lease_ast,
	/* LDLM_FL_NO_LRU: To not put the lease lock into LRU list, otherwise
	 * it can be cancelled which may mislead applications that the lease is
	 * broken;
@@ -2806,8 +2808,8 @@ ll_file_flock(struct file *file, int cmd, struct file_lock *file_lock)
	       PFID(ll_inode2fid(inode)), flock.l_flock.pid, flags,
	       einfo.ei_mode, flock.l_flock.start, flock.l_flock.end);

	rc = md_enqueue(sbi->ll_md_exp, &einfo, NULL,
			op_data, &lockh, &flock, 0, NULL /* req */, flags);
	rc = md_enqueue(sbi->ll_md_exp, &einfo, &flock, NULL, op_data, &lockh,
			flags);

	/* Restore the file lock type if not TEST lock. */
	if (!(flags & LDLM_FL_TEST_LOCK))
@@ -2819,8 +2821,8 @@ ll_file_flock(struct file *file, int cmd, struct file_lock *file_lock)

	if (rc2 && file_lock->fl_type != F_UNLCK) {
		einfo.ei_mode = LCK_NL;
		md_enqueue(sbi->ll_md_exp, &einfo, NULL,
			   op_data, &lockh, &flock, 0, NULL /* req */, flags);
		md_enqueue(sbi->ll_md_exp, &einfo, &flock, NULL, op_data,
			   &lockh, flags);
		rc = rc2;
	}

@@ -3059,12 +3061,8 @@ static int __ll_inode_revalidate(struct dentry *dentry, __u64 ibits)
		if (IS_ERR(op_data))
			return PTR_ERR(op_data);

		rc = md_intent_lock(exp, op_data, NULL, 0,
				    /* we are not interested in name
				     * based lookup
				     */
				    &oit, 0, &req,
				    ll_md_blocking_ast, 0);
		rc = md_intent_lock(exp, op_data, &oit, &req,
				    &ll_md_blocking_ast, 0);
		ll_finish_md_op_data(op_data);
		if (rc < 0) {
			rc = ll_inode_revalidate_fini(inode, rc);
@@ -3742,8 +3740,8 @@ int ll_layout_refresh(struct inode *inode, __u32 *gen)
	struct ldlm_enqueue_info einfo = {
		.ei_type = LDLM_IBITS,
		.ei_mode = LCK_CR,
		.ei_cb_bl = ll_md_blocking_ast,
		.ei_cb_cp = ldlm_completion_ast,
		.ei_cb_bl = &ll_md_blocking_ast,
		.ei_cb_cp = &ldlm_completion_ast,
	};
	int rc;

@@ -3789,8 +3787,7 @@ int ll_layout_refresh(struct inode *inode, __u32 *gen)
			  ll_get_fsname(inode->i_sb, NULL, 0),
			  PFID(&lli->lli_fid), inode);

	rc = md_enqueue(sbi->ll_md_exp, &einfo, &it, op_data, &lockh,
			NULL, 0, NULL, 0);
	rc = md_enqueue(sbi->ll_md_exp, &einfo, NULL, &it, op_data, &lockh, 0);
	ptlrpc_req_finished(it.it_request);
	it.it_request = NULL;

+2 −2
Original line number Diff line number Diff line
@@ -562,8 +562,8 @@ static struct dentry *ll_lookup_it(struct inode *parent, struct dentry *dentry,
	if (!IS_POSIXACL(parent) || !exp_connect_umask(ll_i2mdexp(parent)))
		it->it_create_mode &= ~current_umask();

	rc = md_intent_lock(ll_i2mdexp(parent), op_data, NULL, 0, it,
			    lookup_flags, &req, ll_md_blocking_ast, 0);
	rc = md_intent_lock(ll_i2mdexp(parent), op_data, it, &req,
			    &ll_md_blocking_ast, 0);
	ll_finish_md_op_data(op_data);
	if (rc < 0) {
		retval = ERR_PTR(rc);
+7 −5
Original line number Diff line number Diff line
@@ -270,10 +270,12 @@ static int ll_xattr_find_get_lock(struct inode *inode,
	struct lustre_handle lockh = { 0 };
	struct md_op_data *op_data;
	struct ll_inode_info *lli = ll_i2info(inode);
	struct ldlm_enqueue_info einfo = { .ei_type = LDLM_IBITS,
	struct ldlm_enqueue_info einfo = {
		.ei_type = LDLM_IBITS,
		.ei_mode = it_to_lock_mode(oit),
					   .ei_cb_bl = ll_md_blocking_ast,
					   .ei_cb_cp = ldlm_completion_ast };
		.ei_cb_bl = &ll_md_blocking_ast,
		.ei_cb_cp = &ldlm_completion_ast,
	};
	struct ll_sb_info *sbi = ll_i2sbi(inode);
	struct obd_export *exp = sbi->ll_md_exp;
	int rc;
@@ -304,7 +306,7 @@ static int ll_xattr_find_get_lock(struct inode *inode,

	op_data->op_valid = OBD_MD_FLXATTR | OBD_MD_FLXATTRLS;

	rc = md_enqueue(exp, &einfo, oit, op_data, &lockh, NULL, 0, NULL, 0);
	rc = md_enqueue(exp, &einfo, NULL, oit, op_data, &lockh, 0);
	ll_finish_md_op_data(op_data);

	if (rc < 0) {
Loading