Blame view

fs/freevxfs/vxfs_dir.h 3.15 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
  /*
   * Copyright (c) 2000-2001 Christoph Hellwig.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions, and the following disclaimer,
   *    without modification.
   * 2. The name of the author may not be used to endorse or promote products
   *    derived from this software without specific prior written permission.
   *
   * Alternatively, this software may be distributed under the terms of the
   * GNU General Public License ("GPL").
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   */
  #ifndef _VXFS_DIR_H_
  #define _VXFS_DIR_H_
  
  /*
   * Veritas filesystem driver - directory structure.
   *
   * This file contains the definition of the vxfs directory format.
   */
  
  
  /*
   * VxFS directory block header.
   *
   * This entry is the head of every filesystem block in a directory.
c78bad11f   Joe Perches   fs/: Spelling fixes
44
   * It is used for free space management and additionally includes
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
   * a hash for speeding up directory search (lookup).
   *
   * The hash may be empty and in fact we do not use it all in the
   * Linux driver for now.
   */
  struct vxfs_dirblk {
  	u_int16_t	d_free;		/* free space in dirblock */
  	u_int16_t	d_nhash;	/* no of hash chains */
  	u_int16_t	d_hash[1];	/* hash chain */
  };
  
  /*
   * VXFS_NAMELEN is the maximum length of the d_name field
   *	of an VxFS directory entry.
   */
  #define VXFS_NAMELEN	256
  
  /*
   * VxFS directory entry.
   */
  struct vxfs_direct {
  	vx_ino_t	d_ino;			/* inode number */
  	u_int16_t	d_reclen;		/* record length */
  	u_int16_t	d_namelen;		/* d_name length */
  	u_int16_t	d_hashnext;		/* next hash entry */
  	char		d_name[VXFS_NAMELEN];	/* name */
  };
  
  /*
   * VXFS_DIRPAD defines the directory entry boundaries, is _must_ be
   *	a multiple of four.
   * VXFS_NAMEMIN is the length of a directory entry with a NULL d_name.
   * VXFS_DIRROUND is an internal macros that rounds a length to a value
   *	usable for directory sizes.
   * VXFS_DIRLEN calculates the directory entry size for an entry with
   *	a d_name with size len.
   */
  #define VXFS_DIRPAD		4
85420ccad   Andrew Morton   vxfs warning fixes
83
  #define VXFS_NAMEMIN		offsetof(struct vxfs_direct, d_name)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
84
85
86
87
88
89
90
91
92
  #define VXFS_DIRROUND(len)	((VXFS_DIRPAD + (len) - 1) & ~(VXFS_DIRPAD -1))
  #define VXFS_DIRLEN(len)	(VXFS_DIRROUND(VXFS_NAMEMIN + (len)))
  
  /*
   * VXFS_DIRBLKOV is the overhead of a specific dirblock.
   */
  #define VXFS_DIRBLKOV(dbp)	((sizeof(short) * dbp->d_nhash) + 4)
  
  #endif /* _VXFS_DIR_H_ */