From 18fa20569fff7fffcc7e62a37b217be00830be13 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 9 Aug 2018 16:51:33 -0700 Subject: devices: block: store features as a u64 This matches other virtio device models (net, p9, vsock) and makes it easier to add flags conditionally at device creation time. BUG=chromium:872973 TEST=cargo test -p devices Change-Id: I65b3f37c220fae44a3f6b397acc6c0eec2b70bf2 Signed-off-by: Daniel Verkamp Reviewed-on: https://chromium-review.googlesource.com/1170305 Reviewed-by: Zach Reizner --- devices/src/virtio/block.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'devices/src/virtio/block.rs') diff --git a/devices/src/virtio/block.rs b/devices/src/virtio/block.rs index c828f12..83616ce 100644 --- a/devices/src/virtio/block.rs +++ b/devices/src/virtio/block.rs @@ -344,6 +344,7 @@ pub struct Block { kill_evt: Option, disk_image: Option, config_space: Vec, + avail_features: u64, } fn build_config_space(disk_size: u64) -> Vec { @@ -370,10 +371,14 @@ impl Block { disk_size, SECTOR_SIZE); } + + let mut avail_features: u64 = 1 << VIRTIO_BLK_F_FLUSH; + Ok(Block { kill_evt: None, disk_image: Some(disk_image), config_space: build_config_space(disk_size), + avail_features, }) } } @@ -400,7 +405,8 @@ impl VirtioDevice for Block { fn features(&self, page: u32) -> u32 { match page { - 0 => 1 << VIRTIO_BLK_F_FLUSH, + 0 => self.avail_features as u32, + 1 => (self.avail_features >> 32) as u32, _ => 0, } } -- cgit 1.4.1