From 8b0475db8b389043d88669cea2f34a31462452f6 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 15 Nov 2017 10:34:32 -0500 Subject: [PATCH] rbd-nbd: rescan partition table after image resize event Fixes: http://tracker.ceph.com/issues/22131 Signed-off-by: Jason Dillaman (cherry picked from commit db13e4757451b463e7fb65c43247e033f24d45e5) Conflicts: src/tools/rbd_nbd/rbd-nbd.cc : resolved in handle_notify --- src/tools/rbd_nbd/rbd-nbd.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 88e1e0ff65835..a81c0f90f47ac 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -433,10 +433,19 @@ public: unsigned long new_size = info.size; if (new_size != size) { + dout(5) << "resize detected" << dendl; if (ioctl(fd, BLKFLSBUF, NULL) < 0) - derr << "invalidate page cache failed: " << cpp_strerror(errno) << dendl; - if (ioctl(fd, NBD_SET_SIZE, new_size) < 0) + derr << "invalidate page cache failed: " << cpp_strerror(errno) + << dendl; + if (ioctl(fd, NBD_SET_SIZE, new_size) < 0) { derr << "resize failed: " << cpp_strerror(errno) << dendl; + } else { + size = new_size; + } + if (ioctl(fd, BLKRRPART, NULL) < 0) { + derr << "rescan of partition table failed: " << cpp_strerror(errno) + << dendl; + } if (image.invalidate_cache() < 0) derr << "invalidate rbd cache failed" << dendl; size = new_size; -- 2.39.5