summaryrefslogtreecommitdiff
path: root/usr/src/cmd/fs.d/cachefs/common/cachefsd.x
blob: 747e743d9138176abb127282f255c6cfb7930f9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 1996, 2002 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/* -----------------------------------------------------------------
 *
 *			cachefsd.x
 *
 * Rpcgen file for generating cachefsd interface.
 */

/* #ident	"%Z%%M%	%I%	%E% SMI" */


/*
 * List of caches.
 */
struct cachefsd_caches_id {
	int		cci_cacheid;		/* id of cache */
	string		cci_name<>;		/* pathname of cache */
};
struct cachefsd_caches_return {
	u_int			ccr_modify;	/* changes when modified */
	cachefsd_caches_id	ccr_ids<>;	/* list of caches */
};

/*
 * Stats about a single cache.
 * All sizes are in 1K blocks.
 */
struct cachefsd_cache_status {
	int		ccs_id;			/* id of cache */
	string		ccs_name<>;		/* name of cache */
	longlong_t	ccs_size;		/* size of cache */
	longlong_t	ccs_lrusize;		/* size of lru files */
	longlong_t	ccs_packsize;		/* size of packed files */
	longlong_t	ccs_freesize;		/* size of free space */
	u_int		ccs_lrutime;		/* time of oldest item on lru */
	u_int		ccs_modify;		/* changes when modified */
};

/*
 * List of file systems in a cache.
 */
struct cachefsd_mount {
	int		cm_fsid;		/* id of file system */
	string		cm_name<>;		/* name of file system */
};
struct cachefsd_mount_returns {
	cachefsd_mount	cmr_names<>;		/* list of file systems */
	u_int		cmr_modify;		/* changes when modified */
	int		cmr_error;		/* 0 if no error */
};

/*
 * Stats about a single file system in a cache.
 */
struct cachefsd_mount_stat_args {
	int		cma_cacheid;		/* id of cache */
	int		cma_fsid;		/* id of file system */
};
struct cachefsd_mount_stat {
	int		cms_cacheid;		/* id of cache */
	int		cms_fsid;		/* id of file system */
	string		cms_name<>;		/* name of file system */
	string		cms_backfs<>;		/* back file system */
	string		cms_mountpt<>;		/* most recent mount point */
	string		cms_backfstype<>;	/* type of back file system */
	string		cms_writemode<>;	/* write mode */
	string		cms_options<>;		/* remaining options */
	int		cms_mounted;		/* 1 if mounted */
	int		cms_connected;		/* 1 if connected */
	int		cms_reconcile;		/* 1 if reconcile in progress */
	int		cms_changes;		/* 1 if changes to push back */
	u_int		cms_time_state;		/* time of state change */
	u_int		cms_mnttime;		/* time of last mount/umount */
	u_int		cms_modify;		/* changes when modified */
};

/*
 * Sent by mount command to indicate a new mounted file system.
 */
struct cachefsd_fs_mounted {
	string		mt_cachedir<>;		/* cache directory path */
	string		mt_cacheid<>;		/* cache id */
};

/*
 * Sent by umount command to unmount file system.
 * cachefsd may get the request to force unmount
 * the cachefs front file system, thus flag is
 * necessary to indicate forced unmount.
 * Hopefully, someday forced unmount is supported
 * for cachefs !! 
 */
struct cachefsd_fs_unmounted {
	string		mntpt<>;		/* Mount point */
	int		flag;			/* MS_FORCE flag */
};

/*
 * Sets file system to simulate disconnection.
 */
struct cachefsd_disconnection_args {
	string		cda_mntpt<>;		/* mntpt of file system */
	int		cda_disconnect;		/* 1 disconnect, 0 connect */
};

/*
 * -----------------------------------------------------------------
 * This is the definition of the routines supported by the service.
 */
program CACHEFSDPROG {
	version CACHEFSDVERS {
		void CACHEFSD_NULL(void) = 0;
		cachefsd_caches_return CACHEFSD_CACHES(void) = 1;
		cachefsd_cache_status CACHEFSD_CACHE_STATUS(int id) = 2;
		cachefsd_mount_returns CACHEFSD_MOUNTS(int id) = 3;
		cachefsd_mount_stat CACHEFSD_MOUNT_STAT(
		    struct cachefsd_mount_stat_args) = 4;
		void CACHEFSD_FS_MOUNTED(struct cachefsd_fs_mounted) = 5;
		int CACHEFSD_FS_UNMOUNTED(struct cachefsd_fs_unmounted) = 6;
		int CACHEFSD_DISCONNECTION(struct cachefsd_disconnection_args)
		    = 7;
	} = 1;
} = 100235;

#ifdef RPC_HDR
%
#endif /* RPC_HDR */