• Ilya Dryomov's avatar
    rbd: make sure we have latest osdmap on 'rbd map' · 30ba1f02
    Ilya Dryomov authored
    Given an existing idle mapping (img1), mapping an image (img2) in
    a newly created pool (pool2) fails:
    
        $ ceph osd pool create pool1 8 8
        $ rbd create --size 1000 pool1/img1
        $ sudo rbd map pool1/img1
        $ ceph osd pool create pool2 8 8
        $ rbd create --size 1000 pool2/img2
        $ sudo rbd map pool2/img2
        rbd: sysfs write failed
        rbd: map failed: (2) No such file or directory
    
    This is because client instances are shared by default and we don't
    request an osdmap update when bumping a ref on an existing client.  The
    fix is to use the mon_get_version request to see if the osdmap we have
    is the latest, and block until the requested update is received if it's
    not.
    
    Fixes: http://tracker.ceph.com/issues/8184Signed-off-by: default avatarIlya Dryomov <ilya.dryomov@inktank.com>
    Reviewed-by: default avatarSage Weil <sage@inktank.com>
    30ba1f02
rbd.c 139 KB