Implements '-l' argument in inode command, returning to the user, the largest inode allocated and used in the filesystem. Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> --- io/open.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/io/open.c b/io/open.c index 6a794ba..57ff0bf 100644 --- a/io/open.c +++ b/io/open.c @@ -759,6 +759,7 @@ inode_help(void) "\n" "Query physical information about the inode" "\n" +" -l -- Returns the largest inode number in the filesystem\n" " -s -- Returns the physical size (in bits) of the\n" " largest inode number in the filesystem\n" "\n")); @@ -777,23 +778,27 @@ inode_f( struct xfs_fsop_bulkreq bulkreq; int c; int ret_lsize = 0; + int ret_largest = 0; bulkreq.lastip = &last; bulkreq.icount = 1024; /* maybe an user-defined value!? */ bulkreq.ubuffer = &igroup; bulkreq.ocount = &count; - while ((c = getopt(argc, argv, "s")) != EOF) { + while ((c = getopt(argc, argv, "sl")) != EOF) { switch (c) { case 's': ret_lsize = 1; break; + case 'l': + ret_largest = 1; + break; default: return command_usage(&inode_cmd); } } - if (ret_lsize) { + if (ret_lsize || ret_largest) { for (;;) { if (xfsctl(file->name, file->fd, XFS_IOC_FSINUMBERS, &bulkreq)) { @@ -811,8 +816,11 @@ inode_f( lastino = igroup[lastgrp].xi_startino + xfs_highbit64(igroup[lastgrp].xi_allocmask); - printf (_("Largest inode size: %d\n"), - lastino > XFS_MAXINUMBER_32 ? 64 : 32); + if (ret_lsize) + printf (_("Largest inode size: %d\n"), + lastino > XFS_MAXINUMBER_32 ? 64 : 32); + else + printf(_("Largest inode: %llu\n"), lastino); } @@ -887,7 +895,7 @@ open_init(void) inode_cmd.name = "inode"; inode_cmd.cfunc = inode_f; - inode_cmd.args = _("[-s]"); + inode_cmd.args = _("[-s | -l]"); inode_cmd.argmin = 1; inode_cmd.argmax = 1; inode_cmd.flags = CMD_NOMAP_OK; -- 2.4.3 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs