summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2011-09-08 17:24:56 +0200
committerKevin Wolf <kwolf@redhat.com>2011-09-19 11:34:33 +0200
commit973b3d0a7b2823f510e948283284f103ede43c49 (patch)
tree4fc8a059aeb18ff2ecaf7ee4ec66c9c735555d16
parentbbb74edd405bee8cf29957ef781294f40f02d4c6 (diff)
downloadqemu-973b3d0a7b2823f510e948283284f103ede43c49.tar.gz
nbd: support NBD_SET_FLAGS ioctl
The nbd kernel module cannot enable DISCARD requests unless it is informed about it. The flags field in the header is used for this, and this patch adds support for it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--nbd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/nbd.c b/nbd.c
index d32a19e5e3..595f4d8df3 100644
--- a/nbd.c
+++ b/nbd.c
@@ -378,6 +378,14 @@ int nbd_init(int fd, int csock, uint32_t flags, off_t size, size_t blocksize)
}
}
+ if (ioctl(fd, NBD_SET_FLAGS, flags) < 0
+ && errno != ENOTTY) {
+ int serrno = errno;
+ LOG("Failed setting flags");
+ errno = serrno;
+ return -1;
+ }
+
TRACE("Clearing NBD socket");
if (ioctl(fd, NBD_CLEAR_SOCK) == -1) {