summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man9/VOP_STRATEGY.94
-rw-r--r--sys/fs/hpfs/hpfs_vnops.c2
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c2
-rw-r--r--sys/fs/ntfs/ntfs_vnops.c2
-rw-r--r--sys/fs/nwfs/nwfs_vnops.c2
-rw-r--r--sys/fs/smbfs/smbfs_vnops.c2
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vnops.c2
-rw-r--r--sys/gnu/fs/reiserfs/reiserfs_vnops.c7
-rw-r--r--sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c2
-rw-r--r--sys/ufs/ufs/ufs_vnops.c2
10 files changed, 17 insertions, 10 deletions
diff --git a/share/man/man9/VOP_STRATEGY.9 b/share/man/man9/VOP_STRATEGY.9
index 709a929..8c4fbac 100644
--- a/share/man/man9/VOP_STRATEGY.9
+++ b/share/man/man9/VOP_STRATEGY.9
@@ -53,7 +53,9 @@ This call either reads or writes data from a file, depending on the value of
.Pp
The call may block.
.Sh RETURN VALUES
-Zero is returned on success, otherwise an error is returned.
+Always zero.
+Errors should be signalled by setting BIO_ERROR on b_ioflags field in struct buf,
+and setting b_error to the appropriate errno value.
.Sh SEE ALSO
.\" .Xr buf 9 ,
.Xr vnode 9
diff --git a/sys/fs/hpfs/hpfs_vnops.c b/sys/fs/hpfs/hpfs_vnops.c
index c5a2a06..4ec6b1e 100644
--- a/sys/fs/hpfs/hpfs_vnops.c
+++ b/sys/fs/hpfs/hpfs_vnops.c
@@ -661,7 +661,7 @@ hpfs_strategy(ap)
bp->b_error = error;
bp->b_ioflags |= BIO_ERROR;
bufdone(bp);
- return (error);
+ return (0);
}
if ((long)bp->b_blkno == -1)
vfs_bio_clrbuf(bp);
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index ccbd0b1..9dc547f 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -1880,7 +1880,7 @@ msdosfs_strategy(ap)
bp->b_error = error;
bp->b_ioflags |= BIO_ERROR;
bufdone(bp);
- return (error);
+ return (0);
}
if ((long)bp->b_blkno == -1)
vfs_bio_clrbuf(bp);
diff --git a/sys/fs/ntfs/ntfs_vnops.c b/sys/fs/ntfs/ntfs_vnops.c
index 76c3c64..ee62a5c 100644
--- a/sys/fs/ntfs/ntfs_vnops.c
+++ b/sys/fs/ntfs/ntfs_vnops.c
@@ -339,7 +339,7 @@ ntfs_strategy(ap)
}
}
bufdone(bp);
- return (error);
+ return (0);
}
static int
diff --git a/sys/fs/nwfs/nwfs_vnops.c b/sys/fs/nwfs/nwfs_vnops.c
index 9dcd9aa..ca0a887 100644
--- a/sys/fs/nwfs/nwfs_vnops.c
+++ b/sys/fs/nwfs/nwfs_vnops.c
@@ -804,7 +804,7 @@ static int nwfs_strategy (ap)
*/
if ((bp->b_flags & B_ASYNC) == 0 )
error = nwfs_doio(ap->a_vp, bp, cr, td);
- return (error);
+ return (0);
}
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c
index e34ebe2..9b1e76d 100644
--- a/sys/fs/smbfs/smbfs_vnops.c
+++ b/sys/fs/smbfs/smbfs_vnops.c
@@ -864,7 +864,7 @@ smbfs_strategy (ap)
if ((bp->b_flags & B_ASYNC) == 0 )
error = smbfs_doio(ap->a_vp, bp, cr, td);
- return error;
+ return (0);
}
int
diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c
index f81d509..1b5023c 100644
--- a/sys/gnu/fs/ext2fs/ext2_vnops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vnops.c
@@ -1399,7 +1399,7 @@ ext2_strategy(ap)
bp->b_error = error;
bp->b_ioflags |= BIO_ERROR;
bufdone(bp);
- return (error);
+ return (0);
}
if ((long)bp->b_blkno == -1)
vfs_bio_clrbuf(bp);
diff --git a/sys/gnu/fs/reiserfs/reiserfs_vnops.c b/sys/gnu/fs/reiserfs/reiserfs_vnops.c
index e6323ea..12fe409 100644
--- a/sys/gnu/fs/reiserfs/reiserfs_vnops.c
+++ b/sys/gnu/fs/reiserfs/reiserfs_vnops.c
@@ -350,8 +350,13 @@ reiserfs_strategy(struct vop_strategy_args /* {
bp->b_ioflags |= BIO_ERROR;
}
+ if (error) {
+ bp->b_ioflags |= BIO_ERROR;
+ bp->b_error = error;
+ }
+
bufdone(bp);
- return (error);
+ return (0);
}
/*
diff --git a/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c b/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c
index d0efcf2..6d8d4eb 100644
--- a/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c
+++ b/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c
@@ -1136,7 +1136,7 @@ _xfs_strategy(
bp->b_error = error;
bp->b_ioflags |= BIO_ERROR;
bufdone(bp);
- return (error);
+ return (0);
}
if ((long)bp->b_blkno == -1)
vfs_bio_clrbuf(bp);
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index e5047e9..7b639e8 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -2013,7 +2013,7 @@ ufs_strategy(ap)
bp->b_error = error;
bp->b_ioflags |= BIO_ERROR;
bufdone(bp);
- return (error);
+ return (0);
}
if ((long)bp->b_blkno == -1)
vfs_bio_clrbuf(bp);
OpenPOWER on IntegriCloud