Re: [PATCH] xfs_quota: only round up timer reporting > 1 day

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 17, 2016 at 11:45:06PM -0500, Eric Sandeen wrote:
> 
> 
> On 5/17/16 10:08 PM, Zorro Lang wrote:
> > On Tue, May 17, 2016 at 02:36:29PM -0500, Eric Sandeen wrote:
> >> I was too hasty with:
> >>
> >> d1fe6ff xfs_quota: remove extra 30 seconds from time limit reporting
> >>
> >> The point of that extra 30s, turns out, was to allow the user
> >> to set a limit, query it, and get back what they just set, if
> >> it is set to more than a day.
> >>
> >> Without it, if we set a grace period to i.e. 3 days, and query it
> >> 1 second later, the rounding in the time_to_string function returns
> >> "2 days" not "3 days" as it did before, because we are at 
> >> 2 days 23:59:59 and it essentially applies a floor() for
> >> brevity.  I guess this was confusing.
> >>
> >> (I've run into this same conundrum on my stove digital timer;
> >> if you set it to 10m, it blinks "10" at you twice so that you
> >> know what you set, then quickly flips to 9 as it counts down).
> >>
> >> In some cases, however (and this is the case that prompted the
> >> prior patch), we display a full "XYZ days hh:mm:ss" - we do this
> >> if the verbose flag is set, or if the timer is less than one day.
> >> In these cases, we should not add the 30s, because we are showing
> >> full time resolution to the user.
> >>
> >> Reported-by: Zorro Lang <zlang@xxxxxxxxxx>
> >> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> >> ---
> >>
> >> (I don't like my patch title, but I can't think of a better one)
> >>
> >> diff --git a/quota/util.c b/quota/util.c
> >> index 7c43fbd..5e988f9 100644
> >> --- a/quota/util.c
> >> +++ b/quota/util.c
> >> @@ -43,6 +43,18 @@ time_to_string(
> >>  		timer = MAX(origin - now, 0);
> >>  	}
> >>  
> >> +	/*
> >> +	 * If we are in verbose mode, or if less than a day remains, we
> >> +	 * will show "X days hh:mm:ss" so the user knows the exact timer status.
> >> +	 *
> >> +	 * Otherwise, we round down to the nearest day - so we add 30s here
> >> +	 * such that setting and reporting a limit in rapid succession will
> >> +	 * show the limit which was just set, rather than immediately reporting
> >> +	 * one day less.
> >> +	 */
> >> +	if ((timer > SECONDS_IN_A_DAY) && !(flags & VERBOSE_FLAG))
> >> +		timer += 30;	/* seconds */
> >> +
> > 
> > hmm... you nearly bring "d1fe6ff" back.
> 
> Yep :)
> 
> But it only messes with "day" reporting, not full-resolution reporting,
> which was why I sent that commit in the first place.  I just missed that
> it was used for sane "set+query" behavior, until you pointed out the
> difference.
> 
> > I don't know if +30s is better, but it
> > nearly won't effect other things. So looks fine for me:)
> > 
> > I have changed the timer in my case from "3days" to "73h", it can keep print
> > "3day" in one hour, that's enough for my case run over. I saw some other cases
> > deal with this problem differently, some cases use a filter likes:
> > 
> >     sed -e "/\[2 days\]/s/2 days/3 days/g"
> > 
> > Even if give more 30s, but maybe someone hope to see 3 days become to 2 days
> > after sleep 5 seconds(although that's really unnecessary).
> 
> Well, at some point it will change as time goes by, of course.
> 
> Unfortunately IIRC I couldn't find the reason for the original commit;  it's
> been that way for a very longtime.  I just had to infer that it was so
> you could set & query and get back the "days" value that was just set.
> 
> > So I think the necessary thing is we make a clear decision and tell the "users"
> > about the timer problem, tell them we will show +30s(or not), tell them the
> > "second" field is always changing, the output can't accurate to the second(it
> > always older than the real time). Let them know, and notice that, and deal with
> > it by themselves if they need.
> 
> Eh, I think this is getting too much into the details.  The user doesn't
> need to know all the details of every single programming decision.  :)

OK, if someone care the details, he will check the code, not only doc:)
I can't find a reason to refuse this patch, and +30s for a day or an hour
is not a big problem need to argue (if you change it to >SECONDS_IN_A_HOUR, it's
OK for me too).

And good news it test passed by run my new xfs/106 case, even I change 73h
back to 3days:) (But I will keep using 73h, looking forword to your review;)

As above, so

Reviewed-by: Zorro Lang <zlang@xxxxxxxxxx>

> 
> -Eric
> 
> > Let the documented problem become a known feature, or we maybe always need
> > to explain it for someone who feel the timer is not correct:)
> > 
> > What do you think?
> > 
> > Thanks,
> > Zorro
> > 
> >>  	days = timer / SECONDS_IN_A_DAY;
> >>  	if (days)
> >>  		timer %= SECONDS_IN_A_DAY;
> >>
> >> _______________________________________________
> >> xfs mailing list
> >> xfs@xxxxxxxxxxx
> >> http://oss.sgi.com/mailman/listinfo/xfs
> > 
> > _______________________________________________
> > xfs mailing list
> > xfs@xxxxxxxxxxx
> > http://oss.sgi.com/mailman/listinfo/xfs
> > 
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux