Revision b90fb4b8 qemu-nbd.c

b/qemu-nbd.c
185 185
    BlockDriverState *bs;
186 186
    off_t dev_offset = 0;
187 187
    off_t offset = 0;
188
    bool readonly = false;
188
    uint32_t nbdflags = 0;
189 189
    bool disconnect = false;
190 190
    const char *bindto = "0.0.0.0";
191 191
    int port = NBD_DEFAULT_PORT;
......
230 230
    int nb_fds = 0;
231 231
    int max_fd;
232 232
    int persistent = 0;
233
    uint32_t nbdflags;
234 233

  
235 234
    while ((ch = getopt_long(argc, argv, sopt, lopt, &opt_ind)) != -1) {
236 235
        switch (ch) {
......
263 262
            }
264 263
            break;
265 264
        case 'r':
266
            readonly = true;
265
            nbdflags |= NBD_FLAG_READ_ONLY;
267 266
            flags &= ~BDRV_O_RDWR;
268 267
            break;
269 268
        case 'P':
......
398 397
            }
399 398

  
400 399
            ret = nbd_receive_negotiate(sock, NULL, &nbdflags,
401
					&size, &blocksize);
400
                                        &size, &blocksize);
402 401
            if (ret == -1) {
403 402
                ret = 1;
404 403
                goto out;
405 404
            }
406 405

  
407
            ret = nbd_init(fd, sock, size, blocksize);
406
            ret = nbd_init(fd, sock, nbdflags, size, blocksize);
408 407
            if (ret == -1) {
409 408
                ret = 1;
410 409
                goto out;
......
463 462
        for (i = 1; i < nb_fds && ret; i++) {
464 463
            if (FD_ISSET(sharing_fds[i], &fds)) {
465 464
                if (nbd_trip(bs, sharing_fds[i], fd_size, dev_offset,
466
                    &offset, readonly, data, NBD_BUFFER_SIZE) != 0) {
465
                    &offset, nbdflags, data, NBD_BUFFER_SIZE) != 0) {
467 466
                    close(sharing_fds[i]);
468 467
                    nb_fds--;
469 468
                    sharing_fds[i] = sharing_fds[nb_fds];
......
479 478
                                             (struct sockaddr *)&addr,
480 479
                                             &addr_len);
481 480
                if (sharing_fds[nb_fds] != -1 &&
482
                    nbd_negotiate(sharing_fds[nb_fds], fd_size) != -1) {
481
                    nbd_negotiate(sharing_fds[nb_fds], fd_size, nbdflags) != -1) {
483 482
                        if (sharing_fds[nb_fds] > max_fd)
484 483
                            max_fd = sharing_fds[nb_fds];
485 484
                        nb_fds++;

Also available in: Unified diff