Whamcloud - gitweb
LU-6142 lnet: use list_first_entry() where appropriate.
[fs/lustre-release.git] / lnet / selftest / console.c
index d2863b0..583536a 100644 (file)
@@ -222,8 +222,7 @@ lstcon_group_alloc(char *name, struct lstcon_group **grpp)
        return 0;
 }
 
-static void
-lstcon_group_addref(struct lstcon_group *grp)
+void lstcon_group_addref(struct lstcon_group *grp)
 {
        grp->grp_ref++;
 }
@@ -243,8 +242,7 @@ lstcon_group_drain(struct lstcon_group *grp, int keep)
        }
 }
 
-static void
-lstcon_group_decref(struct lstcon_group *grp)
+void lstcon_group_decref(struct lstcon_group *grp)
 {
        int i;
 
@@ -263,8 +261,7 @@ lstcon_group_decref(struct lstcon_group *grp)
                                  grp_ndl_hash[LST_NODE_HASHSIZE]));
 }
 
-static int
-lstcon_group_find(const char *name, struct lstcon_group **grpp)
+int lstcon_group_find(const char *name, struct lstcon_group **grpp)
 {
        struct lstcon_group *grp;
 
@@ -327,8 +324,8 @@ lstcon_group_move(struct lstcon_group *old, struct lstcon_group *new)
        struct lstcon_ndlink *ndl;
 
        while (!list_empty(&old->grp_ndl_list)) {
-               ndl = list_entry(old->grp_ndl_list.next,
-                                struct lstcon_ndlink, ndl_link);
+               ndl = list_first_entry(&old->grp_ndl_list,
+                                      struct lstcon_ndlink, ndl_link);
                lstcon_group_ndlink_move(old, new, ndl);
        }
 }
@@ -715,24 +712,6 @@ lstcon_group_refresh(char *name, struct list_head __user *result_up)
         return rc;
 }
 
-int
-lstcon_group_list(int index, int len, char __user *name_up)
-{
-       struct lstcon_group *grp;
-
-       LASSERT(index >= 0);
-       LASSERT(name_up != NULL);
-
-       list_for_each_entry(grp, &console_session.ses_grp_list, grp_link) {
-               if (index-- == 0) {
-                       return copy_to_user(name_up, grp->grp_name, len) ?
-                                           -EFAULT : 0;
-               }
-       }
-
-       return -ENOENT;
-}
-
 static int
 lstcon_nodes_getent(struct list_head *head, int *index_p,
                    int *count_p, struct lstcon_node_ent __user *dents_up)
