ChangeLog, ext2_err.et.in, unix_io.c:
unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno is
zero, then return EXT2_IO_LLSEEK_FAILED.
ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index c2007aa..2be3e70 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -193,7 +193,7 @@
size = (count < 0) ? -count : count * channel->block_size;
location = (ext2_loff_t) block * channel->block_size;
if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno;
+ retval = errno ? errno : EXT2_IO_LLSEEK_FAILED;
goto error_out;
}
actual = read(data->dev, buf, size);
@@ -242,7 +242,7 @@
location = (ext2_loff_t) block * channel->block_size;
if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno;
+ retval = errno ? errno : EXT2_IO_LLSEEK_FAILED;
goto error_out;
}