diff mbox series

[v2] lib/ext2fs: add some msg for io error

Message ID 20230223090111.680573-1-zhanchengbin1@huawei.com
State Rejected
Headers show
Series [v2] lib/ext2fs: add some msg for io error | expand

Commit Message

zhanchengbin Feb. 23, 2023, 9:01 a.m. UTC
Add msgs to show whether there is eio in fsck process, when write and
fsync methods fail.

Signed-off-by: zhanchengbin <zhanchengbin1@huawei.com>
---
v2->v1:
 - Delete return 0.

 lib/ext2fs/unix_io.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Theodore Ts'o Feb. 24, 2023, 3:47 a.m. UTC | #1
On Thu, Feb 23, 2023 at 05:01:11PM +0800, zhanchengbin wrote:
> Add msgs to show whether there is eio in fsck process, when write and
> fsync methods fail.
> 
> Signed-off-by: zhanchengbin <zhanchengbin1@huawei.com>

The libext2fs is a *library*.  As such, well designed libraries do not
randomly write to stderr.  Consider what might happen if there was a
curses based program that was calling libext2fs --- for example, like
the ext2ed program.  Writing random errors to stderr is just *rude*.   :-)

If what you're worried about errors from e2fsck, it's also not
necessary, since that's what the error handler callback is for.

Cheers,

					- Ted
zhanchengbin Feb. 24, 2023, 7:38 a.m. UTC | #2
The e2fsck_handle_write_error is called only unix_write_blk64 and
unix_read_blk64 failed, but there is no failure message in unix_write_byte
and unix_flush.

Thanks,
  - bin.

On 2023/2/24 11:47, Theodore Ts'o wrote:
> On Thu, Feb 23, 2023 at 05:01:11PM +0800, zhanchengbin wrote:
>> Add msgs to show whether there is eio in fsck process, when write and
>> fsync methods fail.
>>
>> Signed-off-by: zhanchengbin <zhanchengbin1@huawei.com>
> 
> The libext2fs is a *library*.  As such, well designed libraries do not
> randomly write to stderr.  Consider what might happen if there was a
> curses based program that was calling libext2fs --- for example, like
> the ext2ed program.  Writing random errors to stderr is just *rude*.   :-)
> 
> If what you're worried about errors from e2fsck, it's also not
> necessary, since that's what the error handler callback is for.
> 
> Cheers,
> 
> 					- Ted
> .
>
diff mbox series

Patch

diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 3171c736..a6c85874 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -1265,12 +1265,16 @@  static errcode_t unix_write_byte(io_channel channel, unsigned long offset,
 		return errno;
 
 	actual = write(data->dev, buf, size);
+
 	if (actual < 0)
-		return errno;
+		retval = errno;
 	if (actual != size)
-		return EXT2_ET_SHORT_WRITE;
+		retval = EXT2_ET_SHORT_WRITE;
 
-	return 0;
+	if (retval)
+		fprintf(stderr, "%s unix_write_byte error, error %d\n",
+				channel->name, errno);
+	return retval;
 }
 
 /*
@@ -1289,8 +1293,11 @@  static errcode_t unix_flush(io_channel channel)
 	retval = flush_cached_blocks(channel, data, 0);
 #endif
 #ifdef HAVE_FSYNC
-	if (!retval && fsync(data->dev) != 0)
+	if (!retval && fsync(data->dev) != 0) {
+		fprintf(stderr, "%s flush error, error %d\n",
+				channel->name, errno);
 		return errno;
+	}
 #endif
 	return retval;
 }