Commit 9bcb80cb authored by James Simmons's avatar James Simmons Committed by Greg Kroah-Hartman
Browse files

staging: lustre: lnet: change lnet_handle_md_t to proper struct



Change lnet_handle_md_t from a typedef of another typedef into
a proper stand alone structure. Create the inline functions
LNetInvalidateMDHandle and LNetMDHandleIsInvalid to handle this
new piece of data.

Signed-off-by: default avatarJames Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/20831


Reviewed-by: default avatarOlaf Weber <olaf@sgi.com>
Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: default avatarDmitry Eremin <dmitry.eremin@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 48be378d
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -128,13 +128,13 @@ int LNetMEUnlink(lnet_handle_me_t current_in);
int LNetMDAttach(lnet_handle_me_t  current_in,
		 lnet_md_t	   md_in,
		 lnet_unlink_t     unlink_in,
		 lnet_handle_md_t *handle_out);
		 struct lnet_handle_md *md_handle_out);

int LNetMDBind(lnet_md_t	   md_in,
	       lnet_unlink_t       unlink_in,
	       lnet_handle_md_t   *handle_out);
	       struct lnet_handle_md *md_handle_out);

int LNetMDUnlink(lnet_handle_md_t md_in);
int LNetMDUnlink(struct lnet_handle_md md_in);
/** @} lnet_md */

/** \defgroup lnet_eq Events and event queues
@@ -180,7 +180,7 @@ int LNetEQPoll(struct lnet_handle_eq *eventqs_in,
 * @{
 */
