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=20101 a fix for lfs getstripe --pool
[fs/lustre-release.git]
/
lustre
/
utils
/
liblustreapi.c
diff --git
a/lustre/utils/liblustreapi.c
b/lustre/utils/liblustreapi.c
index
d5292f7
..
2167131
100644
(file)
--- a/
lustre/utils/liblustreapi.c
+++ b/
lustre/utils/liblustreapi.c
@@
-592,7
+592,7
@@
int llapi_search_mounts(const char *pathname, int index, char *mntdir,
{
int want = WANT_PATH, idx = -1;
- if (!pathname) {
+ if (!pathname
|| pathname[0] == '\0'
) {
want |= WANT_INDEX;
idx = index;
} else
@@
-1434,8
+1434,10
@@
static void lov_dump_user_lmm_header(struct lov_user_md *lum, char *path,
}
if ((verbose & VERBOSE_POOL) && (pool_name != NULL)) {
- llapi_printf(LLAPI_MSG_NORMAL, "pool: %s", pool_name);
- is_dir = 1;
+ if (verbose & ~VERBOSE_POOL)
+ llapi_printf(LLAPI_MSG_NORMAL, "%spool: ",
+ prefix);
+ llapi_printf(LLAPI_MSG_NORMAL, "%s%c", pool_name, nl);
}
if (is_dir && (verbose != VERBOSE_OBJID))
@@
-1603,28
+1605,26
@@
int llapi_file_lookup(int dirfd, const char *name)
* Note: 5th actually means that the value is within the interval
* (limit - margin, limit]. */
static int find_value_cmp(unsigned int file, unsigned int limit, int sign,
- unsigned long long margin, int mds)
+
int negopt,
unsigned long long margin, int mds)
{
+ int ret = -1;
+
if (sign > 0) {
- if (file < limit)
- return mds ? 0 : 1;
- }
-
- if (sign == 0) {
- if (file <= limit && file + margin > limit)
- return mds ? 0 : 1;
- if (file + margin <= limit)
- return mds ? 0 : -1;
- }
-
- if (sign < 0) {
- if (file > limit)
- return 1;
- if (mds)
- return 0;
+ if (file <= limit)
+ ret = mds ? 0 : 1;
+ } else if (sign == 0) {
+ if (file <= limit && file + margin >= limit)
+ ret = mds ? 0 : 1;
+ else if (file + margin <= limit)
+ ret = mds ? 0 : -1;
+ } else if (sign < 0) {
+ if (file >= limit)
+ ret = 1;
+ else if (mds)
+ ret = 0;
}
- return
-1
;
+ return
negopt ? ~ret + 1 : ret
;
}
/* Check if the file time matches all the given criteria (e.g. --atime +/-N).
@@
-1642,7
+1642,8
@@
static int find_time_check(lstat_t *st, struct find_param *param, int mds)
/* Check if file is accepted. */
if (param->atime) {
ret = find_value_cmp(st->st_atime, param->atime,
- param->asign, 24 * 60 * 60, mds);
+ param->asign, param->exclude_atime,
+ 24 * 60 * 60, mds);
if (ret < 0)
return ret;
rc = ret;
@@
-1650,7
+1651,8
@@
static int find_time_check(lstat_t *st, struct find_param *param, int mds)
if (param->mtime) {
ret = find_value_cmp(st->st_mtime, param->mtime,
- param->msign, 24 * 60 * 60, mds);
+ param->msign, param->exclude_mtime,
+ 24 * 60 * 60, mds);
if (ret < 0)
return ret;
@@
-1662,7
+1664,8
@@
static int find_time_check(lstat_t *st, struct find_param *param, int mds)
if (param->ctime) {
ret = find_value_cmp(st->st_ctime, param->ctime,
- param->csign, 24 * 60 * 60, mds);
+ param->csign, param->exclude_ctime,
+ 24 * 60 * 60, mds);
if (ret < 0)
return ret;
@@
-1715,7
+1718,7
@@
static int cb_find_init(char *path, DIR *parent, DIR *dir,
/* If a time or OST should be checked, the decision is not taken yet. */
if (param->atime || param->ctime || param->mtime || param->obduuid ||
- param->size)
+ param->
check_
size)
decision = 0;
ret = 0;
@@
-1896,7
+1899,7
@@
obd_matches:
'glimpse-size-ioctl'. */
if (!decision && S_ISREG(st->st_mode) &&
param->lmd->lmd_lmm.lmm_stripe_count &&
- (param->size ||param->atime || param->mtime || param->ctime)) {
+ (param->
check_
size ||param->atime || param->mtime || param->ctime)) {
if (param->obdindex != OBD_NOT_FOUND) {
/* Check whether the obd is active or not, if it is
* not active, just print the object affected by this
@@
-1949,10
+1952,10
@@
obd_matches:
goto decided;
}
- if (param->size)
+ if (param->
check_
size)
decision = find_value_cmp(st->st_size, param->size,
- param->size_sign, param->
size_units
,
- 0);
+ param->size_sign, param->
exclude_size
,
+
param->size_units,
0);
print_path:
if (decision != -1) {
@@
-2995,10
+2998,9
@@
int llapi_changelog_clear(const char *mdtname, const char *idstr,
int llapi_fid2path(const char *device, const char *fidstr, char *buf,
int buflen, long long *recno, int *linkno)
{
- char path[PATH_MAX];
struct lu_fid fid;
struct getinfo_fid2path *gf;
- int
fd,
rc;
+ int rc;
while (*fidstr == '[')
fidstr++;
@@
-3011,26
+3013,16
@@
int llapi_fid2path(const char *device, const char *fidstr, char *buf,
return -EINVAL;
}
- /* Take path or fsname */
- if (device[0] == '/') {
- strcpy(path, device);
- } else {
- rc = get_root_path(WANT_PATH | WANT_ERROR, (char *)device,
- NULL, path, -1);
- if (rc < 0)
- return rc;
- }
- sprintf(path, "%s/%s/fid/%s", path, dot_lustre_name, fidstr);
- fd = open(path, O_RDONLY | O_NONBLOCK);
- if (fd < 0)
- return -errno;
-
gf = malloc(sizeof(*gf) + buflen);
+ if (gf == NULL)
+ return -ENOMEM;
gf->gf_fid = fid;
gf->gf_recno = *recno;
gf->gf_linkno = *linkno;
gf->gf_pathlen = buflen;
- rc = ioctl(fd, OBD_IOC_FID2PATH, gf);
+
+ /* Take path or fsname */
+ rc = root_ioctl(device, OBD_IOC_FID2PATH, gf, NULL, 0);
if (rc) {
llapi_err(LLAPI_MSG_ERROR, "ioctl err %d", rc);
} else {
@@
-3040,7
+3032,6
@@
int llapi_fid2path(const char *device, const char *fidstr, char *buf,
}
free(gf);
- close(fd);
return rc;
}