1#ifndef BFS_CONTROL_H
2#define BFS_CONTROL_H
3/* bfs_control - additional functionality exported via ioctl()
4**
5** Copyright 2001-2004, Axel D��rfler, axeld@pinc-software.de
6** This file may be used under the terms of the OpenBeOS License.
7*/
8
9
10#include "fsproto.h"
11
12
13/* ioctl to check the version of BFS used - parameter is a uint32 *
14 * where the number is stored
15 */
16#define BFS_IOCTL_VERSION			14200
17
18/* ioctls to use the "chkbfs" feature from the outside
19 * all calls use a struct check_result as single parameter
20 */
21#define	BFS_IOCTL_START_CHECKING	14201
22#define BFS_IOCTL_STOP_CHECKING		14202
23#define BFS_IOCTL_CHECK_NEXT_NODE	14203
24
25/* all fields except "flags", and "name" must be set to zero before
26 * BFS_IOCTL_START_CHECKING is called
27 */
28struct check_control {
29	uint32		magic;
30	uint32		flags;
31	char		name[B_FILE_NAME_LENGTH];
32	vnode_id	inode;
33	uint32		mode;
34	uint32		errors;
35	struct {
36		uint64	missing;
37		uint64	already_set;
38		uint64	freed;
39	} stats;
40	status_t	status;
41	void		*cookie;
42};
43
44/* values for the flags field */
45#define BFS_FIX_BITMAP_ERRORS	1
46#define BFS_REMOVE_WRONG_TYPES	2
47	/* files that shouldn't be part of its parent will be removed
48	 * (i.e. a directory contains an attribute, ...)
49	 * Works only if B_FIX_BITMAP_ERRORS is set, too
50	 */
51#define BFS_REMOVE_INVALID		4
52	/* removes nodes that couldn't be opened at all from its parent
53	 * directory.
54	 * Also requires the B_FIX_BITMAP_ERRORS to be set.
55	 */
56
57/* values for the errors field */
58#define BFS_MISSING_BLOCKS		1
59#define BFS_BLOCKS_ALREADY_SET	2
60#define BFS_INVALID_BLOCK_RUN	4
61#define	BFS_COULD_NOT_OPEN		8
62#define BFS_WRONG_TYPE			16
63#define BFS_NAMES_DONT_MATCH	32
64
65/* check control magic value */
66#define BFS_IOCTL_CHECK_MAGIC	'BChk'
67
68#endif	/* BFS_CONTROL_H */
69