Re: [Aoetools-discuss] Bug#377431: [PATCH] remove bc usage
Brought to you by:
ecashin,
elcapitansam
From: Ed L. C. <ec...@co...> - 2006-10-13 15:11:11
|
On Fri, Oct 13, 2006 at 01:29:00AM +0200, David Mart?nez Moreno wrote: ... > Also, the arithmetic you are using is not really POSIX, as you are expecting > big numbers. The problem is that POSIX arithmetic is limited to 2147483648, > but not in bash, that uses a higher limit. You probably have /bin/sh > pointing to /bin/bash. There are four uses of the shell math, and only one of them can have numbers larger than 2147483648. cd ~/aoetools/ find . -type f ! -name '*~' -print0 | xargs -0 -e grep -n -e '[(][(]' ./aoe-mkshelf.in:12:maxslot=$((nslots - 1)) The AoE protocol has eight bits for the slot address, so that's fine. ./aoe-mkshelf.in:17:minor=$((nslots * shelf * n_partitions)) The maximum minor number in the 2.6 Linux kernel is 1048576, because of the way device numbers are encoded. ./aoe-mkshelf.in:18:endp=$((n_partitions - 1)) Again, you can't be using so many partitions that you run out of usable minor device numbers. ./aoe-stat:24: psize=$(((512000 * sectors) / (1000 * 1000 * 1000))) Here we have an issue. So I guess aoe-stat is really a bash script and not a POSIX script. > Also I do not see the point in running subsequent mkshelf processes from > mkdevs with 'sh', as it is abash script, and it should be marked as > executable. Sometimes it isn't executable, like when it's run from the aoe driver Makefile, and it doesn't hurt to use sh. If it was running inside a tight loop that needed to be optimized, this would matter. Thanks for the helpful input. I notice aoe-stat could be made to do the math using smaller numbers, but it is easier to make it a bash script. I don't think that change will be problematic for most users. -- Ed L Cashin <ec...@co...> |