On Wed, Jun 20, 2007 at 09:43:01PM +0000, Ricardo Correia wrote:
> Something that might be useful knowing: zfs-fuse uses the block devices as if 
> it were a normal file and it calls fsync() on the file descriptor when 
> necessary (like in 
> vdev_file.c), but this only guarantees that the kernel buffers are flushed, 
> it doesn't actually send the flush command to the disk (unfortunately there's 
> no 
> DKIOCFLUSHWRITECACHE ioctl equivalent in Linux). Anyway, the possibility that 
> this is the problem seems very remote to me (and it wouldn't explain the 
> second case).

Can't help with other problems, but let me clarify this one. Flushing
disk's write cache is only important in a event of power failure. Disks
like to reorder requests and cache them, so you may end up in situation
where a pointer in uber block was updated, but new block wasn't yet
written to the disk. But until you have power, the lack of
DKIOCFLUSHWRITECACHE shouldn't cause any problems.

PS. In FreeBSD we use BIO_FLUSH for flushing write cache, which I
implemented as a part of different project (gjournal).

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20070621/c4b93774/attachment.bin>

Reply via email to