Bug 203303 - Unexpected reading behavior of a md(4) device when it is backed by a file which is smaller than the size passed via -s
Summary: Unexpected reading behavior of a md(4) device when it is backed by a file whi...
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 10.2-STABLE
Hardware: Any Any
: --- Affects Many People
Assignee: freebsd-bugs (Nobody)
Depends on:
Reported: 2015-09-24 08:29 UTC by Roberto Fernandez Cueto
Modified: 2020-11-06 17:18 UTC (History)
1 user (show)

See Also:

Script to reproduce the issue (887 bytes, application/x-shellscript)
2020-11-06 17:14 UTC, Mateusz Piotrowski
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Roberto Fernandez Cueto 2015-09-24 08:29:57 UTC
We create a 32M file using on a ufs filesystem:
dd if=/dev/random of=/tmp/test.file bs=32M count=1

Once a md device is created using the following command:
mdconfig -at vnode -f /tmp/test.file -s 64M

then, we try to execute the next command:

dd if=/dev/md0 of=cpy_test.file bs=16M

We get a file that is 64M long. We expected some error after 32M, but the operation succeed.
The exceeding 32M of cpy_test.file is the last 16M of the original file repeated twice.

More interesting, when we use newfs on the md0 device:
newfs /dev/md0

we get that the file "/tmp/test.file" under md0 becomes automatically 64M large.
Comment 1 Mateusz Piotrowski freebsd_committer 2020-11-06 17:14:54 UTC
Created attachment 219399 [details]
Script to reproduce the issue

Here's a script to reproduce it on FreeBSD 13.0-CURRENT r367038 amd64.