Check what mke2fs will return non zero error on broken device.
changes since: v1
- skip test if dm-error is not available.
Signed-off-by: Dmitry Monakhov <[email protected]>
---
tests/f_mke2fs_baddisk/script | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 tests/f_mke2fs_baddisk/script
diff --git a/tests/f_mke2fs_baddisk/script b/tests/f_mke2fs_baddisk/script
new file mode 100644
index 0000000..0e6d3cd
--- /dev/null
+++ b/tests/f_mke2fs_baddisk/script
@@ -0,0 +1,26 @@
+test_description="mke2fs /dev/mapper/bad_disk should fail"
+
+OUT=$test_name.log
+
+dmsetup create -v bad_disk --table '0 1148681097 error' > $OUT 2>&1
+status=$?
+if [ "$status" != 0 ]; then
+ echo "$test_name: $test_description: skip"
+ touch $test_name.ok
+ exit 0
+fi
+
+echo mke2fs /dev/mapper/bad_disk >> $OUT
+$MKE2FS /dev/mapper/bad_disk >> $OUT 2>&1
+status=$?
+sleep 1
+dmsetup remove --retry bad_disk >> $OUT 2>&1
+
+if [ "$status" = 0 ] ; then
+ ln -f $test_name.log $test_name.failed
+ echo "$test_name: $test_description: failed"
+else
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+
+fi
--
2.7.4
testcase: f_mke2fs_baddisk
Signed-off-by: Dmitry Monakhov <[email protected]>
---
lib/ext2fs/unix_io.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 429ea24..6c54cbe 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -1030,7 +1030,10 @@ static errcode_t unix_flush(io_channel channel)
#ifndef NO_IO_CACHE
retval = flush_cached_blocks(channel, data, 0);
#endif
- fsync(data->dev);
+ if(fsync(data->dev)) {
+ if (!retval)
+ retval = errno;
+ }
return retval;
}
--
2.7.4
On Wed, Dec 07, 2016 at 06:55:17PM +0400, Dmitry Monakhov wrote:
> Check what mke2fs will return non zero error on broken device.
>
> changes since: v1
> - skip test if dm-error is not available.
>
> Signed-off-by: Dmitry Monakhov <[email protected]>
I applied this a while ago, but forgot to ack it. Thanks, applied.
- Ted