Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
b=14836 Fail if "lfs setstripe" has positional parameters
[fs/lustre-release.git]
/
lustre
/
utils
/
lfs.c
diff --git
a/lustre/utils/lfs.c
b/lustre/utils/lfs.c
index
7754ccd
..
20f2d60
100644
(file)
--- a/
lustre/utils/lfs.c
+++ b/
lustre/utils/lfs.c
@@
-162,7
+162,8
@@
command_t cmdlist[] = {
{"join", lfs_join, 0,
"join two lustre files into one.\n"
"obsolete, HEAD does not support it anymore.\n"},
- {"osts", lfs_osts, 0, "osts"},
+ {"osts", lfs_osts, 0, "list OSTs connected to client "
+ "[for specified path only]\n" "usage: osts [path]"},
{"df", lfs_df, 0,
"report filesystem disk space usage or inodes usage"
"of each MDS and all OSDs or a batch belonging to a specific pool .\n"
@@
-291,18
+292,12
@@
static int lfs_setstripe(int argc, char **argv)
st_offset = -1;
st_count = 0;
-#if LUSTRE_VERSION < OBD_OCD_VERSION(2,
1,
0,0)
+#if LUSTRE_VERSION < OBD_OCD_VERSION(2,
4,5
0,0)
if (argc == 5 && argv[1][0] != '-' &&
isnumber(argv[2]) && isnumber(argv[3]) && isnumber(argv[4])) {
- fprintf(stderr, "
warning: deprecated
usage of setstripe "
+ fprintf(stderr, "
error: obsolete
usage of setstripe "
"positional parameters. Use -c, -i, -s instead.\n");
- /* for compatibility with the existing positional parameter
- * usage */
- fname = argv[1];
- stripe_size_arg = argv[2];
- stripe_off_arg = argv[3];
- stripe_count_arg = argv[4];
- optind = 4;
+ return CMD_HELP;
} else
#else
#warning "remove obsolete positional parameter code"
@@
-499,7
+494,6
@@
static int lfs_find(int argc, char **argv)
int c, ret;
time_t t;
struct find_param param = { .maxdepth = -1 };
- char str[1024];
struct option long_opts[] = {
/* New find options. */
{"atime", required_argument, 0, 'A'},
@@
-581,29
+575,20
@@
static int lfs_find(int argc, char **argv)
case 'A':
xtime = ¶m.atime;
xsign = ¶m.asign;
+ param.exclude_atime = !!neg_opt;
case 'C':
if (c == 'C') {
xtime = ¶m.ctime;
xsign = ¶m.csign;
+ param.exclude_ctime = !!neg_opt;
}
case 'M':
if (c == 'M') {
xtime = ¶m.mtime;
xsign = ¶m.msign;
+ param.exclude_mtime = !!neg_opt;
}
new_fashion = 1;
- if (neg_opt) {
- if (optarg[0] == '-')
- optarg[0] = '+';
- else if (optarg[0] == '+')
- optarg[0] = '-';
- else {
- str[0] = '-';
- str[1] = '\0';
- strcat(str, optarg);
- optarg = str;
- }
- }
ret = set_time(&t, xtime, optarg);
if (ret == INT_MAX)
return -1;
@@
-734,18
+719,6
@@
static int lfs_find(int argc, char **argv)
};
break;
case 's':
- if (neg_opt) {
- if (optarg[0] == '-')
- optarg[0] = '+';
- else if (optarg[0] == '+')
- optarg[0] = '-';
- else {
- str[0] = '-';
- str[1] = '\0';
- strcat(str, optarg);
- optarg = str;
- }
- }
if (optarg[0] == '+')
param.size_sign = -1;
else if (optarg[0] == '-')
@@
-760,6
+733,8
@@
static int lfs_find(int argc, char **argv)
optarg);
return ret;
}
+ param.check_size = 1;
+ param.exclude_size = !!neg_opt;
break;
case 'v':
new_fashion = 0;
@@
-879,7
+854,10
@@
static int lfs_getstripe(int argc, char **argv)
}
break;
case 'p':
- param.verbose |= VERBOSE_POOL;
+ if (!(param.verbose & VERBOSE_DETAIL)) {
+ param.verbose |= VERBOSE_POOL;
+ param.maxdepth = 0;
+ }
break;
case 'M':
param.get_mdt_index = 1;
@@
-916,20
+894,33
@@
static int lfs_getstripe(int argc, char **argv)
static int lfs_osts(int argc, char **argv)
{
- char mntdir[PATH_MAX] = {'\0'};
+ char mntdir[PATH_MAX] = {'\0'}
, path[PATH_MAX] = {'\0'}
;
struct find_param param;
int index = 0, rc=0;
- if (argc
!= 1
)
+ if (argc
> 2
)
return CMD_HELP;
- while (llapi_search_mounts(NULL, index++, mntdir, NULL) == 0) {
+ if (argc == 2 && !realpath(argv[1], path)) {
+ rc = -errno;
+ fprintf(stderr, "error: invalid path '%s': %s\n",
+ argv[1], strerror(-rc));
+ return rc;
+ }
+
+ while (!llapi_search_mounts(path, index++, mntdir, NULL)) {
+ /* Check if we have a mount point */
+ if (mntdir[0] == '\0')
+ continue;
+
memset(¶m, 0, sizeof(param));
rc = llapi_ostlist(mntdir, ¶m);
if (rc) {
fprintf(stderr, "error: %s: failed on %s\n",
argv[0], mntdir);
}
+ if (path[0] != '\0')
+ break;
memset(mntdir, 0, PATH_MAX);
}
@@
-980,8
+971,8
@@
static int showdf(char *mntdir, struct obd_statfs *stat,
total = (stat->os_blocks * stat->os_bsize) >> shift;
}
- if (
total
> 0)
- ratio = (double)used / (double)
total
;
+ if (
(used + avail)
> 0)
+ ratio = (double)used / (double)
(used + avail)
;
if (cooked) {
int i;
@@
-1013,7
+1004,7
@@
static int showdf(char *mntdir, struct obd_statfs *stat,
sprintf(abuf, CDF, avail);
}
- sprintf(rbuf, RDF, (int)(ratio * 100));
+ sprintf(rbuf, RDF, (int)(ratio * 100
+ 0.5
));
printf(UUF" "CSF" "CSF" "CSF" "RSF" %-s",
uuid, tbuf, ubuf, abuf, rbuf, mntdir);
if (type)
@@
-1088,18
+1079,14
@@
static int mntdf(char *mntdir, char *fsname, char *pool, int ishow, int cooked)
/* the llapi_obd_statfs() call may have returned with
* an error, but if it filled in uuid_buf we will at
* lease use that to print out a message for that OBD.
- * If we didn't
even fill in uuid_buf something is
- *
definitely incorrect and no point in continuing
. */
- if (uuid_buf.uuid[0]
!= '\0') {
- s
howdf(mntdir,&stat_buf,obd_uuid2str(&uuid_buf)
,
-
ishow, cooked, tp->st_name, index, rc
);
- } else {
-
char tmp_uuid[12]
;
+ * If we didn't
get anything in the uuid_buf, then fill
+ *
it in so that we can print an error message
. */
+ if (uuid_buf.uuid[0]
== '\0')
+ s
printf(uuid_buf.uuid, "%s%04x"
,
+
tp->st_name, index
);
+ showdf(mntdir,&stat_buf,obd_uuid2str(&uuid_buf),
+
ishow, cooked, tp->st_name, index, rc)
;
- sprintf(tmp_uuid, "%s%04x", tp->st_name, index);
- showdf(mntdir, &stat_buf, tmp_uuid,
- ishow, cooked, tp->st_name, index, rc);
- }
if (rc == 0) {
if (tp->st_op == LL_STATFS_MDC) {
sum.os_ffree += stat_buf.os_ffree;
@@
-1120,16
+1107,15
@@
static int mntdf(char *mntdir, char *fsname, char *pool, int ishow, int cooked)
printf("\n");
showdf(mntdir, &sum, "filesystem summary:", ishow, cooked, NULL, 0,0);
-
+ printf("\n");
return 0;
}
static int lfs_df(int argc, char **argv)
{
- char *path = NULL;
- char *mntdir = NULL;
+ char mntdir[PATH_MAX] = {'\0'}, path[PATH_MAX] = {'\0'};
int ishow = 0, cooked = 0;
- int c, rc = 0;
+ int c, rc = 0
, index = 0
;
char fsname[PATH_MAX] = "", *pool_name = NULL;
struct option long_opts[] = {
{"pool", required_argument, 0, 'p'},
@@
-1152,46
+1138,25
@@
static int lfs_df(int argc, char **argv)
return CMD_HELP;
}
}
- if (optind < argc )
- path = argv[optind];
-
- if ((mntdir = malloc(PATH_MAX)) == NULL) {
- fprintf(stderr, "error: cannot allocate %d bytes\n",
- PATH_MAX);
- return -ENOMEM;
+ if (optind < argc && !realpath(argv[optind], path)) {
+ rc = -errno;
+ fprintf(stderr, "error: invalid path '%s': %s\n",
+ argv[optind], strerror(-rc));
+ return rc;
}
- memset(mntdir, 0, PATH_MAX);
- if (path) {
- char rpath[PATH_MAX] = {'\0'};
-
- if (!realpath(path, rpath)) {
- rc = -errno;
- fprintf(stderr, "error: invalid path '%s': %s\n",
- path, strerror(-rc));
- } else {
- rc = llapi_search_mounts(rpath, 0, mntdir, fsname);
- if (rc == 0 && mntdir[0] != '\0') {
- rc = mntdf(mntdir, fsname, pool_name,
- ishow, cooked);
- printf("\n");
- }
- }
- } else {
- int index = 0;
+ while (!llapi_search_mounts(path, index++, mntdir, fsname)) {
+ /* Check if we have a mount point */
+ if (mntdir[0] == '\0')
+ continue;
- while (llapi_search_mounts(NULL, index++, mntdir, fsname)==0) {
- rc = mntdf(mntdir, fsname, pool_name,
- ishow, cooked);
- if (rc)
- break;
- printf("\n");
- fsname[0] = '\0'; /* avoid matching in next loop */
- mntdir[0] = '\0'; /* avoid matching in next loop */
- }
+ rc = mntdf(mntdir, fsname, pool_name, ishow, cooked);
+ if (rc || path[0] != '\0')
+ break;
+ fsname[0] = '\0'; /* avoid matching in next loop */
+ mntdir[0] = '\0'; /* avoid matching in next loop */
}
- free(mntdir);
return rc;
}
@@
-2387,10
+2352,14
@@
static int lfs_changelog(int argc, char **argv)
time_t secs;
struct tm ts;
- if (endrec && rec->cr_index > endrec)
+ if (endrec && rec->cr_index > endrec) {
+ llapi_changelog_free(&rec);
break;
- if (rec->cr_index < startrec)
+ }
+ if (rec->cr_index < startrec) {
+ llapi_changelog_free(&rec);
continue;
+ }
secs = rec->cr_time >> 30;
gmtime_r(&secs, &ts);