Subject: Re: File system > 1 Terabyte
To: Jason Thorpe <>
From: Greywolf <>
List: current-users
Date: 09/30/2004 19:29:51
[Thus spake Jason Thorpe ("JT: ") 4:41pm...]

JT: On Sep 30, 2004, at 3:02 PM, Chapman Flack wrote:
JT: > As a matter of mere curiosity (and being too lazy just now to look if
JT: > it's
JT: > explained in the code), why the choice of signed representation for
JT: > fragment
JT: > numbers?  To support disks with reversible motors?
JT: Internally, FFS uses negative block numbers to represent the addresses
JT: of indirect blocks.

this confuses me.

Historically, there were 10 direct block pointers, one single indirect
block pointer, one double indirect block pointer, and one triple indirect
block pointer in the inode.  On that logic, there is no need to have
negative block numbers to reference indirect blocks.

What you've said above indicates that this has changed (ignore the fact
that I think we've been without triple indirect blocks in the inode for
quite some time) such that negative block numbers now reference indirect
blocks.  If this is the case, don't we really have dynamic indirect
blocks, then, and can essentially grow a file without bound since all
we would need would be one block containing pointers to the next level
of indirection...?

[well, without bound to as high as can be represented in 32 bits accounting
for blocksize/fragsize by a bitshift of some magnitude...]

What did I miss?

BSD -> Solaris:		It could be worse.
UNIX -> NT:		It's worse.