On Sat, Jul 06, 2002 at 05:33:50PM -0700, Matthew Dillon wrote:
> 
> :
> :On Sat, Jul 06, 2002 at 04:42:22PM -0700, Matthew Dillon wrote:
> :>     Negative block numbers are used by UFS to represent the indirect blocks
> :>     associated with a file, while positive block numbers represent the
> :>     contents of the file.
> :
> :I never saw any negative block numbers in on-disc structures.
> :Now I wonder if it was just hidden behind macros.
> :What is the reason to handle it that way?
> :Do you have some code reference for homework?
> 
>     LOGICAL block numbers, not physical block numbers.

ufs on disc structures are using logical block numbers.
But well I've already found what you mean.

> :>     These are logical block numbers, which are fragment-sized (1K typically).
> :>     So, 2^31 x 1K = 2TB.
> :> 
> :>     Physical block numbers are 512-byte sized, with a range of 2^32
> :>     in -stable.  This also winds up being 2TB.  So increasing the fragment
> :>     size does not help in -stable.
> :
> :It's a proven fact that there is a 1T limit somewhere which was
> :explained with physical block numbers beeing signed.
> 
>     test1# vnconfig -e -s labels -r reserve -S 2t vn0
>     test1# disklabel -r -w vn0 auto
>     test1# disklabel vn0
>     ...
>     bytes/sector: 4096
>     ...
>     8 partitions:
>     #        size   offset    fstype   [fsize bsize bps/cpg]
>       c: 536870912        0    unused        0     0        # (Cyl.    0 - 2097151)
> 
>     Theoretically VN can create up to an 8TB virtual disk because the
>     sector size for a swap-backed VN device is 4K, but I'm not sure I
>     would want to test the theory.
> 
> 
>     With a regular file:
> 
>     test1# vnconfig -e -s labels -T -S 2047g vn0 test.dat
>     test1# disklabel -r -w vn0 auto
>     test1# disklabel vn0
>     ...
>     bytes/sector: 512
>     ...
>       c: 4292870144        0    unused        0     0               # (Cyl.    0 - 2
> 
>     test1# ls -la test.dat
>     -rw---xr--  1 root  wheel  2199023255552 Jul  7 00:31 test.dat
>     test1# 
> 
>     (of course, god help you if you tried to 'newfs' the above!)

But that's the important point.
You can happily create vinum 2T volumes but you can never newfs them,
because daddr_t, which is used in struct buf, is signed.
This case was tested using real disks.

OK you can format a disk using 1k sectors.
But I was told that vm internaly always adapts to 512 byte blocks
using signed 32bit varables so it wouldn't help.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
[EMAIL PROTECTED]         Usergroup           [EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to