Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 04 Nov 2010 19:49:24 +0200
From:      Alexander Motin <mav@FreeBSD.org>
To:        Bruce Cran <brucec@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r214781 - head/sbin/camcontrol
Message-ID:  <4CD2F224.1040008@FreeBSD.org>
In-Reply-To: <201011041524.oA4FOWd7063812@svn.freebsd.org>
References:  <201011041524.oA4FOWd7063812@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Cran wrote:
> Author: brucec
> Date: Thu Nov  4 15:24:32 2010
> New Revision: 214781
> URL: http://svn.freebsd.org/changeset/base/214781
> 
> Log:
>   Fix standby timer calculation: the timer was being set 30 minutes later
>   than the user requested.
>   Also, 21 minutes is encoded as 252 and 22-29 minutes cannot be encoded
>   so must be rounded up to 30.
>   
>   PR:	bin/151871
> 
> Modified:
>   head/sbin/camcontrol/camcontrol.c
> 
> Modified: head/sbin/camcontrol/camcontrol.c
> ==============================================================================
> --- head/sbin/camcontrol/camcontrol.c	Thu Nov  4 12:33:07 2010	(r214780)
> +++ head/sbin/camcontrol/camcontrol.c	Thu Nov  4 15:24:32 2010	(r214781)
> @@ -4316,10 +4316,17 @@ atapm(struct cam_device *device, int arg
>  		sc = 0;
>  	else if (t <= (240 * 5))
>  		sc = t / 5;
> +	else if (t == (252 * 5))

There should be "<=".

> +		/* special encoding for 21 minutes */
> +		sc = 252;
> +	else if (t < (30 * 60))
> +		/* no encoding exists for 22-29 minutes, so set to 30 mins */
> +		sc = 241;
>  	else if (t <= (11 * 30 * 60))
> -		sc = t / (30 * 60) + 241;
> +		sc = t / (30 * 60) + 240;

This will round period down. You will get 30 minutes instead of 59. In
this case rounding up IMHO more appropriate. I agree that previous
rounding up was over aggressive. I would prefer something like:
		sc = (t - 1) / (30 * 60) + 241;
or at least
		sc = (t + 15 * 60) / (30 * 60) + 240;
This will also make previous range unneeded.

Range "t <= (240 * 5)" probably also should be corrected to round up or
at least closest.

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CD2F224.1040008>