May be we should make this as an inline function instead of macro ?
Reason being:-
1. It is not a simple substitution.
2. It has multiple function calls.
3. With this patch it is now dependent on local variable declared
outside of macro.
Any thoughts ?
On 04/19/2019 11:24 AM, Coly Li wrote:
> 'int ret' is defined as a local variable inside macro read_bucket().
> Since this macro is called multiple times, and following patches will
> use a 'int ret' variable in bch_journal_read(), this patch moves
> definition of 'int ret' from macro read_bucket() to range of function
> bch_journal_read().
>
> Signed-off-by: Coly Li <[email protected]>
> ---
> drivers/md/bcache/journal.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
> index b2fd412715b1..6e18057d1d82 100644
> --- a/drivers/md/bcache/journal.c
> +++ b/drivers/md/bcache/journal.c
> @@ -147,7 +147,7 @@ int bch_journal_read(struct cache_set *c, struct
> list_head *list)
> {
> #define read_bucket(b)
> \
> ({ \
> - int ret = journal_read_bucket(ca, list, b); \
> + ret = journal_read_bucket(ca, list, b); \
> __set_bit(b, bitmap); \
> if (ret < 0) \
> return ret; \
> @@ -156,6 +156,7 @@ int bch_journal_read(struct cache_set *c, struct
> list_head *list)
>
> struct cache *ca;
> unsigned int iter;
> + int ret = 0;
>
> for_each_cache(ca, c, iter) {
> struct journal_device *ja = &ca->journal;
> @@ -267,7 +268,7 @@ int bch_journal_read(struct cache_set *c, struct
> list_head *list)
> struct journal_replay,
> list)->j.seq;
>
> - return 0;
> + return ret;
> #undef read_bucket
> }
>
>