Whamcloud - gitweb
land clio.
[fs/lustre-release.git] / lustre / utils / obdiolib.c
index 8c79c67..fa272db 100644 (file)
@@ -1,24 +1,41 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- *  Copyright (C) 2003 Cluster File Systems, Inc.
- *   Author: Eric Barton <eeb@clusterfs.com>
+ * GPL HEADER START
  *
- *   This file is part of Lustre, http://www.lustre.org.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
- *   Lustre is free software; you can redistribute it and/or
- *   modify it under the terms of version 2 of the GNU General Public
- *   License as published by the Free Software Foundation.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
  *
- *   Lustre is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
  *
- *   You should have received a copy of the GNU General Public License
- *   along with Lustre; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/utils/obdiolib.c
+ *
+ * Author: Eric Barton <eeb@clusterfs.com>
  */
 
 #include <stdio.h>
@@ -38,8 +55,7 @@ obdio_iocinit (struct obdio_conn *conn)
 {
         memset (&conn->oc_data, 0, sizeof (conn->oc_data));
         conn->oc_data.ioc_version = OBD_IOCTL_VERSION;
-        conn->oc_data.ioc_addr = conn->oc_conn_addr;
-        conn->oc_data.ioc_cookie = conn->oc_conn_cookie;
+        conn->oc_data.ioc_dev = conn->oc_device;
         conn->oc_data.ioc_len = sizeof (conn->oc_data);
 }
 
@@ -52,9 +68,9 @@ obdio_ioctl (struct obdio_conn *conn, int cmd)
 
         rc = obd_ioctl_pack (&conn->oc_data, &buf, sizeof (conn->oc_buffer));
         if (rc != 0) {
-                fprintf (stderr, "obdio_ioctl: obd_ioctl_pack: %d (%s)\n",
-                         rc, strerror (errno));
-                abort ();
+                fprintf(stderr, "%s: obd_ioctl_pack: %d (%s)\n",
+                        __FUNCTION__, rc, strerror(errno));
+                abort();
         }
 
         rc = ioctl (conn->oc_fd, cmd, buf);
@@ -63,8 +79,8 @@ obdio_ioctl (struct obdio_conn *conn, int cmd)
 
         rc2 = obd_ioctl_unpack (&conn->oc_data, buf, sizeof (conn->oc_buffer));
         if (rc2 != 0) {
-                fprintf (stderr, "obdio_ioctl: obd_ioctl_unpack: %d (%s)\n",
-                         rc2, strerror (errno));
+                fprintf(stderr, "%s: obd_ioctl_unpack: %d (%s)\n",
+                        __FUNCTION__, rc2, strerror(errno));
                 abort ();
         }
 
@@ -75,41 +91,22 @@ struct obdio_conn *
 obdio_connect (int device)
 {
         struct obdio_conn  *conn;
-        int                 rc;
 
         conn = malloc (sizeof (*conn));
         if (conn == NULL) {
-                fprintf (stderr, "obdio_connect: no memory\n");
+                fprintf (stderr, "%s: no memory\n", __FUNCTION__);
                 return (NULL);
         }
         memset (conn, 0, sizeof (*conn));
 
         conn->oc_fd = open ("/dev/obd", O_RDWR);
         if (conn->oc_fd < 0) {
-                fprintf (stderr, "obdio_connect: Can't open /dev/obd: %s\n",
-                         strerror (errno));
+                fprintf(stderr, "%s: Can't open /dev/obd: %s\n",
+                        __FUNCTION__, strerror(errno));
                 goto failed;
         }
 
-        obdio_iocinit (conn);
-        conn->oc_data.ioc_dev = device;
-        rc = obdio_ioctl (conn, OBD_IOC_DEVICE);
-        if (rc != 0) {
-                fprintf (stderr, "obdio_connect: Can't set device %d: %s\n",
-                         device, strerror (errno));
-                goto failed;
-        }
-
-        obdio_iocinit (conn);
-        rc = obdio_ioctl (conn, OBD_IOC_CONNECT);
-        if (rc != 0) {
-                fprintf (stderr, "obdio_connect: Can't connect to device %d: %s\n",
-                         device, strerror (errno));
-                goto failed;
-        }
-
-        conn->oc_conn_addr = conn->oc_data.ioc_addr;
-        conn->oc_conn_cookie = conn->oc_data.ioc_cookie;
+        conn->oc_device = device;
         return (conn);
 
  failed:
@@ -118,7 +115,7 @@ obdio_connect (int device)
 }
 
 void
