On Wed, Jan 04, 2017 at 10:40:38AM +0000, David Binderman wrote:
> Hello there,
> 
> linux-4.10-rc2/fs/ext4/indirect.c:81]: (style) int result is assigned to long 
> variable. If the variable is long to avoid loss of information, then you have 
> loss of information.

The on disk representation of indirect blocks is a u32.  Which is to
say, you can't use an indirect block mapped inode to address physical
block numbers beyond 2**32.  A 64-bit ext4 file system normally only
uses extent-mapped inodes, which can address the full set of block
numbers.

It is _possible_, but rare to have a 64-bit file system with indirect
blocks.  The only way it can happen in practice is with a 32-bit file
system that is later converted to be 64-bit using an off-line
conversion process.

(Which many distributions don't support beecause it's one more thing
for their QA folks to test; it also requires the latest e2fsprogs
1.43.x utilities, and since it's relatively new code, I usually tell
people to backup their file system first.  That way, if it succeeds,
it's faster than doing a backup, mkfs, restore sequence; and if it
fails, you can always fall back to that.  :-)

Cheers,

                                                - Ted

Reply via email to