[PATCH 1/2] block: propagate error code from block_get

Roberto Nibali rnibali at gmail.com
Thu May 31 08:45:49 EDT 2012


Hi Sascha

On Wed, May 30, 2012 at 7:31 AM, Sascha Hauer <s.hauer at pengutronix.de>wrote:

> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>  common/block.c |   26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/common/block.c b/common/block.c
> index 4253fc4..437dc95 100644
> --- a/common/block.c
> +++ b/common/block.c
> @@ -161,7 +161,7 @@ static void *block_get(struct block_device *blk, int
> block)
>        int ret;
>
>        if (block >= blk->num_blocks)
> -               return NULL;
> +               return ERR_PTR(-ENXIO);
>
>        outdata = block_get_cached(blk, block);
>        if (outdata)
> @@ -169,7 +169,7 @@ static void *block_get(struct block_device *blk, int
> block)
>
>        ret = block_cache(blk, block);
>        if (ret)
> -               return NULL;
> +               return ERR_PTR(ret);
>
>        outdata = block_get_cached(blk, block);
>        if (!outdata)
> @@ -191,8 +191,8 @@ static ssize_t block_read(struct cdev *cdev, void
> *buf, size_t count,
>                size_t now = BLOCKSIZE(blk) - (offset & mask);
>                void *iobuf = block_get(blk, block);
>
> -               if (!iobuf)
> -                       return -EIO;
> +               if (IS_ERR(iobuf))
> +                       return PTR_ERR(iobuf);
>
>                now = min(count, now);
>
> @@ -207,8 +207,8 @@ static ssize_t block_read(struct cdev *cdev, void
> *buf, size_t count,
>        while (blocks) {
>                void *iobuf = block_get(blk, block);
>
> -               if (!iobuf)
> -                       return -EIO;
> +               if (IS_ERR(iobuf))
> +                       return PTR_ERR(iobuf);
>
>                memcpy(buf, iobuf, BLOCKSIZE(blk));
>                buf += BLOCKSIZE(blk);
> @@ -220,8 +220,8 @@ static ssize_t block_read(struct cdev *cdev, void
> *buf, size_t count,
>        if (count) {
>                void *iobuf = block_get(blk, block);
>
> -               if (!iobuf)
> -                       return -EIO;
> +               if (IS_ERR(iobuf))
> +                       return PTR_ERR(iobuf);
>
>                memcpy(buf, iobuf, count);
>        }
> @@ -244,7 +244,7 @@ static int block_put(struct block_device *blk, const
> void *buf, int block)
>                return -EINVAL;
>
>        data = block_get(blk, block);
> -       if (!data)
> +       if (IS_ERR(data))
>                BUG();
>
>        memcpy(data, buf, 1 << blk->blockbits);
> @@ -270,8 +270,8 @@ static ssize_t block_write(struct cdev *cdev, const
> void *buf, size_t count,
>
>                now = min(count, now);
>
> -               if (!iobuf)
> -                       return -EIO;
> +               if (IS_ERR(iobuf))
> +                       return PTR_ERR(iobuf);
>
>                memcpy(iobuf + (offset & mask), buf, now);
>                ret = block_put(blk, iobuf, block);
> @@ -299,8 +299,8 @@ static ssize_t block_write(struct cdev *cdev, const
> void *buf, size_t count,
>        if (count) {
>                void *iobuf = block_get(blk, block);
>
> -               if (!iobuf)
> -                       return -EIO;
> +               if (IS_ERR(iobuf))
> +                       return PTR_ERR(iobuf);
>
>                memcpy(iobuf, buf, count);
>                ret = block_put(blk, iobuf, block);
> --
> 1.7.10
>
>
Compile and run-time tested; results in a proper error message propagated
by the block layer:

imx-esdhc at imx-esdhc0: timeout 1
mci at mci0: Reading block 2560 failed with -110
block_cache: blk->ops->read returned -110

Therefore:

Tested-by: Roberto Nibali <rnibali at gmail.com>
Acked-by: Roberto Nibali <rnibali at gmail.com>

Cheers
Roberto
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/barebox/attachments/20120531/cc67a60b/attachment.html>


More information about the barebox mailing list