]>
git.proxmox.com Git - ceph.git/blob - ceph/src/tools/rbd_ggate/Watcher.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "common/debug.h"
5 #include "common/errno.h"
9 #define dout_context g_ceph_context
10 #define dout_subsys ceph_subsys_rbd
12 #define dout_prefix *_dout << "rbd::ggate::Watcher: " << this \
13 << " " << __func__ << ": "
18 Watcher::Watcher(Driver
*drv
, librados::IoCtx
&ioctx
, librbd::Image
&image
,
20 : m_drv(drv
), m_ioctx(ioctx
), m_image(image
), m_size(size
) {
23 void Watcher::handle_notify() {
26 librbd::image_info_t info
;
28 if (m_image
.stat(info
, sizeof(info
)) == 0) {
29 size_t new_size
= info
.size
;
31 if (new_size
!= m_size
) {
32 int r
= m_drv
->resize(new_size
);
34 derr
<< "resize failed: " << cpp_strerror(r
) << dendl
;
37 r
= m_image
.invalidate_cache();
39 derr
<< "invalidate rbd cache failed: " << cpp_strerror(r
) << dendl
;