#include "libxfs.h"
#include "path.h"
+#include "fsgeom.h"
static void
usage(void)
exit(2);
}
-void
-report_info(
- xfs_fsop_geom_t geo,
- char *mntpoint,
- int isint,
- char *logname,
- char *rtname,
- int lazycount,
- int dirversion,
- int logversion,
- int attrversion,
- int projid32bit,
- int crcs_enabled,
- int cimode,
- int ftype_enabled,
- int finobt_enabled,
- int spinodes,
- int rmapbt_enabled,
- int reflink_enabled)
-{
- printf(_(
- "meta-data=%-22s isize=%-6u agcount=%u, agsize=%u blks\n"
- " =%-22s sectsz=%-5u attr=%u, projid32bit=%u\n"
- " =%-22s crc=%-8u finobt=%u spinodes=%u rmapbt=%u\n"
- " =%-22s reflink=%u\n"
- "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n"
- " =%-22s sunit=%-6u swidth=%u blks\n"
- "naming =version %-14u bsize=%-6u ascii-ci=%d ftype=%d\n"
- "log =%-22s bsize=%-6u blocks=%u, version=%u\n"
- " =%-22s sectsz=%-5u sunit=%u blks, lazy-count=%u\n"
- "realtime =%-22s extsz=%-6u blocks=%llu, rtextents=%llu\n"),
-
- mntpoint, geo.inodesize, geo.agcount, geo.agblocks,
- "", geo.sectsize, attrversion, projid32bit,
- "", crcs_enabled, finobt_enabled, spinodes, rmapbt_enabled,
- "", reflink_enabled,
- "", geo.blocksize, (unsigned long long)geo.datablocks,
- geo.imaxpct,
- "", geo.sunit, geo.swidth,
- dirversion, geo.dirblocksize, cimode, ftype_enabled,
- isint ? _("internal") : logname ? logname : _("external"),
- geo.blocksize, geo.logblocks, logversion,
- "", geo.logsectsize, geo.logsunit / geo.blocksize, lazycount,
- !geo.rtblocks ? _("none") : rtname ? rtname : _("external"),
- geo.rtextsize * geo.blocksize, (unsigned long long)geo.rtblocks,
- (unsigned long long)geo.rtextents);
-}
-
int
main(int argc, char **argv)
{
int c; /* current option character */
long long ddsize; /* device size in 512-byte blocks */
int dflag; /* -d flag */
- int attrversion;/* attribute version number */
- int dirversion; /* directory version number */
- int logversion; /* log version number */
long long dlsize; /* device size in 512-byte blocks */
long long drsize; /* device size in 512-byte blocks */
long long dsize; /* new data size in fs blocks */
xfs_fsop_geom_t ngeo; /* new fs geometry */
int rflag; /* -r flag */
long long rsize; /* new rt size in fs blocks */
- int ci; /* ASCII case-insensitive fs */
- int lazycount; /* lazy superblock counters */
int xflag; /* -x flag */
char *fname; /* mount point name */
char *datadev; /* data device name */
char *rtdev; /* RT device name */
fs_path_t *fs; /* mount point information */
libxfs_init_t xi; /* libxfs structure */
- int projid32bit;
- int crcs_enabled;
- int ftype_enabled = 0;
- int finobt_enabled; /* free inode btree */
- int spinodes;
- int rmapbt_enabled;
- int reflink_enabled;
char rpath[PATH_MAX];
progname = basename(argv[0]);
}
}
isint = geo.logstart > 0;
- lazycount = geo.flags & XFS_FSOP_GEOM_FLAGS_LAZYSB ? 1 : 0;
- dirversion = geo.flags & XFS_FSOP_GEOM_FLAGS_DIRV2 ? 2 : 1;
- logversion = geo.flags & XFS_FSOP_GEOM_FLAGS_LOGV2 ? 2 : 1;
- attrversion = geo.flags & XFS_FSOP_GEOM_FLAGS_ATTR2 ? 2 : \
- (geo.flags & XFS_FSOP_GEOM_FLAGS_ATTR ? 1 : 0);
- ci = geo.flags & XFS_FSOP_GEOM_FLAGS_DIRV2CI ? 1 : 0;
- projid32bit = geo.flags & XFS_FSOP_GEOM_FLAGS_PROJID32 ? 1 : 0;
- crcs_enabled = geo.flags & XFS_FSOP_GEOM_FLAGS_V5SB ? 1 : 0;
- ftype_enabled = geo.flags & XFS_FSOP_GEOM_FLAGS_FTYPE ? 1 : 0;
- finobt_enabled = geo.flags & XFS_FSOP_GEOM_FLAGS_FINOBT ? 1 : 0;
- spinodes = geo.flags & XFS_FSOP_GEOM_FLAGS_SPINODES ? 1 : 0;
- rmapbt_enabled = geo.flags & XFS_FSOP_GEOM_FLAGS_RMAPBT ? 1 : 0;
- reflink_enabled = geo.flags & XFS_FSOP_GEOM_FLAGS_REFLINK ? 1 : 0;
- if (nflag) {
- report_info(geo, datadev, isint, logdev, rtdev,
- lazycount, dirversion, logversion,
- attrversion, projid32bit, crcs_enabled, ci,
- ftype_enabled, finobt_enabled, spinodes,
- rmapbt_enabled, reflink_enabled);
- exit(0);
- }
/*
* Need root access from here on (using raw devices)...
exit(1);
}
- report_info(geo, datadev, isint, logdev, rtdev,
- lazycount, dirversion, logversion,
- attrversion, projid32bit, crcs_enabled, ci, ftype_enabled,
- finobt_enabled, spinodes, rmapbt_enabled,
- reflink_enabled);
+ xfs_report_geom(&geo, datadev, logdev, rtdev);
ddsize = xi.dsize;
dlsize = ( xi.logBBsize? xi.logBBsize :