uint64_t start_block = get_block_num(ictx->header, off);
uint64_t end_block = get_block_num(ictx->header, off + len - 1);
uint64_t block_size = get_block_size(ictx->header);
+ snapid_t snap = ictx->snapid;
ictx->lock.Unlock();
uint64_t left = len;
+ if (snap != CEPH_NOSNAP)
+ return -EROFS;
+
for (uint64_t i = start_block; i <= end_block; i++) {
bufferlist bl;
ictx->lock.Lock();
uint64_t start_block = get_block_num(ictx->header, off);
uint64_t end_block = get_block_num(ictx->header, off + len - 1);
uint64_t block_size = get_block_size(ictx->header);
+ snapid_t snap = ictx->snapid;
ictx->lock.Unlock();
uint64_t left = len;
if (r < 0)
return r;
+ if (snap != CEPH_NOSNAP)
+ return -EROFS;
+
c->get();
for (uint64_t i = start_block; i <= end_block; i++) {
ictx->lock.Lock();