From 6ebe92b213eda5759e74b286e496ba32324b1508 Mon Sep 17 00:00:00 2001 From: Dmitry Zogin Date: Tue, 16 Mar 2010 14:57:20 -0400 Subject: [PATCH] b=22327 "lfs df" does not print stats for all mountpoints Print all mounted lustre filesystems with "lfs df" o=adilger i=simmonsja i=dmitry.zogin --- lustre/doc/lfs.1 | 10 +++++++--- lustre/utils/lfs.c | 4 +++- lustre/utils/liblustreapi.c | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lustre/doc/lfs.1 b/lustre/doc/lfs.1 index 277bc7c..d9729a1 100644 --- a/lustre/doc/lfs.1 +++ b/lustre/doc/lfs.1 @@ -77,9 +77,13 @@ The various options supported by lctl are listed and explained below: .B check Display the status of MDS or OSTs (as specified in the command) or all the servers (MDS and OSTs) .TP -.B df -Report filesystem disk space usage or inodes usage of each MDT/OST. Can limit -the scope to a specific OST pool +.B df [-i] [-h] [--pool|-p [.] [path] +Report filesystem disk space usage or inodes usage (with \fB-i\fR) of each +MDT/OST, or a subset of OSTs if a pool is specified with \fB-p\fR. By default +print the usage of all mounted Lustre filesystems, otherwise if \fBpath\fR is +specified print only the usage of that filesystem. If \fB-h\fR is given, the +output is printed in \fIh\fRuman readable format, using SI base-2 suffixes +for \fBM\fRega-, \fBG\fRiga-, \fBT\fRera-, \fBP\fReta-, or \fBE\fRxabytes. .TP .B find To search the directory tree rooted at the given dir/file name for the files that match the given parameters: \fB--atime\fR (file was last accessed N*24 hours ago), \fB--ctime\fR (file's status was last changed N*24 hours ago), \fB--mtime\fR (file's data was last modified N*24 hours ago), \fB--obd\fR (file has an object on a specific OST or OSTs), \fB--size\fR (file has size in bytes, or \fBk\fRilo-, \fBM\fRega-, \fBG\fRiga-, \fBT\fRera-, \fBP\fReta-, or \fBE\fRxabytes if a suffix is given), \fB--type\fR (file has the type: \fBb\fRlock, \fBc\fRharacter, \fBd\fRirectory, \fBp\fRipe, \fBf\fRile, sym\fBl\fRink, \fBs\fRocket, or \fBD\fRoor (Solaris)), \fB--uid\fR (file has specific numeric user ID), \fB--user\fR (file owned by specific user, numeric user ID allowed), \fB--gid\fR (file has specific group ID), \fB--group\fR (file belongs to specific group, numeric group ID allowed). The option \fB--maxdepth\fR limits find to decend at most N levels of directory tree. The options \fB--print\fR and \fB--print0\fR print full file name, followed by a newline or NUL character correspondingly. Using \fB!\fR before an option negates its meaning (\fIfiles NOT matching the parameter\fR). Using \fB+\fR before a numeric value means \fIfiles with the parameter OR MORE\fR, while \fB-\fR before a numeric value means \fIfiles with the parameter OR LESS\fR. diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 2339061..db85e0c 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -1104,7 +1104,7 @@ static int lfs_df(int argc, char **argv) char *mntdir = NULL; int ishow = 0, cooked = 0; int c, rc = 0; - char fsname[PATH_MAX], *pool_name = NULL; + char fsname[PATH_MAX] = "", *pool_name = NULL; struct option long_opts[] = { {"pool", required_argument, 0, 'p'}, {0, 0, 0, 0} @@ -1159,6 +1159,8 @@ static int lfs_df(int argc, char **argv) if (rc) break; printf("\n"); + fsname[0] = '\0'; /* avoid matching in next loop */ + mntdir[0] = '\0'; /* avoid matching in next loop */ } } diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index 4e3360b..205ab72 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -522,6 +522,9 @@ static int get_root_path(int want, char *fsname, int *outfd, char *path, if (!llapi_is_lustre_mnt(&mnt)) continue; + if ((want & WANT_INDEX) && (idx++ != index)) + continue; + mntlen = strlen(mnt.mnt_dir); ptr = strrchr(mnt.mnt_fsname, '/'); if (!ptr && !len) { @@ -530,9 +533,6 @@ static int get_root_path(int want, char *fsname, int *outfd, char *path, } ptr++; - if ((want & WANT_INDEX) && (idx++ != index)) - continue; - /* Check the fsname for a match, if given */ if (!(want & WANT_FSNAME) && fsname != NULL && (strlen(fsname) > 0) && (strcmp(ptr, fsname) != 0)) -- 1.8.3.1