Whamcloud - gitweb
LU-14205 osd-ldiskfs: return correct error after end io 44/40944/2
authorWang Shilong <wshilong@ddn.com>
Fri, 11 Dec 2020 07:17:50 +0000 (15:17 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 17 Dec 2020 17:00:34 +0000 (17:00 +0000)
@bi_status could be positive in newer kernel, we need use
blk_status_to_errno() helper to convert error properly.

Otherwise, a positive value could be returned to client
which might trigger unexpected error and make client
fail to resend.

Test-Parameters: clientdistro=el8.3 serverdistro=el8.3
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I2e8f257814eff311b72416788b7f6d9e37bad84a
Reviewed-on: https://review.whamcloud.com/40944
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
lustre/osd-ldiskfs/osd_io.c

index 4e2c0e3..9d62bae 100644 (file)
@@ -159,7 +159,7 @@ void osd_fini_iobuf(struct osd_device *d, struct osd_iobuf *iobuf)
 #ifdef HAVE_BIO_ENDIO_USES_ONE_ARG
 static void dio_complete_routine(struct bio *bio)
 {
-       int error = bio->bi_status;
+       int error = blk_status_to_errno(bio->bi_status);
 #else
 static void dio_complete_routine(struct bio *bio, int error)
 {