On Thu, Sep 23, 2010 at 2:24 PM, Loïc Minier <loic.min...@linaro.org> wrote:
> On Wed, Sep 22, 2010, Matt Waddel wrote:
>> fallocate01    1  TFAIL  :  fallocate(5, 0, 49152, 4096) failed: 
>> TEST_ERRNO=EFBIG(27): File too large
>> fallocate01    2  TFAIL  :  fallocate(6, 1, 49152, 4096) failed: 
>> TEST_ERRNO=EFBIG(27): File too large
>> fallocate02    7  TFAIL  :  fallocate(tfile_write_15396:6, 1, 0, 4096) 
>> failed, expected errno:0: TEST_ERRNO=EFBIG(27):
>> File too large
>> fallocate03    1  TFAIL  :  fallocate(tfile_sparse_15397, 0, 8192, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    2  TFAIL  :  fallocate(tfile_sparse_15397, 0, 49152, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    3  TFAIL  :  fallocate(tfile_sparse_15397, 0, 69632, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    4  TFAIL  :  fallocate(tfile_sparse_15397, 0, 102400, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    5  TFAIL  :  fallocate(tfile_sparse_15397, 1, 8192, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    6  TFAIL  :  fallocate(tfile_sparse_15397, 1, 49152, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    7  TFAIL  :  fallocate(tfile_sparse_15397, 1, 77824, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>> fallocate03    8  TFAIL  :  fallocate(tfile_sparse_15397, 1, 106496, 4096) 
>> failed: TEST_ERRNO=EFBIG(27): File too large
>
>  fallocate(2) says EFBIG is returned when offset+len exceeds the maximum
>  file size; this would mean your fs doesn't support files that large.

Correct, but the offset+length being requested here doesn't seem to be
too high (12K in some of the calls). So, its a bit surprising.

BTW, which file system is it ? From last I know, fallocate was
supported on only ext4, ocfs and xfs.

Also, if possible a printk to print the actual values of offset and
length in the kernel (in fs/open.c : do_fallocate()) might give some
pointer on whats going on.

So, something like :

        /* Check for wrap through zero too */
-       if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
+       if (((offset + len) > inode->i_sb->s_maxbytes) ||
+             ((offset + len) < 0)) {
+                printk("sys_fallocate: offset = 0x%x, length = 0x%x
max FS size= 0x%x\n",
+                        offset, len, inode->i_sb->s_maxbytes);
                return -EFBIG;
+        }


If these numbers are higher than whats being passed by LTP test, then
there is something wrong in how ARM is handling fallocate parameters.
Else, the max file size supported by file system should be looked at
(last variable in above printk).

Regards,
Amit Arora

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to