All of lore.kernel.org
 help / color / mirror / Atom feed
* Problems with large block devices in 64 bit kernels
@ 2006-09-07 13:19 Christian Schmid
  0 siblings, 0 replies; only message in thread
From: Christian Schmid @ 2006-09-07 13:19 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2417 bytes --]

Andries Brouwer wrote:

 > On Wed, Sep 06, 2006 at 10:54:42PM +0200, Christian Schmid wrote:
 >
 >> I run kernel 2.6.17.11 vanilla in 64 bit mode with 32 bit emulation.
 >> model name      : Intel(R) Xeon(R) CPU            5150  @ 2.66GHz
 >>
 >> Unfortunately there is no support for file-systems bigger than 2 TB in 64-bit mode with 32-bit 
emulation.
 >>
 >> erikm in #kernelnewbies told me to report it here:
 >>
 >> <Dragony> statfs("/MD2", 0xff8deca4)              = -1 EOVERFLOW (Value too large for defined 
data type)
 >
 >
 >
 > Hmm. statfs uses struct statfs which has a 4-byte f_blocks field,
 > and hence cannot hold larger values. You get what you ask for.
 >
 > statfs64 uses struct statfs64 which uses an 8-byte f_blocks field.
 >
 > (And then there is statvfs.)
 >
 > Andries


Hmm I dont think its that easy. Actually the max. value is 16 TB because of 232*4096 (block-size) 
and this works on a 32 bit kernel.

df on 32 bit kernel:
(See attached image. Sorry, this kernel has not the required network-driver included. Had to take a 
screenshot)

SAME df on 64 bit kernel:
write(1, "Filesystem           1K-blocks  "..., 67Filesystem           1K-blocks      Used Available 
Use% Mounted on
) = 67
statfs("/", {f_type=0x58465342, f_bsize=4096, f_blocks=732384, f_bfree=508015, f_files=2939776, 
f_ffree=2901955, f_namelen=255}) = 0
write(1, "/dev/md0               2929536  "..., 58/dev/md0               2929536    897476   2032060 
  31% /
) = 58
statfs("/proc", {f_type="PROC_SUPER_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_files=0, 
f_ffree=0, f_namelen=255}) = 0
statfs("/MD1", {f_type=0x58465342, f_bsize=4096, f_blocks=4407104, f_bfree=4403156, 
f_files=17638656, f_ffree=17638645, f_namelen=255}) = 0
write(1, "/dev/md1              17628416  "..., 61/dev/md1              17628416     15792  17612624 
   1% /MD1
) = 61
statfs("/MD2", 0xffa30614)              = -1 EOVERFLOW (Value too large for defined data type)
write(2, "df: ", 4df: )                     = 4
write(2, "`/MD2\'", 6`/MD2')                  = 6
write(2, ": Value too large for defined da"..., 39: Value too large for defined data type) = 39
write(2, "\n", 1
)                       = 1
statfs("/dev/pts", {f_type=0x1cd1, f_bsize=4096, f_blocks=0, f_bfree=0, f_files=0, f_ffree=0, 
f_namelen=255}) = 0
munmap(0xf7eea000, 4096)                = 0

So its definetly something with the kernel.

Regards,
Christian Schmid

[-- Attachment #2: screen.png --]
[-- Type: image/png, Size: 34863 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-09-07 13:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-07 13:19 Problems with large block devices in 64 bit kernels Christian Schmid

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.