Hi Cephers,
I'm using ceph0.94 and libvirt1.2.14. Normally, I can show the storage pool is active using virsh pool-list. But when I refresh it, it will be inactive while some of rbd volumes are being deleted.
From the processing of refreshing storage pool,
storagePoolRefresh
|
|---> virStorageBackendRBDRefreshPool
|
|---> volStorageBackendRBDRefreshVolInfo
static int volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
virStoragePoolObjPtr pool,
virStorageBackendRBDStatePtr ptr)
virStoragePoolObjPtr pool,
virStorageBackendRBDStatePtr ptr)
{
r = rbd_open(ptr->ioctx, vol->name, &image, NULL);
if (r < 0) {
VIR_DEBUG("failed to open RBD image '%s', check if it was still exist in its pool",\
vol->name);
virReportSystemError(-r, _("failed to open the RBD image '%s'"),
vol->name);
return ret;
}
if (r < 0) {
VIR_DEBUG("failed to open RBD image '%s', check if it was still exist in its pool",\
vol->name);
virReportSystemError(-r, _("failed to open the RBD image '%s'"),
vol->name);
return ret;
}
}
If vol->name has been deleted by rbd, libvirt won't open it when refreshing storage pool, it will set pool->active = 0. So the storage pool will be inactive, it will result in VMs can't be created any more.
Is it a bug? Any way to avoid it?
Thanks
Ray Shi
_______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com