1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Copyright (C) 2002 Cluster File Systems, Inc.
6 * This file is part of Lustre, http://www.lustre.org.
8 * Lustre is free software; you can redistribute it and/or
9 * modify it under the terms of version 2 of the GNU General Public
10 * License as published by the Free Software Foundation.
12 * Lustre is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Lustre; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 #ifndef OBD_FILTER_DEVICENAME
27 #define OBD_FILTER_DEVICENAME "obdfilter"
30 #define FILTER_LR_SERVER_SIZE 512
32 #define FILTER_LR_CLIENT_START 8192
33 #define FILTER_LR_CLIENT_SIZE 128
35 #define FILTER_SUBDIR_COUNT 32 /* set to zero for no subdirs */
37 #define FILTER_MOUNT_RECOV 2
38 #define FILTER_RECOVERY_TIMEOUT (obd_timeout * 5 * HZ / 2) /* *waves hands* */
40 /* Data stored per server at the head of the last_rcvd file. In le32 order. */
41 struct filter_server_data {
42 __u8 fsd_uuid[37]; /* server UUID */
43 __u8 fsd_uuid_padding[3]; /* unused */
44 __u64 fsd_last_objid; /* last created object ID */
45 __u64 fsd_last_rcvd; /* last completed transaction ID */
46 __u64 fsd_mount_count; /* FILTER incarnation number */
47 __u32 fsd_feature_compat; /* compatible feature flags */
48 __u32 fsd_feature_rocompat;/* read-only compatible feature flags */
49 __u32 fsd_feature_incompat;/* incompatible feature flags */
50 __u32 fsd_server_size; /* size of server data area */
51 __u32 fsd_client_start; /* start of per-client data area */
52 __u16 fsd_client_size; /* size of per-client data area */
53 __u16 fsd_subdir_count; /* number of subdirectories for objects */
54 __u8 fsd_padding[FILTER_LR_SERVER_SIZE - 88];
57 /* Data stored per client in the last_rcvd file. In le32 order. */
58 struct filter_client_data {
59 __u8 fcd_uuid[37]; /* client UUID */
60 __u8 fcd_uuid_padding[3]; /* unused */
61 __u64 fcd_last_rcvd; /* last completed transaction ID */
62 __u64 fcd_mount_count; /* FILTER incarnation number */
63 __u64 fcd_last_xid; /* client RPC xid for the last transaction */
64 __u8 fcd_padding[FILTER_LR_CLIENT_SIZE - 64];
67 #ifndef OBD_FILTER_SAN_DEVICENAME
68 #define OBD_FILTER_SAN_DEVICENAME "sanobdfilter"
71 /* In-memory access to client data from OST struct */
72 struct filter_export_data {
73 struct list_head fed_open_head; /* files to close on disconnect */
74 spinlock_t fed_lock; /* protects fed_open_head */
75 struct filter_client_data *fed_fcd;
80 /* file data for open files on OST */
81 struct filter_file_data {
82 struct list_head ffd_export_list; /* export open list - fed_lock */
83 struct file *ffd_file; /* file handle */
84 __u64 ffd_servercookie; /* cookie for lustre handle */
87 struct filter_dentry_data {
89 atomic_t fdd_open_count;
93 #define FILTER_FLAG_DESTROY 0x0001 /* destroy dentry on last file close */