Re: [PATCH] t_stripealign: Fix fibmap error handling

Darrick J. Wong
2019-08-23T14:37:04Z

On Fri, Aug 23, 2019 at 11:25:30AM +0200, Carlos Maiolino wrote:
> FIBMAP only returns a negative value when the underlying filesystem does
> not support FIBMAP or on permission error. For the remaining errors,
> i.e. those usually returned from the filesystem itself, zero will be
> returned.
>
> We can not trust a zero return from the FIBMAP, and such behavior made
> generic/223 succeed when it should not.
>
> Also, we can't use perror() only to print errors when FIBMAP failed, or
> it will simply print 'success' when a zero is returned.
>
> Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
> ---
> src/t_stripealign.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/t_stripealign.c b/src/t_stripealign.c
> index 5cdadaae..164831f8 100644
> --- a/src/t_stripealign.c
> +++ b/src/t_stripealign.c
> @@ -76,8 +76,11 @@ int main(int argc, char ** argv)
> unsigned int bmap = 0;
>
> ret = ioctl(fd, FIBMAP, &bmap);
> - if (ret < 0) {
> - perror("fibmap");
> + if (ret <= 0) {
> + if (ret < 0)
> + perror("fibmap");
> + else
> + fprintf(stderr, "fibmap error\n");

"fibmap returned no result"?

--D

> free(fie);
> close(fd);
> return 1;
> --
> 2.20.1
>