block.rs 486 B

12345678910111213141516171819
  1. use crate::prelude::*;
  2. use crate::constants::*;
  3. use super::BlockDevice;
  4. #[derive(Debug)]
  5. // A single block descriptor
  6. pub struct Ext4Block<'a> {
  7. /// Physical block id
  8. pub pblock_id: PBlockId,
  9. /// Raw block data
  10. pub block_data: &'a mut [u8],
  11. }
  12. impl<'a> Ext4Block<'a> {
  13. pub fn sync_to_disk(&self, block_device: Arc<dyn BlockDevice>) {
  14. let block_id = self.pblock_id as usize;
  15. block_device.write_offset(block_id * BLOCK_SIZE, &self.block_data);
  16. }
  17. }