diff options
-rw-r--r-- | nbd/server.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/nbd/server.c b/nbd/server.c index 89362ba760..924a1fe2db 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -891,10 +891,17 @@ NBDExport *nbd_export_new(BlockDriverState *bs, off_t dev_offset, off_t size, { BlockBackend *blk; NBDExport *exp = g_malloc0(sizeof(NBDExport)); + uint64_t perm; int ret; - /* FIXME Use real permissions */ - blk = blk_new(0, BLK_PERM_ALL); + /* Don't allow resize while the NBD server is running, otherwise we don't + * care what happens with the node. */ + perm = BLK_PERM_CONSISTENT_READ; + if ((nbdflags & NBD_FLAG_READ_ONLY) == 0) { + perm |= BLK_PERM_WRITE; + } + blk = blk_new(perm, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE_UNCHANGED | + BLK_PERM_WRITE | BLK_PERM_GRAPH_MOD); ret = blk_insert_bs(blk, bs, errp); if (ret < 0) { goto fail; |