Date: Sat, 26 Nov 2011 09:12:34 -0800 From: Kirk McKusick <mckusick@mckusick.com> To: lev@FreeBSD.org Cc: freebsd-fs@FreeBSD.org Subject: Re: Does UFS2 send BIO_FLUSH to GEOM when update metadata (with softupdates)? Message-ID: <201111261712.pAQHCY8G081783@chez.mckusick.com> In-Reply-To: <147455115.20111126115248@serebryakov.spb.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
Kostik has it right. The requirement for SU and SU+J is simply that the underlying I/O subsystem not issue bio_done on a write until it is on stable store. If the I/O subsystem wants to cache it for a while (multiple seconds) before writing it to disk that is fine (SU thinks in terms of 30-second intervals). The only thing that SU requires is that the subsystem NOT lie by issuing the bio_done before it has committed the data to disk. Perhaps what we need is a "delay acknowledgement until done' flag to make this clear. My previous suggestion of using BIO_BARRIER was just a way to try and enforce this behavior. Based on the performance and other issues raised, this is clearly a bad idea. So, my question to you is how can we reliably get the underlying systems to not lie to us about the stability of our I/O request? Kirk McKusick
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201111261712.pAQHCY8G081783>