[PATCH] xfs_df: a df(1)-like command to list per-ag block and inode usage
Christoph Hellwig
hch at infradead.org
Thu Sep 10 18:21:39 CDT 2009
On Thu, Sep 10, 2009 at 06:46:26PM -0400, Josef 'Jeff' Sipek wrote:
> +++ b/db/xfs_df.sh
> @@ -0,0 +1,144 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2007-2009 Josef 'Jeff' Sipek <jeffpc at josefsipek.net>
> +#
> +# This program is free software; you can redistribute it and/or modify it
> +# under the terms of the GNU General Public License version 2 as published
> +# by the Free Software Foundation.
> +#
> +
> +status=0
> +DB_OPTS="-p xfs_df -r"
> +USAGE="Usage: xfs_df [-i] <device>|<mount>"
> +
> +while test $# -gt 1; do
> + case "$1" in
> + -i)
> + print_inodes=t
> + ;;
> + *)
> + break
> + ;;
> + esac
> + shift
> +done
> +
> +dev="$1"
Can you use the same boilerplate code as the other wrappers for
xfs_db parsing the options and showing the usage to make things more
consistant?
Also any new tools in xfsprogs should really come with a manpage.
> +case "$print_inodes" in
> + t)
> + echo "AG Inodes IUsed IFree Use%"
> +
> + tot_ino=0
> + tot_use=0
> + tot_fre=0
> +
> + for ag in `seq 0 $maxagno`; do
> + count=`db_wrapper -c "agi $ag" -c "p count"`
> + freecount=`db_wrapper -c "agi $ag" -c "p freecount"`
> +
> + used=`expr $count - $freecount`
> +
> + if [ $count -gt 0 ]; then
> + pused=`expr $used \* 100`
> + pused=`expr $pused / $count`
> + else
> + pused=0
> + fi
Wouldn't it be much easier to implement all this in C as a new xfs_db
subcommand?
More information about the xfs
mailing list