Message ID | 20210605075141.1359969-2-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Cleanups for zbud | expand |
On Sat, 5 Jun 2021 15:51:40 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: > Since commit 9d8c5b5284e4 ("mm: zbud: fix condition check on allocation > size"), zbud_pool.unbuddied[0] is always unused. We can reuse it as buddied > field to save some possible memory. > > ... > > --- a/mm/zbud.c > +++ b/mm/zbud.c > @@ -96,7 +96,7 @@ > struct zbud_pool { > spinlock_t lock; > struct list_head unbuddied[NCHUNKS]; > - struct list_head buddied; > +#define buddied unbuddied[0] > struct list_head lru; > u64 pages_nr; > const struct zbud_ops *ops; That looks a bit hacky. Can we at least have a comment explaining what's going on? Would it be better to implement this with a union, rather than a #define?
On 2021/6/8 7:10, Andrew Morton wrote: > On Sat, 5 Jun 2021 15:51:40 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: > >> Since commit 9d8c5b5284e4 ("mm: zbud: fix condition check on allocation >> size"), zbud_pool.unbuddied[0] is always unused. We can reuse it as buddied >> field to save some possible memory. >> >> ... >> >> --- a/mm/zbud.c >> +++ b/mm/zbud.c >> @@ -96,7 +96,7 @@ >> struct zbud_pool { >> spinlock_t lock; >> struct list_head unbuddied[NCHUNKS]; >> - struct list_head buddied; >> +#define buddied unbuddied[0] >> struct list_head lru; >> u64 pages_nr; >> const struct zbud_ops *ops; > > That looks a bit hacky. Can we at least have a comment explaining > what's going on? > > Would it be better to implement this with a union, rather than a #define? It seems union is better and comment is necessary. Will try to do this. Many thanks for your comment and reply! > . >
diff --git a/mm/zbud.c b/mm/zbud.c index a200121da400..91543be47e3d 100644 --- a/mm/zbud.c +++ b/mm/zbud.c @@ -96,7 +96,7 @@ struct zbud_pool { spinlock_t lock; struct list_head unbuddied[NCHUNKS]; - struct list_head buddied; +#define buddied unbuddied[0] struct list_head lru; u64 pages_nr; const struct zbud_ops *ops;
Since commit 9d8c5b5284e4 ("mm: zbud: fix condition check on allocation size"), zbud_pool.unbuddied[0] is always unused. We can reuse it as buddied field to save some possible memory. Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> --- mm/zbud.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)