From 51048a04298909ff7c322b8b2e58ffdfc57e248b Mon Sep 17 00:00:00 2001 From: Stratos Psomadakis Date: Thu, 22 Dec 2011 23:24:08 +0200 Subject: [PATCH] xsegbd: Don't destroy the segment, if it exists. --- xseg/sys/xsegbd.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/xseg/sys/xsegbd.c b/xseg/sys/xsegbd.c index 10236f8..bf4e57b 100644 --- a/xseg/sys/xsegbd.c +++ b/xseg/sys/xsegbd.c @@ -292,6 +292,7 @@ static struct xseg_peer xseg_peer_xsegdev = { int xsegbd_xseg_init(struct xsegbd *dev) { struct xseg_port *xport; + struct xsegdev *xsegdev; int r; if (!dev->name[0]) @@ -325,12 +326,16 @@ int xsegbd_xseg_init(struct xsegbd *dev) XSEGLOG("WARNING: unexpected segment type '%s' vs 'xsegdev'", dev->config.type); - XSEGLOG("creating segment"); - r = xseg_create(&dev->config); - if (r) { - XSEGLOG("cannot create segment"); - goto err3; + xsegdev = xsegdev_get(0); + if (!xsegdev->segment) { + XSEGLOG("creating segment"); + r = xseg_create(&dev->config); + if (r) { + XSEGLOG("cannot create segment"); + goto err3; + } } + xsegdev_put(xsegdev); XSEGLOG("joining segment"); dev->xseg = xseg_join("xsegdev", "xsegbd"); -- 1.7.10.4