[BACK]Return to xfs_mkfs.h CVS log [TXT][DIR] Up to [Development] / xfs-cmds / xfsprogs / mkfs

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
Branch: MAIN
Changes since 1.13: +7 -3 lines

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__ */