|
|
| File: [Development] / xfs-cmds / xfsprogs / mkfs / xfs_mkfs.h (download)
Revision 1.14, Fri Nov 16 05:16:34 2007 UTC (9 years, 11 months ago) by xaiki.longdrop.melbourne.sgi.com
Default to log, attr, inodes v2, Drop the ability to turn unwritten extents off completly, reduce imaxpct for big filesystems, less AGs for single disks configs. - Default to log version 2 Change logversion to 2 in xfs_mkfs.c - Default to version 2 attributes. Change attrversion from 0 to 2 in xfs_mkfs.c - Drop the ability to turn unwritten extents off completly unwritten extents on linux are generally a bad idea, this option should not be used. Remove the mount option from xfs_mkfs.c: remove it from option list, remove it from mkfs output. Update xfs.mkfs manpage. - V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, Activate XFS_SB_VERSION_NLINKBIT per default, which will enable V2 INODES. refactor bits that we want everytime in XFS_DFL_SB_VERSION_BITS. - reduce imaxpct for big filesystems, imaxpct is set to 25% (XFS_DFL_IMAXIMUM_PCT) for FS < 1 TB, then 5% for FS < 50 TB, and then (over 50 TB) 1%. It is implemented as a simple step function in calc_default_imaxpct() - less AGs for single disks configs. get the underlying structure with get_subvol_stripe_wrapper(), and pass sunit | swidth as an argument to calc_default_ag_geometry(). if it is set, we are in single disk, get XFS_AG_MAX_BLOCKS for FS >= 4TB, and calculate ag numbers regarding to that. get 4 AGs for FS < 4TB. we calculate according to blocks or count if we have them, add an assert to ensure we have one of the 2. Merge of master-melb:xfs-cmds:30077a by kenmcd. |
/*
* Copyright (c) 2000-2001,2004-2005 Silicon Graphics, Inc.
* All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it would be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __XFS_MKFS_H__
#define __XFS_MKFS_H__
#define XFS_DFL_SB_VERSION_BITS \
(XFS_SB_VERSION_NLINKBIT | \
XFS_SB_VERSION_EXTFLGBIT)
#define XFS_SB_VERSION_MKFS(ia,dia,dir2,log2,attr1,sflag,more) (\
((ia)||(dia)||(dir2)||(log2)||(attr1)||(sflag)||(more)) ? \
( XFS_SB_VERSION_4 | \
((ia) ? XFS_SB_VERSION_ALIGNBIT : 0) | \
((dia) ? XFS_SB_VERSION_DALIGNBIT : 0) | \
((dir2) ? XFS_SB_VERSION_DIRV2BIT : 0) | \
((log2) ? XFS_SB_VERSION_LOGV2BIT : 0) | \
((attr1) ? XFS_SB_VERSION_ATTRBIT : 0) | \
((sflag) ? XFS_SB_VERSION_SECTORBIT : 0) | \
((more) ? XFS_SB_VERSION_MOREBITSBIT : 0) | \
XFS_DFL_SB_VERSION_BITS | \
0 ) : XFS_SB_VERSION_1 )
#define XFS_SB_VERSION2_MKFS(lazycount, attr2, parent) (\
((lazycount) ? XFS_SB_VERSION2_LAZYSBCOUNTBIT : 0) | \
((attr2) ? XFS_SB_VERSION2_ATTR2BIT : 0) | \
((parent) ? XFS_SB_VERSION2_PARENTBIT : 0) | \
0 )
#define XFS_DFL_BLOCKSIZE_LOG 12 /* 4096 byte blocks */
#define XFS_DINODE_DFL_LOG 8 /* 256 byte inodes */
#define XFS_MIN_DATA_BLOCKS 100
#define XFS_MIN_INODE_PERBLOCK 2 /* min inodes per block */
#define XFS_DFL_IMAXIMUM_PCT 25 /* max % of space for inodes */
#define XFS_IFLAG_ALIGN 1 /* -i align defaults on */
#define XFS_MIN_REC_DIRSIZE 12 /* 4096 byte dirblocks (V2) */
#define XFS_DFL_DIR_VERSION 2 /* default directory version */
#define XFS_DFL_LOG_SIZE 1000 /* default log size, blocks */
#define XFS_MIN_LOG_FACTOR 3 /* min log size factor */
#define XFS_DFL_LOG_FACTOR 16 /* default log size, factor */
/* with max trans reservation */
#define XFS_MAX_INODE_SIG_BITS 32 /* most significant bits in an
* inode number that we'll
* accept w/o warnings
*/
#define XFS_AG_BYTES(bblog) ((long long)BBSIZE << (bblog))
#define XFS_AG_MIN_BYTES ((XFS_AG_BYTES(15))) /* 16 MB */
#define XFS_AG_MIN_BLOCKS(blog) ((XFS_AG_BYTES(15)) >> (blog))
#define XFS_AG_MAX_BLOCKS(blog) ((XFS_AG_BYTES(31) - 1) >> (blog))
#define XFS_MAX_AGNUMBER ((xfs_agnumber_t)(NULLAGNUMBER - 1))
/* xfs_mkfs.c */
extern void usage (void);
extern int isdigits (char *str);
extern long long cvtnum (unsigned int blocksize,
unsigned int sectorsize, char *s);
/* proto.c */
extern char *setup_proto (char *fname);
extern void parse_proto (xfs_mount_t *mp, struct fsxattr *fsx, char **pp);
extern void res_failed (int err);
/* maxtrres.c */
extern int max_trans_res (int dirversion,
int sectorlog, int blocklog, int inodelog, int dirblocklog);
#endif /* __XFS_MKFS_H__ */