Linux 4.13 compat: bio->bi_status and blk_status_t

Commit torvalds/linux@4e4cbee9.  The bio->bi_error field was
replaced with bio->bi_status which is an enum that describes
all possible error types.

Reviewed-by: Chunwei Chen <david.chen@osnexus.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #6351
This commit is contained in:
Brian Behlendorf
2017-07-23 19:37:12 -07:00
committed by GitHub
parent 7a8ed6b8b7
commit 36ba27e9e0
4 changed files with 120 additions and 6 deletions
+6 -5
View File
@@ -427,7 +427,7 @@ BIO_END_IO_PROTO(vdev_disk_physio_completion, bio, error)
if (dr->dr_error == 0) {
#ifdef HAVE_1ARG_BIO_END_IO_T
dr->dr_error = -(bio->bi_error);
dr->dr_error = BIO_END_IO_ERROR(bio);
#else
if (error)
dr->dr_error = -(error);
@@ -618,15 +618,16 @@ retry:
return (error);
}
BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, rc)
BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, error)
{
zio_t *zio = bio->bi_private;
#ifdef HAVE_1ARG_BIO_END_IO_T
int rc = bio->bi_error;
zio->io_error = BIO_END_IO_ERROR(bio);
#else
zio->io_error = -error;
#endif
zio->io_error = -rc;
if (rc && (rc == -EOPNOTSUPP))
if (zio->io_error && (zio->io_error == EOPNOTSUPP))
zio->io_vd->vdev_nowritecache = B_TRUE;
bio_put(bio);