1/*
2 * GPL HEADER START
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 only,
8 * as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 * General Public License version 2 for more details (a copy is included
14 * in the LICENSE file that accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License
17 * version 2 along with this program; If not, see
18 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 *
24 * GPL HEADER END
25 */
26/*
27 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
28 * Use is subject to license terms.
29 *
30 * Copyright (c) 2012, Intel Corporation.
31 */
32/*
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
35 *
36 * lustre/ptlrpc/llog_net.c
37 *
38 * OST<->MDS recovery logging infrastructure.
39 *
40 * Invariants in implementation:
41 * - we do not share logs among different OST<->MDS connections, so that
42 *   if an OST or MDS fails it need only look at log(s) relevant to itself
43 *
44 * Author: Andreas Dilger <adilger@clusterfs.com>
45 */
46
47#define DEBUG_SUBSYSTEM S_LOG
48
49#include "../../include/linux/libcfs/libcfs.h"
50
51#include "../include/obd_class.h"
52#include "../include/lustre_log.h"
53#include <linux/list.h>
54
55int llog_initiator_connect(struct llog_ctxt *ctxt)
56{
57	struct obd_import *new_imp;
58
59	LASSERT(ctxt);
60	new_imp = ctxt->loc_obd->u.cli.cl_import;
61	LASSERTF(ctxt->loc_imp == NULL || ctxt->loc_imp == new_imp,
62		 "%p - %p\n", ctxt->loc_imp, new_imp);
63	mutex_lock(&ctxt->loc_mutex);
64	if (ctxt->loc_imp != new_imp) {
65		if (ctxt->loc_imp)
66			class_import_put(ctxt->loc_imp);
67		ctxt->loc_imp = class_import_get(new_imp);
68	}
69	mutex_unlock(&ctxt->loc_mutex);
70	return 0;
71}
72EXPORT_SYMBOL(llog_initiator_connect);
73