[Linux-cachefs] [PATCH] cachefiles: Explicitly cast enumerated type in put_object

Nick Desaulniers ndesaulniers at google.com
Mon Sep 24 22:17:23 UTC 2018


On Mon, Sep 24, 2018 at 10:33 AM Nathan Chancellor
<natechancellor at gmail.com> wrote:
>
> Clang warns when one enumerated type is implicitly converted to another.
>
> fs/cachefiles/namei.c:247:50: warning: implicit conversion from
> enumeration type 'enum cachefiles_obj_ref_trace' to different
> enumeration type 'enum fscache_obj_ref_trace' [-Wenum-conversion]
>         cache->cache.ops->put_object(&xobject->fscache,
> cachefiles_obj_put_wait_retry);

That's an interesting pattern; cachefiles_obj_ref_trace's first
enumeration's value is set to the final enumeration's value in
fscache_obj_ref_trace.  This fix is ok to me; though I would ask the
maintainer consider just merging the enums into one (unless there are
more than one other enums doing the same pattern (which doesn't seem
to be the case)).  Thanks for the patch.
Reviewed-by: Nick Desaulniers <ndesaulniers at google.com>

>
> Silence this warning by explicitly casting to fscache_obj_ref_trace,
> which is also done in put_object.
>
> Reported-by: Nick Desaulniers <ndesaulniers at google.com>
> Signed-off-by: Nathan Chancellor <natechancellor at gmail.com>
> ---
>  fs/cachefiles/namei.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
> index af2b17b21b94..15e5988a83de 100644
> --- a/fs/cachefiles/namei.c
> +++ b/fs/cachefiles/namei.c
> @@ -244,11 +244,13 @@ static int cachefiles_mark_object_active(struct cachefiles_cache *cache,
>
>         ASSERT(!test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags));
>
> -       cache->cache.ops->put_object(&xobject->fscache, cachefiles_obj_put_wait_retry);
> +       cache->cache.ops->put_object(&xobject->fscache,
> +               (enum fscache_obj_ref_trace)cachefiles_obj_put_wait_retry);
>         goto try_again;
>
>  requeue:
> -       cache->cache.ops->put_object(&xobject->fscache, cachefiles_obj_put_wait_timeo);
> +       cache->cache.ops->put_object(&xobject->fscache,
> +               (enum fscache_obj_ref_trace)cachefiles_obj_put_wait_timeo);
>         _leave(" = -ETIMEDOUT");
>         return -ETIMEDOUT;
>  }
> --
> 2.19.0
>


-- 
Thanks,
~Nick Desaulniers




More information about the Linux-cachefs mailing list