summaryrefslogtreecommitdiff
path: root/minix/servers/vfs/type.h
blob: 58a7afaddcd2bfd24193aa988a23652fc7b4b350 (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
#ifndef __VFS_TYPE_H__
#define __VFS_TYPE_H__

/* VFS<->FS communication */

typedef struct {
  int c_max_reqs;	/* Max requests an FS can handle simultaneously */
  int c_cur_reqs;	/* Number of requests the FS is currently handling */
  struct worker_thread *c_req_queue;/* Queue of procs waiting to send a message */
} comm_t;

/*
 * Cached statvfs fields.  We are not using struct statvfs itself because that
 * would add over 2K of unused memory per mount table entry.
 */
struct statvfs_cache {
  unsigned long	f_flag;		/* copy of mount exported flags */
  unsigned long	f_bsize;	/* file system block size */
  unsigned long	f_frsize;	/* fundamental file system block size */
  unsigned long	f_iosize;	/* optimal file system block size */

  fsblkcnt_t	f_blocks;	/* number of blocks in file system, */
  fsblkcnt_t	f_bfree;	/* free blocks avail in file system */
  fsblkcnt_t	f_bavail;	/* free blocks avail to non-root */
  fsblkcnt_t	f_bresvd;	/* blocks reserved for root */

  fsfilcnt_t	f_files;	/* total file nodes in file system */
  fsfilcnt_t	f_ffree;	/* free file nodes in file system */
  fsfilcnt_t	f_favail;	/* free file nodes avail to non-root */
  fsfilcnt_t	f_fresvd;	/* file nodes reserved for root */

  uint64_t  	f_syncreads;	/* count of sync reads since mount */
  uint64_t  	f_syncwrites;	/* count of sync writes since mount */

  uint64_t  	f_asyncreads;	/* count of async reads since mount */
  uint64_t  	f_asyncwrites;	/* count of async writes since mount */

  unsigned long	f_namemax;	/* maximum filename length */
};

struct smap {
	unsigned int	smap_num;	/* one-based number into smap array */
	endpoint_t	smap_endpt;	/* driver endpoint, NONE if free */
	char		smap_label[LABEL_MAX];	/* driver label */
	int		smap_sel_busy;	/* doing initial select on socket? */
	struct filp *	smap_sel_filp;	/* socket being selected on */
};

typedef int32_t sockid_t;

#endif