[issue1793] tmpfs calling bawrite instead of buwrite

New submission from Alex Hornung <ahornung@gmail.com>:
While testing lvm root mounts, I've encountered an issue with tmpfs. In the
initrd environment I'm mounting /tmp and /var from tmpfs, and creating a small
directory structure on them. So far so good, but when lvm creates a bunch of
files on one of the mount points, the writes fail.
It seems buwrite() should be called, but bawrite is being called due to the
(uio->uio_segflg == UIO_NOCOPY) check in tmpfs_write.
These screenshots show the symptom:
http://img806.imageshack.us/img806/3512/screenshotdragonflybsdv.png
This second shot shows the relevant flags, etc that are used in the checks
whenever the tmpfs_write bwrite error message is called.
http://img696.imageshack.us/img696/3512/screenshotdragonflybsdv.png
And this is the commit that introduced that check:
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d89ce96a0788eaec175450e8
2a898f3764b99441?hp=b815802035a205b934ffd7e3b2487c7440e7e138
The initrd basically runs an extremely minimalistic /sbin/init that just
launches another extremely minimalistic /etc/rc, which just does the stuff
described above. No swap is activated at this time, of course. Also, there
should be no memory pressure whatsoever.
----------
messages: 8714
nosy: alexh
status: unread
title: tmpfs calling bawrite instead of buwrite
_____________________________________________________
DragonFly issue tracker <bugs@lists.dragonflybsd.org>
<http://bugs.dragonflybsd.org/issue1793>
_____________________________________________________