Re: [PATCH 2/5] mm/vmalloc.c: simplify /proc/vmallocinfo implementation

2016-09-21 Thread zijun_hu
On 2016/9/22 5:16, David Rientjes wrote:
> On Wed, 21 Sep 2016, zijun_hu wrote:
> 
>> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
>> index cc6ecd6..a125ae8 100644
>> --- a/mm/vmalloc.c
>> +++ b/mm/vmalloc.c
>> @@ -2576,32 +2576,13 @@ void pcpu_free_vm_areas(struct vm_struct **vms, int 
>> nr_vms)
>>  static void *s_start(struct seq_file *m, loff_t *pos)
>>  __acquires(&vmap_area_lock)
>>  {
>> -loff_t n = *pos;
>> -struct vmap_area *va;
>> -
>>  spin_lock(&vmap_area_lock);
>> -va = list_first_entry(&vmap_area_list, typeof(*va), list);
>> -while (n > 0 && &va->list != &vmap_area_list) {
>> -n--;
>> -va = list_next_entry(va, list);
>> -}
>> -if (!n && &va->list != &vmap_area_list)
>> -return va;
>> -
>> -return NULL;
>> -
>> +return seq_list_start(&vmap_area_list, *pos);
>>  }
>>  
>>  static void *s_next(struct seq_file *m, void *p, loff_t *pos)
>>  {
>> -struct vmap_area *va = p, *next;
>> -
>> -++*pos;
>> -next = list_next_entry(va, list);
>> -if (&next->list != &vmap_area_list)
>> -return next;
>> -
>> -return NULL;
>> +return seq_list_next(p, &vmap_area_list, pos);
>>  }
>>  
>>  static void s_stop(struct seq_file *m, void *p)
>> @@ -2636,9 +2617,11 @@ static void show_numa_info(struct seq_file *m, struct 
>> vm_struct *v)
>>  
>>  static int s_show(struct seq_file *m, void *p)
>>  {
>> -struct vmap_area *va = p;
>> +struct vmap_area *va;
>>  struct vm_struct *v;
>>  
>> +va = list_entry((struct list_head *)p, struct vmap_area, list);
> 
> Looks good other than no cast is neccessary above.
  you are right, it will correct it
  i refer to show_timer()@fs/proc/base.c plainly and ignore that redundant cast
> 
> The patches in this series seem to be unrelated to each other, they 
> shouldn't be numbered in order since there's no dependence.  Just 
> individual patches are fine.
> 
you are right, i will provide a individual patch finnally



Re: [PATCH 2/5] mm/vmalloc.c: simplify /proc/vmallocinfo implementation

2016-09-21 Thread David Rientjes
On Wed, 21 Sep 2016, zijun_hu wrote:

> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index cc6ecd6..a125ae8 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -2576,32 +2576,13 @@ void pcpu_free_vm_areas(struct vm_struct **vms, int 
> nr_vms)
>  static void *s_start(struct seq_file *m, loff_t *pos)
>   __acquires(&vmap_area_lock)
>  {
> - loff_t n = *pos;
> - struct vmap_area *va;
> -
>   spin_lock(&vmap_area_lock);
> - va = list_first_entry(&vmap_area_list, typeof(*va), list);
> - while (n > 0 && &va->list != &vmap_area_list) {
> - n--;
> - va = list_next_entry(va, list);
> - }
> - if (!n && &va->list != &vmap_area_list)
> - return va;
> -
> - return NULL;
> -
> + return seq_list_start(&vmap_area_list, *pos);
>  }
>  
>  static void *s_next(struct seq_file *m, void *p, loff_t *pos)
>  {
> - struct vmap_area *va = p, *next;
> -
> - ++*pos;
> - next = list_next_entry(va, list);
> - if (&next->list != &vmap_area_list)
> - return next;
> -
> - return NULL;
> + return seq_list_next(p, &vmap_area_list, pos);
>  }
>  
>  static void s_stop(struct seq_file *m, void *p)
> @@ -2636,9 +2617,11 @@ static void show_numa_info(struct seq_file *m, struct 
> vm_struct *v)
>  
>  static int s_show(struct seq_file *m, void *p)
>  {
> - struct vmap_area *va = p;
> + struct vmap_area *va;
>   struct vm_struct *v;
>  
> + va = list_entry((struct list_head *)p, struct vmap_area, list);

Looks good other than no cast is neccessary above.

The patches in this series seem to be unrelated to each other, they 
shouldn't be numbered in order since there's no dependence.  Just 
individual patches are fine.