diff mbox series

[1/2] mm/zbud: reuse unbuddied[0] as buddied in zbud_pool

Message ID 20210605075141.1359969-2-linmiaohe@huawei.com (mailing list archive)
State New, archived
Headers show
Series Cleanups for zbud | expand

Commit Message

Miaohe Lin June 5, 2021, 7:51 a.m. UTC
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(-)

Comments

Andrew Morton June 7, 2021, 11:10 p.m. UTC | #1
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?
Miaohe Lin June 8, 2021, 1:41 a.m. UTC | #2
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 mbox series

Patch

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;