gluster: Correctly propagate errors when volume isn't accessible
commit4557117d9eed8cadc360aec23b42fc39a7011864
authorPeter Krempa <pkrempa@redhat.com>
Fri, 9 May 2014 10:08:10 +0000 (9 12:08 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Fri, 9 May 2014 18:57:32 +0000 (9 20:57 +0200)
treec21b90ffb98a5a79c16c0d64d531b52db8ea8b21
parent02ce232c5051854bf49e6d2816c65e00f6d7e036
gluster: Correctly propagate errors when volume isn't accessible

The docs for glfs_init suggest that the function sets errno on every
failure. In fact it doesn't. As other functions such as
qemu_gluster_open() in the gluster block code report their errors based
on this fact we need to make sure that errno is set on each failure.

This fixes a crash of qemu-img/qemu when a gluster brick isn't
accessible from given host while the server serving the volume
description is.

Thread 1 (Thread 0x7ffff7fba740 (LWP 203880)):
 #0  0x00007ffff77673f8 in glfs_lseek () from /usr/lib64/libgfapi.so.0
 #1  0x0000555555574a68 in qemu_gluster_getlength ()
 #2  0x0000555555565742 in refresh_total_sectors ()
 #3  0x000055555556914f in bdrv_open_common ()
 #4  0x000055555556e8e8 in bdrv_open ()
 #5  0x000055555556f02f in bdrv_open_image ()
 #6  0x000055555556e5f6 in bdrv_open ()
 #7  0x00005555555c5775 in bdrv_new_open ()
 #8  0x00005555555c5b91 in img_info ()
 #9  0x00007ffff62c9c05 in __libc_start_main () from /lib64/libc.so.6
 #10 0x00005555555648ad in _start ()

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/gluster.c