diff options
author | pjd <pjd@FreeBSD.org> | 2004-04-04 13:32:00 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-04-04 13:32:00 +0000 |
commit | 28ff3ddda6aed3004daabdd6a5001c8076236d9b (patch) | |
tree | c92d5885bd0c1e6913ef57c542462985aad06e00 /sbin/gconcat | |
parent | 9e272a7b6774195e41bd251b029338c2728be99f (diff) | |
download | FreeBSD-src-28ff3ddda6aed3004daabdd6a5001c8076236d9b.zip FreeBSD-src-28ff3ddda6aed3004daabdd6a5001c8076236d9b.tar.gz |
Add a workaround.
Now, if we have for example: ad0s1 ad0s1c ad2s1 ad2s1c and we will try
to do: gconcat label foo /dev/ad0s1 /dev/ad2s1 we'll get a panic:
panic: spoiled but dcr = 1
for inside of geom_slice class, backtrace shows:
g_access()
g_slice_access()
g_access()
g_concat_read_metadata()
We need to get a proper fix for this race before geom(8) will be committed.
Diffstat (limited to 'sbin/gconcat')
-rw-r--r-- | sbin/gconcat/gconcat.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sbin/gconcat/gconcat.c b/sbin/gconcat/gconcat.c index c8a5ca7..7219078 100644 --- a/sbin/gconcat/gconcat.c +++ b/sbin/gconcat/gconcat.c @@ -238,8 +238,6 @@ concat_label(int argc, char *argv[]) if (argc < 2) usage(); - load_module(); - strlcpy(md.md_magic, G_CONCAT_MAGIC, sizeof(md.md_magic)); md.md_version = G_CONCAT_VERSION; strlcpy(md.md_name, argv[0], sizeof(md.md_name)); @@ -294,6 +292,8 @@ concat_label(int argc, char *argv[]) printf("Metadata value stored on %s.\n", argv[i]); } + load_module(); + exit(status); } |