int LNetPut(lnet_nid_t	      self,
	    lnet_handle_md_t  md_in,
	    struct lnet_handle_md md_in,
	    lnet_ack_req_t    ack_req_in,
	    lnet_process_id_t target_in,
	    unsigned int      portal_in,
@@ -189,7 +189,7 @@ int LNetPut(lnet_nid_t self,
	    __u64	      hdr_data_in);

int LNetGet(lnet_nid_t	      self,
	    lnet_handle_md_t  md_in,
	    struct lnet_handle_md md_in,
	    lnet_process_id_t target_in,
	    unsigned int      portal_in,
	    __u64	      match_bits_in,
+2 −2
Original line number Diff line number Diff line
@@ -301,13 +301,13 @@ lnet_handle2eq(struct lnet_handle_eq *handle)
}

static inline void
lnet_md2handle(lnet_handle_md_t *handle, lnet_libmd_t *md)
lnet_md2handle(struct lnet_handle_md *handle, lnet_libmd_t *md)
{
	handle->cookie = md->md_lh.lh_cookie;
}

static inline lnet_libmd_t *
lnet_handle2md(lnet_handle_md_t *handle)
lnet_handle2md(struct lnet_handle_md *handle)
{
	/* ALWAYS called with resource lock held */
	lnet_libhandle_t *lh;
+2 −2
Original line number Diff line number Diff line
@@ -299,7 +299,7 @@ typedef struct lnet_ni {
typedef struct {
	/* chain on the_lnet.ln_zombie_rcd or ln_deathrow_rcd */
	struct list_head	 rcd_list;
	lnet_handle_md_t	 rcd_mdh;	/* ping buffer MD */
	struct lnet_handle_md	 rcd_mdh;	/* ping buffer MD */
	struct lnet_peer	*rcd_gateway;	/* reference to gateway */
	struct lnet_ping_info	*rcd_pinginfo;	/* ping buffer */
} lnet_rc_data_t;
@@ -597,7 +597,7 @@ typedef struct {
	/* percpt router buffer pools */
	lnet_rtrbufpool_t		**ln_rtrpools;

	lnet_handle_md_t		  ln_ping_target_md;
	struct lnet_handle_md		  ln_ping_target_md;
	struct lnet_handle_eq		  ln_ping_target_eq;
	struct lnet_ping_info		 *ln_ping_info;

+23 −2
Original line number Diff line number Diff line
@@ -284,7 +284,6 @@ typedef struct {
	__u64	 cookie;
} lnet_handle_any_t;

typedef lnet_handle_any_t lnet_handle_md_t;
typedef lnet_handle_any_t lnet_handle_me_t;

#define LNET_WIRE_HANDLE_COOKIE_NONE   (-1)
@@ -339,6 +338,28 @@ static inline int LNetEQHandleIsInvalid(struct lnet_handle_eq h)
	return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
}

struct lnet_handle_md {
	u64	cookie;
};

/**
 * Invalidate md handle @h.
 */
static inline void LNetInvalidateMDHandle(struct lnet_handle_md *h)
{
	h->cookie = LNET_WIRE_HANDLE_COOKIE_NONE;
}

/**
 * Check whether eq handle @h is invalid.
 *
 * @return 1 if handle is invalid, 0 if valid.
 */
static inline int LNetMDHandleIsInvalid(struct lnet_handle_md h)
{
	return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
}

/**
 * Global process ID.
 */
@@ -611,7 +632,7 @@ typedef struct {
	 * The handle to the MD associated with the event. The handle may be
	 * invalid if the MD has been unlinked.
	 */
	lnet_handle_md_t	md_handle;
	struct lnet_handle_md	md_handle;
	/**
	 * A snapshot of the state of the MD immediately after the event has
	 * been processed. In particular, the threshold field in md will
+12 −9
Original line number Diff line number Diff line
@@ -896,7 +896,8 @@ lnet_ping_event_handler(lnet_event_t *event)
}

static int
lnet_ping_info_setup(struct lnet_ping_info **ppinfo, lnet_handle_md_t *md_handle,
lnet_ping_info_setup(struct lnet_ping_info **ppinfo,
		     struct lnet_handle_md *md_handle,
		     int ni_count, bool set_eq)
{
	lnet_process_id_t id = {LNET_NID_ANY, LNET_PID_ANY};
@@ -961,12 +962,13 @@ lnet_ping_info_setup(struct lnet_ping_info **ppinfo, lnet_handle_md_t *md_handle
}

static void
lnet_ping_md_unlink(struct lnet_ping_info *pinfo, lnet_handle_md_t *md_handle)
lnet_ping_md_unlink(struct lnet_ping_info *pinfo,
		    struct lnet_handle_md *md_handle)
{
	sigset_t blocked = cfs_block_allsigs();

	LNetMDUnlink(*md_handle);
	LNetInvalidateHandle(md_handle);
	LNetInvalidateMDHandle(md_handle);

	/* NB md could be busy; this just starts the unlink */
	while (pinfo->pi_features != LNET_PING_FEAT_INVAL) {
@@ -1003,10 +1005,11 @@ lnet_ping_info_install_locked(struct lnet_ping_info *ping_info)
}

static void
lnet_ping_target_update(struct lnet_ping_info *pinfo, lnet_handle_md_t md_handle)
lnet_ping_target_update(struct lnet_ping_info *pinfo,
			struct lnet_handle_md md_handle)
{
	struct lnet_ping_info *old_pinfo = NULL;
	lnet_handle_md_t old_md;
	struct lnet_handle_md old_md;

	/* switch the NIs to point to the new ping info created */
	lnet_net_lock(LNET_LOCK_EX);
@@ -1497,7 +1500,7 @@ LNetNIInit(lnet_pid_t requested_pid)
	int rc;
	int ni_count;
	struct lnet_ping_info *pinfo;
	lnet_handle_md_t md_handle;
	struct lnet_handle_md md_handle;
	struct list_head net_head;

	INIT_LIST_HEAD(&net_head);
@@ -1755,7 +1758,7 @@ lnet_dyn_add_ni(lnet_pid_t requested_pid, struct lnet_ioctl_config_data *conf)
{
	char *nets = conf->cfg_config_u.cfg_net.net_intf;
	struct lnet_ping_info *pinfo;
	lnet_handle_md_t md_handle;
	struct lnet_handle_md md_handle;
	struct lnet_ni *ni;
	struct list_head net_head;
	lnet_remotenet_t *rnet;
@@ -1835,7 +1838,7 @@ lnet_dyn_del_ni(__u32 net)
{
	lnet_ni_t *ni;
	struct lnet_ping_info *pinfo;
	lnet_handle_md_t md_handle;
	struct lnet_handle_md md_handle;
	int rc;

	/* don't allow userspace to shutdown the LOLND */
@@ -2139,7 +2142,7 @@ static int lnet_ping(lnet_process_id_t id, int timeout_ms,
		     lnet_process_id_t __user *ids, int n_ids)
{
	struct lnet_handle_eq eqh;
	lnet_handle_md_t mdh;
	struct lnet_handle_md mdh;
	lnet_event_t event;
	lnet_md_t md = { NULL };
	int which;
Loading