diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2018-08-09 16:51:33 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-08-13 21:58:42 -0700 |
commit | 18fa20569fff7fffcc7e62a37b217be00830be13 (patch) | |
tree | 21498943397dbf5a12b89f8e50a9ed801880b8d1 /devices/src/virtio/block.rs | |
parent | de9ae03d522d9f134d76cc60a7c49b7c38714423 (diff) | |
download | crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar.gz crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar.bz2 crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar.lz crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar.xz crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.tar.zst crosvm-18fa20569fff7fffcc7e62a37b217be00830be13.zip |
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 <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1170305 Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'devices/src/virtio/block.rs')
-rw-r--r-- | devices/src/virtio/block.rs | 8 |
1 files changed, 7 insertions, 1 deletions
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<T: DiskFile> { kill_evt: Option<EventFd>, disk_image: Option<T>, config_space: Vec<u8>, + avail_features: u64, } fn build_config_space(disk_size: u64) -> Vec<u8> { @@ -370,10 +371,14 @@ impl<T: DiskFile> Block<T> { 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<T: 'static + AsRawFd + DiskFile + Send> VirtioDevice for Block<T> { 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, } } |