Red Hat Bugzilla – Bug 646498
[6.0] write system call returns with 0 when it should return with EFBIG.
Last modified: 2016-04-18 01:55:40 EDT
Description of problem: [6.0] write system call returns with 0 when it should return with EFBIG. Version-Release number of selected component (if applicable): V6.0 How reproducible: By running the following reproducer(Step to Reproduce), we can confirm that the write system call returns with 0 when it should return the error EFBIG. This fix is already included in 2.6.36-rc1. (http://marc.info/?l=git-commits-head&m=128121851624648&w=2) Please apply it. Version-Release number of selected component: Red Hat Enterprise Linux Version Number: RHEL6 Release Number: 6.0rc Architecture: x86_64 Kernel Version: 2.6.32-71.el6 Related Package Version: kernel Related Middleware / Application: None Step to Reproduce: ------------------------------------------------------------------------------- #!/bin/sh /bin/dd if=/dev/zero of=./img bs=1k count=1 seek=1024k > /dev/null 2>&1 /sbin/mkfs.ext3 -Fq ./img /bin/mount -o loop -t ext4 ./img /mnt /bin/touch /mnt/file /usr/bin/strace /bin/dd if=/dev/zero of=/mnt/file conv=notrunc bs=1k count=1 \ seek=$((2194719883264/1024)) 2>&1 | /bin/egrep "write.* 1024\) = " /bin/umount /mnt exit ------------------------------------------------------------------------------- Run this script. Actual Results: write system call returns with 0 in this case. Expected Results: write system call returns with EFBIG in this case.
Just as a general note, using the ext4 driver for ext3 filesystems in RHEL6 is not recommended. We can fix this, but it's not the preferred mode of operation.
Upstream commit: commit d889dc8382c4d71b6d538b7b13777bc1ec51df10 Author: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com> Date: Tue Jul 27 11:56:07 2010 -0400 ext4: fix EFBIG edge case when writing to large non-extent file By running the following reproducer, we can confirm that the write system call returns with 0 when it should return the error EFBIG. #!/bin/sh /bin/dd if=/dev/zero of=./img bs=1k count=1 seek=1024k > /dev/null 2>&1 /sbin/mkfs.ext3 -Fq ./img /bin/mount -o loop -t ext4 ./img /mnt /bin/touch /mnt/file strace /bin/dd if=/dev/zero of=/mnt/file conv=notrunc bs=1k count=1 seek=$((2194719883264/1024)) 2>&1 | /bin/egrep "w /bin/umount /mnt exit Signed-off-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: Eric Sandeen <sandeen@redhat.com>
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
Patch(es) available on kernel-2.6.32-91.el6
Reproduced in 2.6.32-90.el6 and verified in 2.6.32-91.el6.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0542.html