From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NvvzP-0003QA-FT for qemu-devel@nongnu.org; Sun, 28 Mar 2010 13:09:31 -0400 Received: from [140.186.70.92] (port=39856 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NvvzN-0003Pb-Tm for qemu-devel@nongnu.org; Sun, 28 Mar 2010 13:09:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NvvzM-0007em-Io for qemu-devel@nongnu.org; Sun, 28 Mar 2010 13:09:29 -0400 Received: from mail-iw0-f171.google.com ([209.85.223.171]:48771) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NvvzM-0007eM-Fd for qemu-devel@nongnu.org; Sun, 28 Mar 2010 13:09:28 -0400 Received: by mail-iw0-f171.google.com with SMTP id 1so6816858iwn.27 for ; Sun, 28 Mar 2010 10:09:28 -0700 (PDT) From: Ryota Ozaki Date: Mon, 29 Mar 2010 02:07:11 +0900 Message-Id: <1269796032-9166-2-git-send-email-ozaki.ryota@gmail.com> In-Reply-To: <1269796032-9166-1-git-send-email-ozaki.ryota@gmail.com> References: <1269796032-9166-1-git-send-email-ozaki.ryota@gmail.com> Subject: [Qemu-devel] [PATCH 2/3] qemu-nbd: Extend read-only option to nbd device file List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This patch allows to operate on nbd device file without write permission for the file if read-only option is specified. Signed-off-by: Ryota Ozaki --- qemu-nbd.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/qemu-nbd.c b/qemu-nbd.c index 00b8896..7ef409f 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -162,7 +162,7 @@ static int find_partition(BlockDriverState *bs, int partition, return -1; } -static void show_parts(const char *device) +static void show_parts(const char *device, bool readonly) { if (fork() == 0) { int nbd; @@ -172,7 +172,7 @@ static void show_parts(const char *device) * but remember to load the module with max_part != 0 : * modprobe nbd max_part=63 */ - nbd = open(device, O_RDWR); + nbd = open(device, readonly ? O_RDONLY : O_RDWR); if (nbd != -1) { close(nbd); } @@ -322,7 +322,7 @@ int main(int argc, char **argv) } if (disconnect) { - fd = open(argv[optind], O_RDWR); + fd = open(argv[optind], readonly ? O_RDONLY : O_RDWR); if (fd == -1) { errx(EXIT_FAILURE, "Cannot open %s", argv[optind]); } @@ -392,7 +392,7 @@ int main(int argc, char **argv) } } while (sock == -1); - fd = open(device, O_RDWR); + fd = open(device, readonly ? O_RDONLY : O_RDWR); if (fd == -1) { ret = 1; goto out; @@ -415,7 +415,7 @@ int main(int argc, char **argv) /* update partition table */ - show_parts(device); + show_parts(device, readonly); nbd_client(fd, sock); close(fd); -- 1.6.5.2