Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 *  format of cache on disk
3
 */
4
typedef struct Dptr	Dptr;
5
typedef struct Dahdr	Dahdr;
6
typedef struct Dalloc	Dalloc;
7
typedef struct Fphdr	Fphdr;
8
typedef struct Fptr	Fptr;
9
typedef struct Inode	Inode;
10
typedef struct Dihdr	Dihdr;
11
typedef struct Dinode	Dinode;
12
 
13
enum
14
{
15
	Amagic= 	0xbebeefed,	/* allocation block magic */
16
	Imagic=		0xbadc00ce,	/* inode block magic */
17
	BtoUL=		8*sizeof(ulong),/* bits in a ulong */
18
	CACHENAMELEN=	128
19
};
20
#define	Indbno		0x80000000	/* indirect block */
21
#define	Notabno		0xFFFFFFFF	/* not a block number */
22
 
23
/*
24
 *  Allocation blocks at the begining of the disk.  There are
25
 *  enough of these blocks to supply 1 bit for each block on the
26
 *  disk;
27
 */
28
struct Dahdr
29
{
30
	ulong	magic;
31
	ulong	bsize;		/* logical block size */
32
	char	name[CACHENAMELEN];
33
	short	nab;		/* number of allocation blocks */
34
};
35
struct Dalloc
36
{
37
	Dahdr;
38
	ulong	bits[1];
39
};
40
 
41
/*
42
 *  A pointer to disk data
43
 */
44
struct Dptr
45
{
46
	ulong	fbno;		/* file block number */
47
	ulong	bno;		/* disk block number */
48
	ushort	start;		/* offset into block of valid data */
49
	ushort	end;		/* offset into block after valid data */
50
};
51
 
52
/*
53
 *  A file descriptor.
54
 */
55
struct Inode
56
{
57
	Qid	qid;
58
	vlong	length;
59
	Dptr	ptr;		/* pointer page */	
60
	char	inuse;
61
};
62
 
63
/*
64
 *  inode blocks (after allocation blocks)
65
 */
66
struct Dihdr
67
{
68
	ulong	magic;
69
	ulong	nino;		/* number of inodes */
70
};
71
struct Dinode
72
{
73
	Dihdr;
74
	Inode	inode[1];
75
};