1/*
2 * param.h - Parameter values for ntfs-3g
3 *
4 * Copyright (c) 2009-2010 Jean-Pierre Andre
5 *
6 * This program/include file is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as published
8 * by the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program/include file is distributed in the hope that it will be
12 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program (in the main directory of the NTFS-3G
18 * distribution in the file COPYING); if not, write to the Free Software
19 * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20 */
21
22#ifndef _NTFS_PARAM_H
23#define _NTFS_PARAM_H
24
25#define CACHE_INODE_SIZE 32	/* inode cache, zero or >= 3 and not too big */
26#define CACHE_NIDATA_SIZE 64	/* idata cache, zero or >= 3 and not too big */
27#define CACHE_LOOKUP_SIZE 64	/* lookup cache, zero or >= 3 and not too big */
28#define CACHE_SECURID_SIZE 16    /* securid cache, zero or >= 3 and not too big */
29#define CACHE_LEGACY_SIZE 8    /* legacy cache size, zero or >= 3 and not too big */
30
31#define FORCE_FORMAT_v1x 0	/* Insert security data as in NTFS v1.x */
32#define OWNERFROMACL 1		/* Get the owner from ACL (not Windows owner) */
33
34		/* default security sub-authorities */
35enum {
36	DEFSECAUTH1 = -1153374643, /* 3141592653 */
37	DEFSECAUTH2 = 589793238,
38	DEFSECAUTH3 = 462843383,
39	DEFSECBASE = 10000
40};
41
42/*
43 *		Parameters for compression
44 */
45
46	/* default option for compression */
47#define DEFAULT_COMPRESSION 1
48	/* (log2 of) number of clusters in a compression block for new files */
49#define STANDARD_COMPRESSION_UNIT 4
50	/* maximum cluster size for allowing compression for new files */
51#define MAX_COMPRESSION_CLUSTER_SIZE 4096
52
53/*
54 *		Use of big write buffers
55 *
56 *	With small volumes, the cluster allocator may fail to allocate
57 *	enough clusters when the volume is nearly full. At most a run
58 *	can be allocated per bitmap chunk. So, there is a danger when the
59 *	number of chunks (capacity/(32768*clsiz)) is less than the number
60 *	of clusters in the biggest write buffer (131072/clsiz). Hence
61 *	a safe minimal capacity is 4GB
62 */
63
64#define SAFE_CAPACITY_FOR_BIG_WRITES 0x100000000LL
65
66/*
67 *		Parameters for runlists
68 */
69
70	/* only update the final extent of a runlist when appending data */
71#define PARTIAL_RUNLIST_UPDATING 1
72
73/*
74 *		Parameters for user and xattr mappings
75 */
76
77#define XATTRMAPPINGFILE ".NTFS-3G/XattrMapping" /* default mapping file */
78
79/*
80 *		Parameters for path canonicalization
81 */
82
83#define MAPPERNAMELTH 256
84
85/*
86 *		Permission checking modes for high level and low level
87 *
88 *	The choices for high and low lowel are independent, they have
89 *	no effect on the library
90 *
91 *	Stick to the recommended values unless you understand the consequences
92 *	on protection and performances. Use of cacheing is good for
93 *	performances, but bad on security with internal fuse or external
94 *	fuse older than 2.8
95 *
96 *	Possible values for high level :
97 *		1 : no cache, kernel control (recommended)
98 *		4 : no cache, file system control
99 *		7 : no cache, kernel control for ACLs
100 *
101 *	Possible values for low level :
102 *		2 : no cache, kernel control
103 *		3 : use kernel/fuse cache, kernel control (external fuse >= 2.8)
104 *		5 : no cache, file system control (recommended)
105 *		8 : no cache, kernel control for ACLs
106 *
107 *	Use of options 7 and 8 requires a patch to fuse
108 *	When Posix ACLs are selected in the configure options, a value
109 *	of 6 is added in the mount report.
110 */
111
112#define HPERMSCONFIG 1
113#if defined(FUSE_INTERNAL) || !defined(FUSE_VERSION) || (FUSE_VERSION < 28)
114#define LPERMSCONFIG 5
115#else
116#define LPERMSCONFIG 3
117#endif
118
119#endif /* defined _NTFS_PARAM_H */
120