From b98f55b806f9dfe9e9374faceed99b689c29f28e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 29 Dec 2022 23:37:32 +0100 Subject: Return platform-specific errors via ext4_blockdev_errno --- blockdev/linux/file_dev.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'blockdev/linux/file_dev.c') 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; } -- cgit v1.2.3