Date: Sat, 3 Feb 2007 14:17:43 +0100 From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: Ivan Voras <ivoras@fer.hr> Cc: Pieter de Goeje <pieter@degoeje.nl>, freebsd-current@freebsd.org, freebsd-geom@freebsd.org Subject: Re: First steps towards importing gvirstor into -current Message-ID: <20070203131743.GC64874@garage.freebsd.pl> In-Reply-To: <45C48175.5060704@fer.hr> References: <epspv7$a9e$1@sea.gmane.org> <45C336D7.2060109@fer.hr> <20070202133055.GB21290@garage.freebsd.pl> <200702031238.52771.pieter@degoeje.nl> <45C48175.5060704@fer.hr>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Sat, Feb 03, 2007 at 01:35:01PM +0100, Ivan Voras wrote: > Pieter de Goeje wrote: > > > GEOM_VIRSTOR[1]: All physical space allocated for test > > GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test > > g_vfs_done():virstor/test[WRITE(offset=103153664, length=131072)]error = 28 > > > It spitted out these messages in a tight loop (100% sys load). I was unable to > > Yes, it turns out the file system gets confused if the device reports a > certain size and then returns ENOSPC (error 28) when it shouldn't. > Unfortunately, yanking the device from under the file system would panic > the kernel. Returning EIO could either panic it or "just" end up with a > corrupted file system. Any ideas from the more VFS-savvy? > > The "tight loop" seems to be VFS retrying, inserting the requests to > GEOM layer over and over... I don't think so. ENOSPC should be just returned to the application. What was pasted seems to confirm my thinking: g_vfs_done():virstor/test[WRITE(offset=101842944, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=101974016, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102105088, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102236160, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102367232, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102498304, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102760448, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=102891520, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103022592, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103153664, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103284736, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103415808, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103546880, length=131072)]error = 28 g_vfs_done():virstor/test[WRITE(offset=103677952, length=131072)]error = 28 As you can see the offset increases, so this is not the same I/O request. I'd suggest turning off gvirstor debugging and retry. We should probably also rate-limit errors from g_vfs_done(). -- Pawel Jakub Dawidek http://www.wheel.pl pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFxIt3ForvXbEpPzQRAq9fAJ0RoJieB0/Nw7IKLZy5m4dR3EngtACgr5du AgHzJiDWRCU0FEV5hzA1tD8= =43XW -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070203131743.GC64874>
