summaryrefslogtreecommitdiff
path: root/blockdev/linux/file_dev.c
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-12-29 23:37:32 +0100
committerCarl Hetherington <cth@carlh.net>2023-01-30 20:52:20 +0100
commitb98f55b806f9dfe9e9374faceed99b689c29f28e (patch)
tree5c626761e0814ae7b9434a5fc66b1e2100743893 /blockdev/linux/file_dev.c
parent3dc752da8948564456ce2d721c266b4e1a50e7a1 (diff)
Return platform-specific errors via ext4_blockdev_errno2400-ext-errors
Diffstat (limited to 'blockdev/linux/file_dev.c')
-rw-r--r--blockdev/linux/file_dev.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/blockdev/linux/file_dev.c b/blockdev/linux/file_dev.c
index 4e4cc67..77c6112 100644
--- a/blockdev/linux/file_dev.c
+++ b/blockdev/linux/file_dev.c
@@ -77,6 +77,7 @@ static int file_dev_open(struct ext4_blockdev *bdev)
if (dev_file < 0) {
printf("open of %s failed %d\n", fname, errno);
+ ext4_blockdev_errno = errno;
return EIO;
}
@@ -119,12 +120,14 @@ static int file_dev_bread(struct ext4_blockdev *bdev, void *buf, uint64_t blk_id
uint32_t blk_cnt)
{
if (lseek(dev_file, blk_id * bdev->bdif->ph_bsize, SEEK_SET) < 0) {
+ ext4_blockdev_errno = errno;
printf("lseek failed %d\n", errno);
return EIO;
}
if (!blk_cnt)
return EOK;
if (read(dev_file, buf, bdev->bdif->ph_bsize * blk_cnt) < 0) {
+ ext4_blockdev_errno = errno;
printf("read failed %d\n", errno);
return EIO;
}
@@ -150,12 +153,14 @@ static int file_dev_bwrite(struct ext4_blockdev *bdev, const void *buf,
uint64_t blk_id, uint32_t blk_cnt)
{
if (lseek(dev_file, blk_id * bdev->bdif->ph_bsize, SEEK_SET) < 0) {
+ ext4_blockdev_errno = errno;
printf("fseeko failed %d\n", errno);
return EIO;
}
if (!blk_cnt)
return EOK;
if (write(dev_file, buf, bdev->bdif->ph_bsize * blk_cnt) < 0) {
+ ext4_blockdev_errno = errno;
printf("write failed %d\n", errno);
return EIO;
}