From 3ee98a5d9ab7a8bae7bf7ab45dc500b85d848102 Mon Sep 17 00:00:00 2001 From: rread Date: Thu, 20 Feb 2003 06:53:01 +0000 Subject: [PATCH] - completing the move of UUID registration from portals to lustre. Need to merge with multinet to finish this. --- lustre/ptlrpc/lustre_peer.c | 179 -------------------------------------------- 1 file changed, 179 deletions(-) delete mode 100644 lustre/ptlrpc/lustre_peer.c diff --git a/lustre/ptlrpc/lustre_peer.c b/lustre/ptlrpc/lustre_peer.c deleted file mode 100644 index 2876aa1..0000000 --- a/lustre/ptlrpc/lustre_peer.c +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * - * Copyright (c) 2002, 2003 Cluster File Systems, Inc. - * - * This file is part of Lustre, http://www.lustre.org. - * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * Lustre 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 for more details. - * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#define DEBUG_SUBSYSTEM S_RPC - -#ifdef __KERNEL__ -# include -# include -# include -#else -# include -#endif -#include -#include -#include -#include -#include -#include -#include - -struct uuid_nid_data { - struct list_head head; - char *uuid; - __u32 nid; - __u32 nal; - ptl_handle_ni_t ni; -}; - -/* FIXME: This should probably become more elegant than a global linked list */ -static struct list_head g_uuid_list; -static spinlock_t g_uuid_lock; - -void ptlrpc_init_uuidlist(void) -{ - INIT_LIST_HEAD(&g_uuid_list); - spin_lock_init(&g_uuid_lock); -} - -void ptlrpc_exit_uuidlist(void) -{ - struct list_head *tmp, *n; - - /* Module going => sole user => don't need to lock g_uuid_list */ - list_for_each_safe(tmp, n, &g_uuid_list) { - struct uuid_nid_data *data = - list_entry(tmp, struct uuid_nid_data, head); - - PORTAL_FREE(data->uuid, strlen(data->uuid) + 1); - PORTAL_FREE(data, sizeof(*data)); - } -} - -int lustre_uuid_to_peer(char *uuid, struct lustre_peer *peer) -{ - struct list_head *tmp; - - spin_lock (&g_uuid_lock); - - list_for_each(tmp, &g_uuid_list) { - struct uuid_nid_data *data = - list_entry(tmp, struct uuid_nid_data, head); - - if (strcmp(data->uuid, uuid) == 0) { - peer->peer_nid = data->nid; - peer->peer_ni = data->ni; - - spin_unlock (&g_uuid_lock); - return 0; - } - } - - spin_unlock (&g_uuid_lock); - return -1; -} - -/* delete only one entry if uuid is specified, otherwise delete all */ -static int lustre_add_uuid(char *uuid, __u64 nid, __u32 nal) -{ - const ptl_handle_ni_t *nip; - struct uuid_nid_data *data; - int rc; - int nob = strnlen (uuid, PAGE_SIZE) + 1; - - if (nob > PAGE_SIZE) - return -EINVAL; - - nip = kportal_get_ni (nal); - if (nip == NULL) { - CERROR("get_ni failed: is the NAL module loaded?\n"); - return -EIO; - } - - rc = -ENOMEM; - PORTAL_ALLOC(data, sizeof(*data)); - if (data == NULL) - goto fail_0; - - PORTAL_ALLOC(data->uuid, nob); - if (data == NULL) - goto fail_1; - - memcpy(data->uuid, uuid, nob); - data->nid = nid; - data->nal = nal; - data->ni = *nip; - - spin_lock (&g_uuid_lock); - - list_add(&data->head, &g_uuid_list); - - spin_unlock (&g_uuid_lock); - - return 0; - - fail_1: - PORTAL_FREE (data, sizeof (*data)); - fail_0: - kportal_put_ni (nal); - return (rc); -} - -static int lustre_del_uuid (char *uuid) -{ - struct list_head deathrow; - struct list_head *tmp; - struct list_head *n; - struct uuid_nid_data *data; - - INIT_LIST_HEAD (&deathrow); - - spin_lock (&g_uuid_lock); - - list_for_each_safe(tmp, n, &g_uuid_list) { - data = list_entry(tmp, struct uuid_nid_data, head); - - if (uuid == NULL || strcmp(data->uuid, uuid) == 0) { - list_del (&data->head); - list_add (&data->head, &deathrow); - if (uuid) - break; - } - } - - spin_unlock (&g_uuid_lock); - - if (list_empty (&deathrow)) - return -EINVAL; - - do { - data = list_entry(deathrow.next, struct uuid_nid_data, head); - - list_del (&data->head); - - kportal_put_ni (data->nal); - PORTAL_FREE(data->uuid, strlen(data->uuid) + 1); - PORTAL_FREE(data, sizeof(*data)); - } while (!list_empty (&deathrow)); - - return 0; -} -- 1.8.3.1