summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgkostka <kostka.grzegorz@gmail.com>2015-12-07 21:52:22 +0100
committergkostka <kostka.grzegorz@gmail.com>2015-12-07 21:52:22 +0100
commit06c35f48e36de717fd16e720705cdbbfac3a842a (patch)
treed013566d46e079f236dc48d8f6134c744aaae65d
parent9e8466622a31fed8113e9a01969f01a850f92cea (diff)
Add ph_blk_offset during every blockdev bread/bwrite
-rw-r--r--lwext4/ext4_blockdev.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lwext4/ext4_blockdev.c b/lwext4/ext4_blockdev.c
index 8597519..03d15eb 100644
--- a/lwext4/ext4_blockdev.c
+++ b/lwext4/ext4_blockdev.c
@@ -212,6 +212,7 @@ int ext4_blocks_get_direct(struct ext4_blockdev *bdev, void *buf, uint64_t lba,
ext4_assert(bdev && buf);
pba = (lba * bdev->lg_bsize) / bdev->bdif->ph_bsize;
+ pba += bdev->ph_blk_offset;
pb_cnt = bdev->lg_bsize / bdev->bdif->ph_bsize;
bdev->bread_ctr++;
@@ -227,6 +228,7 @@ int ext4_blocks_set_direct(struct ext4_blockdev *bdev, const void *buf,
ext4_assert(bdev && buf);
pba = (lba * bdev->lg_bsize) / bdev->bdif->ph_bsize;
+ pba += bdev->ph_blk_offset;
pb_cnt = bdev->lg_bsize / bdev->bdif->ph_bsize;
bdev->bwrite_ctr++;
@@ -250,7 +252,7 @@ int ext4_block_writebytes(struct ext4_blockdev *bdev, uint64_t off,
if (!(bdev->bdif->ph_flags & EXT4_BDEV_INITIALIZED))
return EIO;
- block_idx = off / bdev->bdif->ph_bsize;
+ block_idx = (off / bdev->bdif->ph_bsize) + bdev->ph_blk_offset;
block_end = block_idx + len / bdev->bdif->ph_bsize;
if (!(block_end < bdev->bdif->ph_bcnt))
@@ -322,7 +324,7 @@ int ext4_block_readbytes(struct ext4_blockdev *bdev, uint64_t off, void *buf,
if (!(bdev->bdif->ph_flags & EXT4_BDEV_INITIALIZED))
return EIO;
- block_idx = off / bdev->bdif->ph_bsize;
+ block_idx = (off / bdev->bdif->ph_bsize) + bdev->ph_blk_offset;
block_end = block_idx + len / bdev->bdif->ph_bsize;
if (!(block_end < bdev->bdif->ph_bcnt))