From: Andrew Morton size_t is unsigned. IO errors aren't getting through. Cc: "Chen, Kenneth W" Signed-off-by: Andrew Morton --- fs/block_dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN fs/block_dev.c~blockdev-direct_io-fix-signedness-bug fs/block_dev.c --- a/fs/block_dev.c~blockdev-direct_io-fix-signedness-bug +++ a/fs/block_dev.c @@ -146,7 +146,7 @@ static int blk_end_aio(struct bio *bio, iocb->ki_nbytes = -EIO; if (atomic_dec_and_test(bio_count)) { - if (iocb->ki_nbytes < 0) + if ((long)iocb->ki_nbytes < 0) aio_complete(iocb, iocb->ki_nbytes, 0); else aio_complete(iocb, iocb->ki_left, 0); _