Allow a larger margin when checking files that are years old.
Re-enable sanity test_56ob.
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Id74e4b737ebb3a2b721d3e3b6d79dffe703ebbe5
Reviewed-on: https://review.whamcloud.com/39433
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
.BR --atime | -A
File was last accessed \fIn\fR*24 hours ago (if no units are given),
or \fIn\fR*\fBs\fReconds, \fBm\fRinutes, \fBh\fRours, \fBd\fRays,
-\fBw\fReeks, or \fBy\fRears ago within a margin of error of 24h,
-or smaller if a unit is specified. Multiple units can be specified,
-for example \fB8h20m\fR is equivalent to \fB500m\fR. If multipe units
+\fBw\fReeks, or \fBy\fRears ago within a margin of error of 24h
+if no unit is specified. Multiple units can be specified,
+for example \fB8h20m\fR is equivalent to \fB500m\fR. If multiple units
are specified, the margin of error is based on the smallest unit used, so
.B -atime 3d
has a margin of error of one day, while
DNE striped directory uses the given filename hashing function, one of:
.RS 1.2i
.TP
+.B crush
+The CRUSH consistent hash function, added in Lustre 2.14, minimizes
+entry migration if the directory stripe count changes during migration.
+.TP
.B fnv_1a_64
The Fowler\-Noll\-Vo hash function, which is a simple and efficient hash.
.TP
.BR glob (7)
file name regular expressions and wildcards.
.TP
-.BR -newer [ XY "] " \fIreference
+.BR --newer [ XY "] " \fIreference
Succeeds if timestamp \fIX\fR of the file being considered is newer
than timestamp \fIY\fR of the file
.IR reference .
.BR lfs-getdirstripe (1),
.BR lfs-migrate (1),
.BR lfs_migrate (1),
-.BR lustre (7)
+.BR lustre (7),
.BR xargs (1)
ALWAYS_EXCEPT="$SANITY_EXCEPT "
# bug number for skipped test: LU-9693 LU-6493 LU-9693
ALWAYS_EXCEPT+=" 42a 42b 42c "
-# bug number: LU-8411 LU-9054 LU-13314
-ALWAYS_EXCEPT+=" 407 312 56ob"
+# bug number: LU-8411 LU-9054
+ALWAYS_EXCEPT+=" 407 312"
if $SHARED_KEY; then
# bug number: LU-9795 LU-9795 LU-9795 LU-9795
cmd="$LFS find $dir -ctime +1s -type f"
nums=$($cmd | wc -l)
(( $nums == $count * 2 + 1)) ||
- error "'$cmd' wrong: found $nums, expected $((expected*2+1))"
+ error "'$cmd' wrong: found $nums, expected $((count * 2 + 1))"
}
run_test 56ob "check lfs find -atime -mtime -ctime with units"
return llapi_poollist(argv[1]);
}
+#define FP_DEFAULT_TIME_MARGIN (24 * 60 * 60)
static time_t set_time(struct find_param *param, time_t *time, time_t *set,
char *str)
{
long long t = 0;
- int res = 0;
+ int sign = 0;
char *endptr = "AD";
char *timebuf;
if (str[0] == '+')
- res = 1;
+ sign = 1;
else if (str[0] == '-')
- res = -1;
+ sign = -1;
- if (res)
+ if (sign)
str++;
for (timebuf = str; *endptr && *(endptr + 1); timebuf = endptr + 1) {
unit *= 52; /* 52 weeks + 1 day below */
case 'w': /* fallthrough */
unit *= 7;
+ if (param->fp_time_margin == FP_DEFAULT_TIME_MARGIN)
+ param->fp_time_margin *= (1 + unit / 52);
+ unit += (*endptr == 'y'); /* +1 day for 365 days/year */
case '\0': /* days are default unit if none used */
case 'd': /* fallthrough */
- unit = (unit + (*endptr == 'y')) * 24;
+ unit *= 24;
case 'h': /* fallthrough */
unit *= 60;
case 'm': /* fallthrough */
t += val * unit;
}
if (*time < t) {
- if (res != 0)
+ if (sign != 0)
str--;
fprintf(stderr, "%s find: bad time '%s': too large\n",
progname, str);
*set = *time - t;
- return res;
+ return sign;
}
static int str2quotaid(__u32 *id, const char *arg)
struct find_param param = {
.fp_max_depth = -1,
.fp_quiet = 1,
- .fp_time_margin = 24 * 60 * 60,
+ .fp_time_margin = FP_DEFAULT_TIME_MARGIN,
};
struct option long_opts[] = {
{ .val = 'A', .name = "atime", .has_arg = required_argument },