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 <colyli@xxxxxxx> > --- > 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 > } > >