From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Eric Sandeen <sandeen@sandeen.net>
Cc: sandeen@redhat.com, linux-xfs@vger.kernel.org,
Dave Chinner <dchinner@redhat.com>
Subject: Re: [PATCH 08/10] xfs_spaceman: Free space mapping command
Date: Wed, 14 Jun 2017 09:57:45 -0700 [thread overview]
Message-ID: <20170614165745.GV4530@birch.djwong.org> (raw)
In-Reply-To: <91b3a6c0-3851-e500-c78d-aca1aee872fa@sandeen.net>
On Wed, Jun 14, 2017 at 11:04:11AM -0500, Eric Sandeen wrote:
>
> On 6/2/17 2:52 PM, Darrick J. Wong wrote:
> > From: Dave Chinner <dchinner@redhat.com>
> >
> > Add freespace mapping tool modelled on the xfs_db freesp command.
> > The advantage of this command over xfs_db is that it can be done
> > online and is coherent with concurrent modifications to the
> > filesystem.
> >
> > This requires the kernel to support the XFS_IOC_GETFSMAP ioctl to map
> > free space indexes.
> >
> > Signed-off-by: Dave Chinner <dchinner@redhat.com>
> > [darrick: port from FIEMAPFS to GETFSMAP]
> > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
>
>
> > +static int
> > +init(
> > + int argc,
> > + char **argv)
> > +{
> > + int c;
> > + int speced = 0;
> > +
> > + agcount = dumpflag = equalsize = multsize = optind = 0;
> > + histcount = seen1 = summaryflag = 0;
>
> ew, setting histcount to 0 (already done, right? it's global?)
> and checking it here but never setting it is a little confusing.
Yes, I'll get rid of the redundant initializers.
> Maybe the comment below would help.
Ok.
> > + totblocks = totexts = 0;
> > + aglist = NULL;
> > + hist = NULL;
> > + rtflag = false;
> > + while ((c = getopt(argc, argv, "a:bde:h:m:rs")) != EOF) {
> > + switch (c) {
> > + case 'a':
> > + aglistadd(optarg);
> > + break;
> > + case 'b':
> > + if (speced)
> > + return 0;
> > + multsize = 2;
> > + speced = 1;
> > + break;
> > + case 'd':
> > + dumpflag = 1;
> > + break;
> > + case 'e':
> > + if (speced)
> > + return 0;
> > + equalsize = atoi(optarg);
> > + speced = 1;
> > + break;
> > + case 'h':
> > + if (speced && !histcount)
> > + return 0;
>
> maybe: /* increments histcount */
Fixed.
> > + addhistent(atoi(optarg));
> > + speced = 1;
> > + break;
> > + case 'm':
> > + if (speced)
> > + return 0;
> > + multsize = atoi(optarg);
> > + speced = 1;
> > + break;
> > + case 'r':
> > + rtflag = true;
> > + break;
> > + case 's':
> > + summaryflag = 1;
> > + break;
> > + case '?':
> > + return 0;
> > + }
> > + }
> > + if (optind != argc)
> > + return 0;
> > + if (!speced)
> > + multsize = 2;
>
> Manpage indicates that -b, -e, and -h are mutually exclusive, but that's
> not enforced here (?)
>
> Specifying more than one seems to break the command:
>
> xfs_spaceman> freesp -b
> from to extents blocks pct
> 2 3 1 3 0.00
> 32768 65536 4 259537 100.00
> xfs_spaceman> freesp -e 4096
> from to extents blocks pct
> 1 4096 1 3 0.00
> 61441 65536 4 259537 100.00
> xfs_spaceman> freesp -e 4096 -b
> xfs_spaceman>
>
> Oh I see, if more than one is "speced" init returns 0 (silently).
>
> I'd document what speced is for, and I guess print a warning about
> the exclusive nature of the 3 arguments in each case if re-spec'd
> before returning.
I made a note of that in the help screen and redirected all the overspec
cases to print the help screen instead of silently returning.
> And note the exclusive nature somehow in the help.
> (hm, looks like -m is in this exclusive group too?)
>
> in gneneral need to sanitize behavior w/ built in help as well
> as manpage...
Ok.
--D
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-06-14 16:57 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-02 19:51 [PATCH v8 00/10] xfsprogs 4.12: GETFSMAP support Darrick J. Wong
2017-06-02 19:51 ` [PATCH 01/10] xfs: introduce the XFS_IOC_GETFSMAP ioctl Darrick J. Wong
2017-06-02 19:51 ` [PATCH 02/10] xfs_io: refactor numlen into a library function Darrick J. Wong
2017-06-13 21:09 ` Eric Sandeen
2017-06-02 19:51 ` [PATCH 03/10] xfs_io: support the new getfsmap ioctl Darrick J. Wong
2017-06-13 22:20 ` Eric Sandeen
2017-06-14 0:23 ` Darrick J. Wong
2017-06-02 19:51 ` [PATCH 04/10] xfs_repair: replace rmap_compare with libxfs version Darrick J. Wong
2017-06-13 22:34 ` Eric Sandeen
2017-06-02 19:51 ` [PATCH 05/10] xfs_spaceman: space management tool Darrick J. Wong
2017-06-14 14:15 ` Eric Sandeen
2017-06-14 16:16 ` Darrick J. Wong
2017-06-02 19:51 ` [PATCH 06/10] xfs_spaceman: add FITRIM support Darrick J. Wong
2017-06-14 15:32 ` Eric Sandeen
2017-06-14 16:32 ` Darrick J. Wong
2017-06-02 19:51 ` [PATCH 07/10] xfs_spaceman: add new speculative prealloc control Darrick J. Wong
2017-06-14 15:05 ` Eric Sandeen
2017-06-14 16:39 ` Darrick J. Wong
2017-06-02 19:52 ` [PATCH 08/10] xfs_spaceman: Free space mapping command Darrick J. Wong
2017-06-14 15:43 ` Eric Sandeen
2017-06-14 16:43 ` Darrick J. Wong
2017-06-14 16:04 ` Eric Sandeen
2017-06-14 16:57 ` Darrick J. Wong [this message]
2017-06-02 19:52 ` [PATCH 09/10] xfs_spaceman: add a man page Darrick J. Wong
2017-06-14 16:06 ` Eric Sandeen
2017-06-14 20:49 ` Darrick J. Wong
2017-06-02 19:52 ` [PATCH 10/10] xfs_spaceman: add group summary mode Darrick J. Wong
2017-06-14 16:23 ` Eric Sandeen
2017-06-14 17:22 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170614165745.GV4530@birch.djwong.org \
--to=darrick.wong@oracle.com \
--cc=dchinner@redhat.com \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
--cc=sandeen@sandeen.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).