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/ChangeLog b/lib/ext2fs/ChangeLog
index 135aad2..5733631 100644
--- a/lib/ext2fs/ChangeLog
+++ b/lib/ext2fs/ChangeLog
@@ -1,5 +1,10 @@
Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
+ * 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.
+
* Release of E2fsprogs 1.11
Mon Jun 16 23:53:06 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
diff --git a/lib/ext2fs/ext2_err.et.in b/lib/ext2fs/ext2_err.et.in
index 075acee..a51825c 100644
--- a/lib/ext2fs/ext2_err.et.in
+++ b/lib/ext2fs/ext2_err.et.in
@@ -224,4 +224,7 @@
ec EXT2_ET_RO_UNSUPP_FEATURE,
"Filesystem has unsupported read-only feature(s)"
+ec EXT2_IO_LLSEEK_FAILED,
+ "IO Channel failed to seek on read or write"
+
end
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;
}