@@ -1090,8 +1069,8 @@ lstcon_batch_destroy(struct lstcon_batch *bat)
        list_del(&bat->bat_link);
 
        while (!list_empty(&bat->bat_test_list)) {
-               test = list_entry(bat->bat_test_list.next,
-                                 struct lstcon_test, tes_link);
+               test = list_first_entry(&bat->bat_test_list,
+                                       struct lstcon_test, tes_link);
                LASSERT(list_empty(&test->tes_trans_list));
 
                list_del(&test->tes_link);
@@ -1106,16 +1085,16 @@ lstcon_batch_destroy(struct lstcon_batch *bat)
        LASSERT(list_empty(&bat->bat_trans_list));
 
        while (!list_empty(&bat->bat_cli_list)) {
-               ndl = list_entry(bat->bat_cli_list.next,
-                                struct lstcon_ndlink, ndl_link);
+               ndl = list_first_entry(&bat->bat_cli_list,
+                                      struct lstcon_ndlink, ndl_link);
                list_del_init(&ndl->ndl_link);
 
                lstcon_ndlink_release(ndl);
        }
 
        while (!list_empty(&bat->bat_srv_list)) {
-               ndl = list_entry(bat->bat_srv_list.next,
-                                struct lstcon_ndlink, ndl_link);
+               ndl = list_first_entry(&bat->bat_srv_list,
+                                      struct lstcon_ndlink, ndl_link);
                list_del_init(&ndl->ndl_link);
 
                lstcon_ndlink_release(ndl);
@@ -1684,16 +1663,21 @@ lstcon_nodes_debug(int timeout, int count,
 }
 
 int
-lstcon_session_match(struct lst_sid sid)
+lstcon_session_match(struct lst_sid id)
 {
-        return (console_session.ses_id.ses_nid   == sid.ses_nid &&
-                console_session.ses_id.ses_stamp == sid.ses_stamp) ?  1: 0;
+       struct lst_session_id sid;
+
+       sid.ses_stamp = id.ses_stamp;
+       lnet_nid4_to_nid(id.ses_nid, &sid.ses_nid);
+
+       return (nid_same(&console_session.ses_id.ses_nid, &sid.ses_nid) &&
+               console_session.ses_id.ses_stamp == sid.ses_stamp) ?  1 : 0;
 }
 
 static void
-lstcon_new_session_id(struct lst_sid *sid)
+lstcon_new_session_id(struct lst_session_id *sid)
 {
-       struct lnet_process_id id;
+       struct lnet_processid id;
 
        LASSERT(console_session.ses_state == LST_SESSION_NONE);
 
@@ -1704,7 +1688,7 @@ lstcon_new_session_id(struct lst_sid *sid)
 
 int
 lstcon_session_new(char *name, int key, unsigned feats,
-                  int timeout, int force, struct lst_sid __user *sid_up)
+                  int timeout, int force)
 {
         int     rc = 0;
         int     i;
@@ -1736,7 +1720,6 @@ lstcon_session_new(char *name, int key, unsigned feats,
        lstcon_new_session_id(&console_session.ses_id);
 
        console_session.ses_key     = key;
-       console_session.ses_state   = LST_SESSION_ACTIVE;
        console_session.ses_force   = !!force;
        console_session.ses_features = feats;
        console_session.ses_feats_updated = 0;
@@ -1762,52 +1745,12 @@ lstcon_session_new(char *name, int key, unsigned feats,
                 return rc;
         }
 
-       if (copy_to_user(sid_up, &console_session.ses_id,
-                            sizeof(struct lst_sid)) == 0)
-                return rc;
-
-        lstcon_session_end();
+       console_session.ses_state = LST_SESSION_ACTIVE;
 
-        return -EFAULT;
-}
-
-int
-lstcon_session_info(struct lst_sid __user *sid_up, int __user *key_up,
-                   unsigned __user *featp,
-                   struct lstcon_ndlist_ent __user *ndinfo_up,
-                   char __user *name_up, int len)
-{
-       struct lstcon_ndlist_ent *entp;
-       struct lstcon_ndlink *ndl;
-       int rc = 0;
-
-        if (console_session.ses_state != LST_SESSION_ACTIVE)
-                return -ESRCH;
-
-        LIBCFS_ALLOC(entp, sizeof(*entp));
-        if (entp == NULL)
-                return -ENOMEM;
-
-       list_for_each_entry(ndl, &console_session.ses_ndl_list, ndl_link)
-               LST_NODE_STATE_COUNTER(ndl->ndl_node, entp);
-
-       if (copy_to_user(sid_up, &console_session.ses_id,
-                        sizeof(struct lst_sid)) ||
-           copy_to_user(key_up, &console_session.ses_key,
-                            sizeof(*key_up)) ||
-           copy_to_user(featp, &console_session.ses_features,
-                            sizeof(*featp)) ||
-           copy_to_user(ndinfo_up, entp, sizeof(*entp)) ||
-           copy_to_user(name_up, console_session.ses_name, len))
-                rc = -EFAULT;
-
-        LIBCFS_FREE(entp, sizeof(*entp));
-
-        return rc;
+       return rc;
 }
 
-int
-lstcon_session_end(void)
+int lstcon_session_end(void)
 {
        struct lstcon_rpc_trans *trans;
        struct lstcon_group *grp;
@@ -1844,16 +1787,16 @@ lstcon_session_end(void)
 
        /* destroy all batches */
        while (!list_empty(&console_session.ses_bat_list)) {
-               bat = list_entry(console_session.ses_bat_list.next,
-                                struct lstcon_batch, bat_link);
+               bat = list_first_entry(&console_session.ses_bat_list,
+                                      struct lstcon_batch, bat_link);
 
                lstcon_batch_destroy(bat);
        }
 
        /* destroy all groups */
        while (!list_empty(&console_session.ses_grp_list)) {
-               grp = list_entry(console_session.ses_grp_list.next,
-                                struct lstcon_group, grp_link);
+               grp = list_first_entry(&console_session.ses_grp_list,
+                                      struct lstcon_group, grp_link);
                LASSERT(grp->grp_ref == 1);
 
                lstcon_group_decref(grp);
@@ -1915,9 +1858,10 @@ lstcon_acceptor_handle(struct srpc_server_rpc *rpc)
 
        mutex_lock(&console_session.ses_mutex);
 
-        jrep->join_sid = console_session.ses_id;
+       jrep->join_sid.ses_stamp = console_session.ses_id.ses_stamp;
+       jrep->join_sid.ses_nid = lnet_nid_to_nid4(&console_session.ses_id.ses_nid);
 
-        if (console_session.ses_id.ses_nid == LNET_NID_ANY) {
+       if (LNET_NID_IS_ANY(&console_session.ses_id.ses_nid)) {
                 jrep->join_status = ESRCH;
                 goto out;
         }
@@ -2049,13 +1993,20 @@ lstcon_console_init(void)
                 goto out;
         }
 
+       rc = lstcon_init_netlink();
+       if (rc < 0)
+               goto out;
+
        rc = blocking_notifier_chain_register(&libcfs_ioctl_list,
                                              &lstcon_ioctl_handler);
-       if (rc == 0) {
-               lstcon_rpc_module_init();
-               return 0;
+       if (rc < 0) {
+               lstcon_fini_netlink();
+               goto out;
        }
 
+       lstcon_rpc_module_init();
+       return 0;
+
 out:
        srpc_shutdown_service(&lstcon_acceptor_service);
        srpc_remove_service(&lstcon_acceptor_service);
@@ -2074,6 +2025,7 @@ lstcon_console_fini(void)
 
        blocking_notifier_chain_unregister(&libcfs_ioctl_list,
                                           &lstcon_ioctl_handler);
+       lstcon_fini_netlink();
 
        mutex_lock(&console_session.ses_mutex);