Commit | Line | Data |
---|---|---|
d7e09d03 PT |
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) 2007, 2010, Oracle and/or its affiliates. All rights reserved. | |
28 | * Use is subject to license terms. | |
29 | * | |
30 | * Copyright (c) 2011, 2013, 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 | ||
37 | #ifndef __LINUX_FLD_H | |
38 | #define __LINUX_FLD_H | |
39 | ||
40 | /** \defgroup fld fld | |
41 | * | |
42 | * @{ | |
43 | */ | |
44 | ||
1accaadf | 45 | #include "lustre/lustre_idl.h" |
9fdaf8c0 | 46 | #include "../../include/linux/libcfs/libcfs.h" |
d7e09d03 PT |
47 | |
48 | struct lu_client_fld; | |
49 | struct lu_server_fld; | |
50 | struct lu_fld_hash; | |
51 | struct fld_cache; | |
52 | ||
53 | extern const struct dt_index_features fld_index_features; | |
54 | extern const char fld_index_name[]; | |
55 | ||
56 | /* | |
57 | * FLD (Fid Location Database) interface. | |
58 | */ | |
59 | enum { | |
60 | LUSTRE_CLI_FLD_HASH_DHT = 0, | |
61 | LUSTRE_CLI_FLD_HASH_RRB | |
62 | }; | |
63 | ||
64 | ||
65 | struct lu_fld_target { | |
66 | struct list_head ft_chain; | |
67 | struct obd_export *ft_exp; | |
68 | struct lu_server_fld *ft_srv; | |
69 | __u64 ft_idx; | |
70 | }; | |
71 | ||
72 | struct lu_server_fld { | |
73 | /** | |
74 | * Fld dir proc entry. */ | |
b59fe845 | 75 | struct proc_dir_entry *lsf_proc_dir; |
d7e09d03 PT |
76 | |
77 | /** | |
78 | * /fld file object device */ | |
79 | struct dt_object *lsf_obj; | |
80 | ||
81 | /** | |
82 | * super sequence controller export, needed to forward fld | |
83 | * lookup request. */ | |
84 | struct obd_export *lsf_control_exp; | |
85 | ||
86 | /** | |
87 | * Client FLD cache. */ | |
88 | struct fld_cache *lsf_cache; | |
89 | ||
90 | /** | |
91 | * Protect index modifications */ | |
92 | struct mutex lsf_lock; | |
93 | ||
94 | /** | |
95 | * Fld service name in form "fld-srv-lustre-MDTXXX" */ | |
37604896 | 96 | char lsf_name[LUSTRE_MDT_MAXNAMELEN]; |
d7e09d03 PT |
97 | |
98 | }; | |
99 | ||
100 | struct lu_client_fld { | |
101 | /** | |
102 | * Client side proc entry. */ | |
b59fe845 | 103 | struct proc_dir_entry *lcf_proc_dir; |
d7e09d03 PT |
104 | |
105 | /** | |
106 | * List of exports client FLD knows about. */ | |
107 | struct list_head lcf_targets; | |
108 | ||
109 | /** | |
110 | * Current hash to be used to chose an export. */ | |
111 | struct lu_fld_hash *lcf_hash; | |
112 | ||
113 | /** | |
114 | * Exports count. */ | |
115 | int lcf_count; | |
116 | ||
117 | /** | |
118 | * Lock protecting exports list and fld_hash. */ | |
119 | spinlock_t lcf_lock; | |
120 | ||
121 | /** | |
122 | * Client FLD cache. */ | |
123 | struct fld_cache *lcf_cache; | |
124 | ||
125 | /** | |
126 | * Client fld proc entry name. */ | |
37604896 | 127 | char lcf_name[LUSTRE_MDT_MAXNAMELEN]; |
d7e09d03 | 128 | |
d7e09d03 PT |
129 | int lcf_flags; |
130 | }; | |
131 | ||
d7e09d03 PT |
132 | /* Client methods */ |
133 | int fld_client_init(struct lu_client_fld *fld, | |
134 | const char *prefix, int hash); | |
135 | ||
136 | void fld_client_fini(struct lu_client_fld *fld); | |
137 | ||
138 | void fld_client_flush(struct lu_client_fld *fld); | |
139 | ||
114acca8 | 140 | int fld_client_lookup(struct lu_client_fld *fld, u64 seq, u32 *mds, |
d7e09d03 PT |
141 | __u32 flags, const struct lu_env *env); |
142 | ||
143 | int fld_client_create(struct lu_client_fld *fld, | |
144 | struct lu_seq_range *range, | |
145 | const struct lu_env *env); | |
146 | ||
114acca8 | 147 | int fld_client_delete(struct lu_client_fld *fld, u64 seq, |
d7e09d03 PT |
148 | const struct lu_env *env); |
149 | ||
150 | int fld_client_add_target(struct lu_client_fld *fld, | |
151 | struct lu_fld_target *tar); | |
152 | ||
153 | int fld_client_del_target(struct lu_client_fld *fld, | |
154 | __u64 idx); | |
155 | ||
156 | void fld_client_proc_fini(struct lu_client_fld *fld); | |
157 | ||
158 | /** @} fld */ | |
159 | ||
160 | #endif |