-obdio_disconnect (struct obdio_conn *conn)
+obdio_disconnect (struct obdio_conn *conn, int flags)
 {
         close (conn->oc_fd);
         /* obdclass will automatically close on last ref */
@@ -126,48 +123,15 @@ obdio_disconnect (struct obdio_conn *conn)
 }
 
 int
-obdio_open (struct obdio_conn *conn, uint64_t oid, struct lustre_handle *fh)
-{
-        int    rc;
-
-        obdio_iocinit (conn);
-
-        conn->oc_data.ioc_obdo1.o_id = oid;
-        conn->oc_data.ioc_obdo1.o_mode = S_IFREG;
-        conn->oc_data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_FLMODE;
-
-        rc = obdio_ioctl (conn, OBD_IOC_OPEN);
-
-        if (rc == 0)
-                memcpy (fh, obdo_handle(&conn->oc_data.ioc_obdo1), sizeof (*fh));
-
-        return (rc);
-}
-
-int
-obdio_close (struct obdio_conn *conn, uint64_t oid, struct lustre_handle *fh)
+obdio_pread (struct obdio_conn *conn, __u64 oid,
+             void *buffer, __u32 count, __u64 offset)
 {
         obdio_iocinit (conn);
 
-
         conn->oc_data.ioc_obdo1.o_id = oid;
         conn->oc_data.ioc_obdo1.o_mode = S_IFREG;
-        memcpy (obdo_handle (&conn->oc_data.ioc_obdo1), fh, sizeof (*fh));
-        conn->oc_data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLTYPE |
-                                          OBD_MD_FLMODE | OBD_MD_FLHANDLE;
-
-        return (obdio_ioctl (conn, OBD_IOC_CLOSE));
-}
-
-int
-obdio_pread (struct obdio_conn *conn, uint64_t oid,
-             char *buffer, uint32_t count, uint64_t offset)
-{
-        obdio_iocinit (conn);
-
-        conn->oc_data.ioc_obdo1.o_id = oid;
-        conn->oc_data.ioc_obdo1.o_mode = S_IFREG;
-        conn->oc_data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_FLMODE;
+        conn->oc_data.ioc_obdo1.o_valid =
+                OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_FLMODE;
 
         conn->oc_data.ioc_pbuf2 = buffer;
         conn->oc_data.ioc_plen2 = count;
@@ -178,15 +142,18 @@ obdio_pread (struct obdio_conn *conn, uint64_t oid,
 }
 
 int
-obdio_pwrite (struct obdio_conn *conn, uint64_t oid,
-              char *buffer, uint32_t count, uint64_t offset)
+obdio_pwrite (struct obdio_conn *conn, __u64 oid,
+              void *buffer, __u32 count, __u64 offset)
 {
         obdio_iocinit (conn);
 
         conn->oc_data.ioc_obdo1.o_id = oid;
         conn->oc_data.ioc_obdo1.o_mode = S_IFREG;
-        conn->oc_data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_FLMODE;
+        conn->oc_data.ioc_obdo1.o_valid =
+                OBD_MD_FLID | OBD_MD_FLTYPE | OBD_MD_FLMODE;
 
+        conn->oc_data.ioc_pbuf1 = (void*)1;
+        conn->oc_data.ioc_plen1 = 1;
         conn->oc_data.ioc_pbuf2 = buffer;
         conn->oc_data.ioc_plen2 = count;
         conn->oc_data.ioc_count = count;
@@ -196,8 +163,8 @@ obdio_pwrite (struct obdio_conn *conn, uint64_t oid,
 }
 
 int
-obdio_enqueue (struct obdio_conn *conn, uint64_t oid,
-               int mode, uint64_t offset, uint32_t count,
+obdio_enqueue (struct obdio_conn *conn, __u64 oid,
+               int mode, __u64 offset, __u32 count,
                struct lustre_handle *lh)
 {
         int   rc;
@@ -215,7 +182,7 @@ obdio_enqueue (struct obdio_conn *conn, uint64_t oid,
         rc = obdio_ioctl (conn, ECHO_IOC_ENQUEUE);
 
         if (rc == 0)
-                memcpy (lh, obdo_handle (&conn->oc_data.ioc_obdo1), sizeof (*lh));
+                *lh = conn->oc_data.ioc_obdo1.o_handle;
 
         return (rc);
 }
@@ -225,7 +192,7 @@ obdio_cancel (struct obdio_conn *conn, struct lustre_handle *lh)
 {
         obdio_iocinit (conn);
 
-        memcpy (obdo_handle (&conn->oc_data.ioc_obdo1), lh, sizeof (*lh));
+        conn->oc_data.ioc_obdo1.o_handle = *lh;
         conn->oc_data.ioc_obdo1.o_valid = OBD_MD_FLHANDLE;
 
         return (obdio_ioctl (conn, ECHO_IOC_CANCEL));
@@ -234,25 +201,26 @@ obdio_cancel (struct obdio_conn *conn, struct lustre_handle *lh)
 void *
 obdio_alloc_aligned_buffer (void **spacep, int size)
 {
-        int   pagesize = getpagesize();
-        void *space = malloc (size + pagesize - 1);
+        int   pagemask = getpagesize() - 1;
+        void *space = malloc(size + pagemask);
 
-        *spacep = space;
         if (space == NULL)
                 return (NULL);
 
-        return ((void *)(((unsigned long)space + pagesize - 1) & ~(pagesize - 1)));
+        *spacep = (void *)(((unsigned long)space + pagemask) & ~pagemask);
+        return space;
 }
 
 struct obdio_barrier *
-obdio_new_barrier (uint64_t oid, uint64_t id, int npeers)
+obdio_new_barrier (__u64 oid, __u64 id, int npeers)
 {
         struct obdio_barrier *b;
 
-        b = (struct obdio_barrier *)malloc (sizeof (*b));
+        b = malloc(sizeof(*b));
         if (b == NULL) {
-                fprintf (stderr, "obdio_new_barrier "LPX64": Can't allocate\n", oid);
-                return (NULL);
+                fprintf(stderr, "%s "LPX64": Can't allocate\n",
+                        __FUNCTION__, oid);
+                return(NULL);
         }
 
         b->ob_id = id;
@@ -266,106 +234,82 @@ obdio_new_barrier (uint64_t oid, uint64_t id, int npeers)
 int
 obdio_setup_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
 {
-        struct lustre_handle    fh;
         struct lustre_handle    lh;
         int                     rc;
         int                     rc2;
-        void                   *space;
+        void                   *space, *fileptr;
         struct obdio_barrier   *fileb;
 
         if (b->ob_ordinal != 0 ||
             b->ob_count != 0) {
-                fprintf (stderr, "obdio_setup_barrier: invalid parameter\n");
+                fprintf(stderr, "%s: invalid parameter\n", __FUNCTION__);
                 abort ();
         }
 
-        rc = obdio_open (conn, b->ob_oid, &fh);
-        if (rc != 0) {
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Failed to open object: %s\n",
-                         b->ob_oid, strerror (errno));
-                return (rc);
-        }
-
-        fileb = (struct obdio_barrier *) obdio_alloc_aligned_buffer (&space, getpagesize ());
-        if (fileb == NULL) {
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Can't allocate page buffer\n",
-                         b->ob_oid);
-                rc = -1;
-                goto out_0;
+        space = obdio_alloc_aligned_buffer(&fileptr, getpagesize());
+        if (space == NULL) {
+                fprintf(stderr, "%s "LPX64": Can't allocate page buffer\n",
+                        __FUNCTION__, b->ob_oid);
+                return (-1);
         }
 
-        memset (fileb, 0, getpagesize ());
+        fileb = fileptr;
+        memset(fileb, 0, getpagesize());
         *fileb = *b;
 
-        rc = obdio_enqueue (conn, b->ob_oid, LCK_PW, 0, getpagesize (), &lh);
+        rc = obdio_enqueue(conn, b->ob_oid, LCK_PW, 0, getpagesize(), &lh);
         if (rc != 0) {
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Error on enqueue: %s\n",
-                         b->ob_oid, strerror (errno));
-                goto out_1;
+                fprintf(stderr, "%s "LPX64": Error on enqueue: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
+                goto out;
         }
 
-        rc = obdio_pwrite (conn, b->ob_oid, (void *)fileb, getpagesize (), 0);
+        rc = obdio_pwrite(conn, b->ob_oid, fileb, getpagesize(), 0);
         if (rc != 0)
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Error on write: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf(stderr, "%s "LPX64": Error on write: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
 
         rc2 = obdio_cancel (conn, &lh);
         if (rc == 0 && rc2 != 0) {
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Error on cancel: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf(stderr, "%s "LPX64": Error on cancel: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
                 rc = rc2;
         }
- out_1:
+ out:
         free (space);
- out_0:
-        rc2 = obdio_close (conn, b->ob_oid, &fh);
-        if (rc == 0 && rc2 != 0) {
-                fprintf (stderr, "obdio_setup_barrier "LPX64": Error on close: %s\n",
-                         b->ob_oid, strerror (errno));
-                rc = rc2;
-        }
-
         return (rc);
 }
 
 int
 obdio_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
 {
-        struct lustre_handle   fh;
         struct lustre_handle   lh;
         int                    rc;
         int                    rc2;
-        void                  *space;
+        void                  *space, *fileptr;
         struct obdio_barrier  *fileb;
         char                  *mode;
 
-        rc = obdio_open (conn, b->ob_oid, &fh);
-        if (rc != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on open: %s\n",
-                         b->ob_oid, strerror (errno));
-                return (rc);
-        }
-
-        fileb = (struct obdio_barrier *) obdio_alloc_aligned_buffer (&space, getpagesize ());
-        if (fileb == NULL) {
-                fprintf (stderr, "obdio_barrier "LPX64": Can't allocate page buffer\n",
-                         b->ob_oid);
-                rc = -1;
-                goto out_0;
+        space = obdio_alloc_aligned_buffer(&fileptr, getpagesize());
+        if (space == NULL) {
+                fprintf(stderr, "%s "LPX64": Can't allocate page buffer\n",
+                        __FUNCTION__, b->ob_oid);
+                return (-1);
         }
 
-        rc = obdio_enqueue (conn, b->ob_oid, LCK_PW, 0, getpagesize (), &lh);
+        rc = obdio_enqueue(conn, b->ob_oid, LCK_PW, 0, getpagesize(), &lh);
         if (rc != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on PW enqueue: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf(stderr, "%s "LPX64": Error on PW enqueue: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
                 goto out_1;
         }
 
-        memset (fileb, 0xeb, getpagesize ());
-        rc = obdio_pread (conn, b->ob_oid, (void *)fileb, getpagesize (), 0);
+        fileb = fileptr;
+        memset(fileb, 0xeb, getpagesize());
+        rc = obdio_pread(conn, b->ob_oid, fileb, getpagesize(), 0);
         if (rc != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on initial read: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf(stderr, "%s "LPX64": Error on initial read: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
                 goto out_2;
         }
 
@@ -374,13 +318,16 @@ obdio_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
             fileb->ob_npeers != b->ob_npeers ||
             fileb->ob_count >= b->ob_npeers ||
             fileb->ob_ordinal != b->ob_ordinal) {
-                fprintf (stderr, "obdio_barrier "LPX64": corrupt on initial read\n", b->ob_id);
-                fprintf (stderr, "  got ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
-                         fileb->ob_id, fileb->ob_oid, fileb->ob_npeers,
-                         fileb->ob_ordinal, fileb->ob_count);
-                fprintf (stderr, "  expected ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
-                         b->ob_id, b->ob_oid, b->ob_npeers,
-                         b->ob_ordinal, b->ob_count);
+                fprintf(stderr, "%s "LPX64": corrupt on initial read\n",
+                        __FUNCTION__, b->ob_id);
+                fprintf(stderr,
+                        "  got ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
+                        fileb->ob_id, fileb->ob_oid, fileb->ob_npeers,
+                        fileb->ob_ordinal, fileb->ob_count);
+                fprintf(stderr,
+                       "  expected ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
+                        b->ob_id, b->ob_oid, b->ob_npeers,
+                        b->ob_ordinal, b->ob_count);
                 rc = -1;
                 goto out_2;
         }
@@ -391,37 +338,36 @@ obdio_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
                 fileb->ob_ordinal++;                 /* signal all joined */
         }
 
-        rc = obdio_pwrite (conn, b->ob_oid, (void *)fileb, getpagesize (), 0);
+        rc = obdio_pwrite(conn, b->ob_oid, fileb, getpagesize(), 0);
         if (rc != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on initial write: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf (stderr, "%s "LPX64": Error on initial write: %s\n",
+                         __FUNCTION__, b->ob_oid, strerror(errno));
                 goto out_2;
         }
 
         mode = "PW";
         b->ob_ordinal++;           /* now I wait... */
         while (fileb->ob_ordinal != b->ob_ordinal) {
-
                 rc = obdio_cancel (conn, &lh);
                 if (rc != 0) {
-                        fprintf (stderr, "obdio_barrier "LPX64": Error on %s cancel: %s\n",
-                                 b->ob_oid, mode, strerror (errno));
+                        fprintf(stderr, "%s "LPX64": Error on %s cancel: %s\n",
+                                __FUNCTION__, b->ob_oid, mode, strerror(errno));
                         goto out_1;
                 }
 
                 mode = "PR";
-                rc = obdio_enqueue (conn, b->ob_oid, LCK_PR, 0, getpagesize (), &lh);
+                rc = obdio_enqueue(conn, b->ob_oid, LCK_PR,0,getpagesize(),&lh);
                 if (rc != 0) {
-                        fprintf (stderr, "obdio_barrier "LPX64": Error on PR enqueue: %s\n",
-                                 b->ob_oid, strerror (errno));
+                        fprintf(stderr, "%s "LPX64": Error on PR enqueue: %s\n",
+                                __FUNCTION__, b->ob_oid, strerror(errno));
                         goto out_1;
                 }
 
-                memset (fileb, 0xeb, getpagesize ());
-                rc = obdio_pread (conn, b->ob_oid, (void *)fileb, getpagesize (), 0);
+                memset (fileb, 0xeb, getpagesize());
+                rc = obdio_pread(conn, b->ob_oid, fileb, getpagesize(), 0);
                 if (rc != 0) {
-                        fprintf (stderr, "obdio_barrier "LPX64": Error on read: %s\n",
-                                 b->ob_oid, strerror (errno));
+                        fprintf(stderr, "%s "LPX64": Error on read: %s\n",
+                                __FUNCTION__, b->ob_oid, strerror(errno));
                         goto out_2;
                 }
 
@@ -431,13 +377,16 @@ obdio_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
                     fileb->ob_count >= b->ob_npeers ||
                     (fileb->ob_ordinal != b->ob_ordinal - 1 &&
                      fileb->ob_ordinal != b->ob_ordinal)) {
-                        fprintf (stderr, "obdio_barrier "LPX64": corrupt\n", b->ob_id);
-                        fprintf (stderr, "  got ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
-                                 fileb->ob_id, fileb->ob_oid, fileb->ob_npeers,
-                                 fileb->ob_ordinal, fileb->ob_count);
-                        fprintf (stderr, "  expected ["LPX64","LPX64","LPX64","LPX64","LPX64"]\n",
-                                 b->ob_id, b->ob_oid, b->ob_npeers,
-                                 b->ob_ordinal, b->ob_count);
+                        fprintf(stderr, "%s "LPX64": corrupt\n",
+                                __FUNCTION__, b->ob_id);
+                        fprintf(stderr, "  got ["LPX64","LPX64","LPX64","
+                                LPX64","LPX64"]\n",
+                                fileb->ob_id, fileb->ob_oid, fileb->ob_npeers,
+                                fileb->ob_ordinal, fileb->ob_count);
+                        fprintf(stderr, "  expected ["LPX64","LPX64","LPX64
+                                ","LPX64","LPX64"]\n",
+                                b->ob_id, b->ob_oid, b->ob_npeers,
+                                b->ob_ordinal, b->ob_count);
                         rc = -1;
                         goto out_2;
                 }
@@ -446,21 +395,11 @@ obdio_barrier (struct obdio_conn *conn, struct obdio_barrier *b)
  out_2:
         rc2 = obdio_cancel (conn, &lh);
         if (rc == 0 && rc2 != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on cancel: %s\n",
-                         b->ob_oid, strerror (errno));
+                fprintf(stderr, "%s "LPX64": Error on cancel: %s\n",
+                        __FUNCTION__, b->ob_oid, strerror(errno));
                 rc = rc2;
         }
  out_1:
         free (space);
- out_0:
-        rc2 = obdio_close (conn, b->ob_oid, &fh);
-        if (rc == 0 && rc2 != 0) {
-                fprintf (stderr, "obdio_barrier "LPX64": Error on close: %s\n",
-                         b->ob_oid, strerror (errno));
-                rc = rc2;
-        }
-
         return (rc);
 }
-
-