Date: Sat, 3 Feb 2007 12:38:52 +0100 From: Pieter de Goeje <pieter@degoeje.nl> To: Pawel Jakub Dawidek <pjd@freebsd.org> Cc: freebsd-current@freebsd.org, Ivan Voras <ivoras@fer.hr>, freebsd-geom@freebsd.org Subject: Re: First steps towards importing gvirstor into -current Message-ID: <200702031238.52771.pieter@degoeje.nl> In-Reply-To: <20070202133055.GB21290@garage.freebsd.pl> References: <epspv7$a9e$1@sea.gmane.org> <45C336D7.2060109@fer.hr> <20070202133055.GB21290@garage.freebsd.pl>
next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_MRHxFtMRijoJiS8
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
On Friday 02 February 2007 14:30, Pawel Jakub Dawidek wrote:
> The API for geom(8) command have changed at some point. Where you used
> G_TYPE_NONE, you should now use G_TYPE_BOOL.
Ok, with this little change it worked. (patch attached)
I created a 10GB virtual storage on two 2GB partitions.
Copying around the freebsd source tree on it worked great and
performance was as expected.
Also as expected it issued a warning when starting to use the second
component. However, when I tried to overflow the filesystem, it went wrong:
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
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=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
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
GEOM_VIRSTOR[1]: All physical space allocated for test
GEOM_VIRSTOR[5]: Failed to allocate physical chunk for virstor/test
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
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
It spitted out these messages in a tight loop (100% sys load). I was unable to
recover the system from this situation. Steps I did to recreate this
situation:
# gvirstor label -s 10000 test /dev/ad0s3b /dev/ad1s1b
(total physical storage is 4GB)
# newfs -U /dev/virstor/test
# mount /dev/virstor/test /mnt
# dd if=/dev/zero of=/mnt/testfile bs=64k
Also, no warning was issued when it aproached 0% free physical space.
I would expect the system to simply abort the write operation (possibly
needing a background fsck after adding another component to make more space).
Regards,
Pieter de Goeje
--Boundary-00=_MRHxFtMRijoJiS8
Content-Type: text/x-diff;
charset="utf-8";
name="geom_virstor-patch2"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="geom_virstor-patch2"
--- gvirstor.orig/geom_virstor.c Sat Feb 3 10:42:44 2007
+++ gvirstor/geom_virstor.c Sat Feb 3 10:56:12 2007
@@ -68,7 +68,7 @@
},
{"label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, virstor_main,
{
- {'h', "hardcode", NULL, G_TYPE_NONE},
+ {'h', "hardcode", NULL, G_TYPE_BOOL},
{'m', "chunk_size", &chunk_size, G_TYPE_NUMBER},
{'s', "vir_size", &vir_size, G_TYPE_NUMBER},
G_OPT_SENTINEL
@@ -77,21 +77,21 @@
},
{"destroy", G_FLAG_VERBOSE, NULL,
{
- {'f', "force", NULL, G_TYPE_NONE},
+ {'f', "force", NULL, G_TYPE_BOOL},
G_OPT_SENTINEL
},
"[-fv] name ..."
},
{"stop", G_FLAG_VERBOSE, NULL,
{
- {'f', "force", NULL, G_TYPE_NONE},
+ {'f', "force", NULL, G_TYPE_BOOL},
G_OPT_SENTINEL
},
"[-fv] name ... (alias for \"destroy\")"
},
{"add", G_FLAG_VERBOSE, NULL,
{
- {'h', "hardcode", NULL, G_TYPE_NONE},
+ {'h', "hardcode", NULL, G_TYPE_BOOL},
G_OPT_SENTINEL
},
"[-vh] name prov [prov ...]"
--Boundary-00=_MRHxFtMRijoJiS8--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702031238.52771.pieter>
