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

Commit 049e215e authored by wang di's avatar wang di Committed by Greg Kroah-Hartman
Browse files

staging: lustre: obd: implement md_read_page



This patch adds md_read_page which is a new more
flexiable api that will replace md_readpage.

Signed-off-by: default avatarwang di <di.wang@intel.com>
Reviewed-on: http://review.whamcloud.com/10761
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4906


Reviewed-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Reviewed-by: default avatarAndreas Dilger <andreas.dilger@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 a043a102
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -830,6 +830,15 @@ struct md_op_data {
	struct lustre_handle	op_lease_handle;
};

#define op_stripe_offset       op_ioepoch
#define op_max_pages           op_valid

struct md_callback {
	int (*md_blocking_ast)(struct ldlm_lock *lock,
			       struct ldlm_lock_desc *desc,
			       void *data, int flag);
};

enum op_cli_flags {
	CLI_SET_MEA	= 1 << 0,
	CLI_RM_ENTRY	= 1 << 1,
@@ -1039,7 +1048,9 @@ struct md_ops {
		    struct ptlrpc_request **);
	int (*readpage)(struct obd_export *, struct md_op_data *,
			struct page **, struct ptlrpc_request **);

	int (*read_page)(struct obd_export *, struct md_op_data *,
			 struct md_callback *cb_op, __u64 hash_offset,
			 struct page **ppage);
	int (*unlink)(struct obd_export *, struct md_op_data *,
		      struct ptlrpc_request **);

+15 −0
Original line number Diff line number Diff line
@@ -1535,6 +1535,21 @@ static inline int md_readpage(struct obd_export *exp, struct md_op_data *opdata,
	return rc;
}

static inline int md_read_page(struct obd_export *exp,
			       struct md_op_data *op_data,
			       struct md_callback *cb_op,
			       __u64  hash_offset,
			       struct page **ppage)
{
	int rc;

	EXP_CHECK_MD_OP(exp, read_page);
	EXP_MD_COUNTER_INCREMENT(exp, read_page);
	rc = MDP(exp->exp_obd, read_page)(exp, op_data, cb_op, hash_offset,
					  ppage);
	return rc;
}

static inline int md_unlink(struct obd_export *exp, struct md_op_data *op_data,
			    struct ptlrpc_request **request)
{