summaryrefslogtreecommitdiffstats
path: root/sbin/gconcat
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-04-04 13:32:00 +0000
committerpjd <pjd@FreeBSD.org>2004-04-04 13:32:00 +0000
commit28ff3ddda6aed3004daabdd6a5001c8076236d9b (patch)
treec92d5885bd0c1e6913ef57c542462985aad06e00 /sbin/gconcat
parent9e272a7b6774195e41bd251b029338c2728be99f (diff)
downloadFreeBSD-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.c4
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);
}
OpenPOWER on IntegriCloud