|
@@ -5163,6 +5163,13 @@ static ssize_t rbd_remove(struct bus_type *bus,
|
|
|
ret = rbd_dev_header_watch_sync(rbd_dev, false);
|
|
|
if (ret)
|
|
|
rbd_warn(rbd_dev, "failed to cancel watch event (%d)\n", ret);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * flush remaining watch callbacks - these must be complete
|
|
|
+ * before the osd_client is shutdown
|
|
|
+ */
|
|
|
+ dout("%s: flushing notifies", __func__);
|
|
|
+ ceph_osdc_flush_notifies(&rbd_dev->rbd_client->client->osdc);
|
|
|
rbd_dev_image_release(rbd_dev);
|
|
|
module_put(THIS_MODULE);
|
|
|
|