]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
rbd-nbd: fix ebusy when do map 21232/head
authorLi Wang <laurence.liwang@gmail.com>
Thu, 7 Dec 2017 14:03:45 +0000 (22:03 +0800)
committerPrashant D <pdhange@redhat.com>
Wed, 4 Apr 2018 02:57:10 +0000 (22:57 -0400)
commit8f18a482029642a8c5081711b2df36f1123e3c96
tree1b92180a92fa24e8c73cde1b422435b59c9752b5
parent2e9d4ce3733f21833fe5aa2f790acc62d4f82e9c
rbd-nbd: fix ebusy when do map

When doing rbd-nbd map, if the Ceph service is not available,
the codes will wait on rados.connect(), unless killing the process.
In that case, the close_nbd logic is skipped with NBD_CLEAR_SOCK ioctl
not called. On the CentOS 7 kernel, it leaves nbd->file not cleared, which
causes the subsequent map requests return EBUSY, this patch fixes it
by connecting Ceph first prior to calling NBD_SET_SOCK ioctl

Fixes: http://tracker.ceph.com/issues/23528
Signed-off-by: Li Wang <laurence.liwang@gmail.com>
(cherry picked from commit ab77dcc0170c0d63795fe0d50427cda630bfd593)

Conflicts:
src/tools/rbd_nbd/rbd-nbd.cc: - Resolved for cfg changes & devpath.empty()
      - Removed cfg->exclusive condition as exclusive
bool not available
src/tools/rbd_nbd/rbd-nbd.cc