blob: 21a93c73756a2b778ac757daca5ec35861a77a32 [file] [log] [blame]
Peng Taod7e09d02013-05-02 16:46:55 +08001/*
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
Oleg Drokin6a5b99a2016-06-14 23:33:40 -040018 * http://www.gnu.org/licenses/gpl-2.0.html
Peng Taod7e09d02013-05-02 16:46:55 +080019 *
Peng Taod7e09d02013-05-02 16:46:55 +080020 * GPL HEADER END
21 */
22/*
23 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
24 * Use is subject to license terms.
25 *
Andreas Dilger1dc563a2015-11-08 18:09:37 -050026 * Copyright (c) 2012, 2015, Intel Corporation.
Peng Taod7e09d02013-05-02 16:46:55 +080027 */
28/*
29 * This file is part of Lustre, http://www.lustre.org/
30 * Lustre is a trademark of Sun Microsystems, Inc.
31 */
32
33#ifndef __LLOG_INTERNAL_H__
34#define __LLOG_INTERNAL_H__
35
Greg Kroah-Hartman610f7372014-07-11 22:15:24 -070036#include "../include/lustre_log.h"
Peng Taod7e09d02013-05-02 16:46:55 +080037
38struct llog_process_info {
39 struct llog_handle *lpi_loghandle;
40 llog_cb_t lpi_cb;
41 void *lpi_cbdata;
42 void *lpi_catdata;
43 int lpi_rc;
44 struct completion lpi_completion;
45 const struct lu_env *lpi_env;
46
47};
48
49struct llog_thread_info {
50 struct lu_attr lgi_attr;
51 struct lu_fid lgi_fid;
Peng Taod7e09d02013-05-02 16:46:55 +080052 struct lu_buf lgi_buf;
53 loff_t lgi_off;
54 struct llog_rec_hdr lgi_lrh;
55 struct llog_rec_tail lgi_tail;
56};
57
58extern struct lu_context_key llog_thread_key;
59
Peng Taod7e09d02013-05-02 16:46:55 +080060int llog_info_init(void);
61void llog_info_fini(void);
62
63void llog_handle_get(struct llog_handle *loghandle);
64void llog_handle_put(struct llog_handle *loghandle);
Peng Taod7e09d02013-05-02 16:46:55 +080065int class_config_dump_handler(const struct lu_env *env,
66 struct llog_handle *handle,
67 struct llog_rec_hdr *rec, void *data);
Peng Taod7e09d02013-05-02 16:46:55 +080068int llog_process_or_fork(const struct lu_env *env,
69 struct llog_handle *loghandle,
70 llog_cb_t cb, void *data, void *catdata, bool fork);
71int llog_cat_cleanup(const struct lu_env *env, struct llog_handle *cathandle,
72 struct llog_handle *loghandle, int index);
Henri Doreauc9fe1f7f2016-09-18 16:37:47 -040073
74static inline struct llog_rec_hdr *llog_rec_hdr_next(struct llog_rec_hdr *rec)
75{
76 return (struct llog_rec_hdr *)((char *)rec + rec->lrh_len);
77}
Peng Taod7e09d02013-05-02 16:46:55 +080078#endif