[PATCH 2/3] xfs_io: add inode -l argument to return largest inode number

Carlos Maiolino cmaiolino at redhat.com
Wed Oct 7 03:06:28 CDT 2015


On Tue, Oct 06, 2015 at 01:00:39PM -0400, Brian Foster wrote:
> On Fri, Sep 25, 2015 at 03:07:46PM +0200, Carlos Maiolino wrote:
> > 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 at redhat.com>
> > ---
> >  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);
> 
> Hmm, do we need the -s option if we have -l to print the actual largest
> inode number?
> 

Well, I understand your question, my point here was to implement the options
Dave suggested, but I'm not sure if he had in mind anything else that checking
the return value size of -l would not work as -s argument.

> Brian
> 
> >  
> >  	}
> >  
> > @@ -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 at oss.sgi.com
> > http://oss.sgi.com/mailman/listinfo/xfs

-- 
Carlos



More information about the xfs mailing list