summaryrefslogtreecommitdiffstats
path: root/sys/fs/coda/coda_opstats.h
blob: 36805e8c0062760eec6bdfe1a17ac2d3f3192985 (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
/*-
 *
 *             Coda: an Experimental Distributed File System
 *                              Release 3.1
 *
 *           Copyright (c) 1987-1998 Carnegie Mellon University
 *                          All Rights Reserved
 *
 * Permission  to  use, copy, modify and distribute this software and its
 * documentation is hereby granted,  provided  that  both  the  copyright
 * notice  and  this  permission  notice  appear  in  all  copies  of the
 * software, derivative works or  modified  versions,  and  any  portions
 * thereof, and that both notices appear in supporting documentation, and
 * that credit is given to Carnegie Mellon University  in  all  documents
 * and publicity pertaining to direct or indirect use of this code or its
 * derivatives.
 *
 * CODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS  KNOWN  TO  HAVE  BUGS,
 * SOME  OF  WHICH MAY HAVE SERIOUS CONSEQUENCES.  CARNEGIE MELLON ALLOWS
 * FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION.   CARNEGIE  MELLON
 * DISCLAIMS  ANY  LIABILITY  OF  ANY  KIND  FOR  ANY  DAMAGES WHATSOEVER
 * RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE  OR  OF
 * ANY DERIVATIVE WORK.
 *
 * Carnegie  Mellon  encourages  users  of  this  software  to return any
 * improvements or extensions that  they  make,  and  to  grant  Carnegie
 * Mellon the rights to redistribute these changes without encumbrance.
 *
 * 	@(#) src/sys/coda/coda_opstats.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $
 * $FreeBSD$
 *
 */

#ifndef _CODA_OPSTATS_H_
#define	_CODA_OPSTATS_H_

/*
 * Operation stats: what the minicache can intercept that *isn't* seen by
 * venus.  These stats are kept to augment the stats maintained by the
 * Volume-Session mechanism.
 */

/*-
 * vfsops:
 *          mount: not currently bounced to Venus
 *          umount: nope
 *          root: only first call, rest is cached.
 *          statfs: none (bogus)
 *          sync: none (bogus)
 *          vget: all
 */
#define	CODA_MOUNT_STATS	0
#define	CODA_UMOUNT_STATS	1
#define	CODA_ROOT_STATS		2
#define	CODA_STATFS_STATS	3
#define	CODA_SYNC_STATS		4
#define	CODA_VGET_STATS		5
#define	CODA_VFSOPS_SIZE	6

/*-
 * vnodeops:
 *            open: all to venus
 *            close: all to venus
 *            rdrw: bogus.  Maybe redirected to UFS.
 *                          May call open/close for internal opens/closes
 *                          (Does exec not call open?)
 *            ioctl: causes a lookupname
 *                   passes through
 *            select: can't get there from here.
 *            getattr: can be satsified by cache
 *            setattr: all go through
 *            access: can be satisfied by cache
 *            readlink: can be satisfied by cache
 *            fsync: passes through
 *            inactive: passes through
 *            lookup: can be satisfied by cache
 *            create: passes through
 *            remove: passes through
 *            link: passes through
 *            rename: passes through
 *            mkdir: passes through
 *            rmdir: passes through
 *            symlink: passes through
 *            readdir: may be redirected to UFS
 *                     may cause an "internal" open/close
 */
#define	CODA_OPEN_STATS		0
#define	CODA_CLOSE_STATS	1
#define	CODA_RDWR_STATS		2
#define	CODA_IOCTL_STATS	3
#define	CODA_SELECT_STATS	4
#define	CODA_GETATTR_STATS	5
#define	CODA_SETATTR_STATS	6
#define	CODA_ACCESS_STATS	7
#define	CODA_READLINK_STATS	8
#define	CODA_FSYNC_STATS	9
#define	CODA_INACTIVE_STATS	10
#define	CODA_LOOKUP_STATS	11
#define	CODA_CREATE_STATS	12
#define	CODA_REMOVE_STATS	13
#define	CODA_LINK_STATS		14
#define	CODA_RENAME_STATS	15
#define	CODA_MKDIR_STATS	16
#define	CODA_RMDIR_STATS	17
#define	CODA_SYMLINK_STATS	18
#define	CODA_READDIR_STATS	19
#define	CODA_VNODEOPS_SIZE	20

/*
 * I propose the following structres:
 */
struct coda_op_stats {
	int	opcode;		/* vfs opcode */
	long	entries;	/* number of times call attempted */
	long	sat_intrn;	/* number of times call satisfied by cache */
	long	unsat_intrn;	/* number of times call failed in cache, but */
				/*  was not bounced to venus proper. */
	long	gen_intrn;	/* number of times call generated internally */
				/* (do we need that?) */
};

/*
 * With each call to the minicache, we'll bump the counters whenver a call is
 * satisfied internally (through the cache or through a redirect), and
 * whenever an operation is caused internally.  Then, we can add the total
 * operations caught by the minicache to the world-wide totals, and leave a
 * caveat for the specific graphs later.
 */

#endif /* !_CODA_OPSTATS_H_ */
OpenPOWER on IntegriCloud