svn commit: r214781 - head/sbin/camcontrol

Alexander Motin mav at FreeBSD.org
Thu Nov 4 20:24:18 UTC 2010


Bruce Cran wrote:
> On Thu, 04 Nov 2010 19:49:24 +0200
> Alexander Motin <mav at FreeBSD.org> wrote:
> 
>> 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.
>>
> 
> Of course rounding up is more suitable. Would the following patch be
> ok:
> 
> Index: camcontrol.c
> ===================================================================
> --- camcontrol.c	(revision 214793)
> +++ camcontrol.c	(working copy)
> @@ -4312,18 +4312,16 @@
>  		cmd = ATA_SLEEP;
>  		t = -1;
>  	}
> +
>  	if (t < 0)
>  		sc = 0;
>  	else if (t <= (240 * 5))
> -		sc = t / 5;
> -	else if (t == (252 * 5))
> +		sc = (t + 4) / 5;
> +	else if (t <= (252 * 5))
>  		/* 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) + 240;
> +		sc = (t - 1) / (30 * 60) + 241;
>  	else
>  		sc = 253;

It seems so. Thank you.

-- 
Alexander Motin


More information about the svn-src-head mailing list