Re: [PATCH 00/16] mm: prepare for converting vm->vm_flags to 64-bit

Konstantin Khlebnikov
2012-03-21T13:16:12Z

Minchan Kim wrote:
> Hi Konstantin,
>
> It seems to be nice clean up to me and you are a volunteer we have been wanted
> for a long time. Thanks!
> I am one of people who really want to expand vm_flags to 64 bit but when KOSAKI
> tried it, Linus said his concerning, I guess you already saw that.
>
> He want to tidy vm_flags's usage up rather than expanding it.
> Without the discussion about that, just expanding vm_flags would make us use
> it up easily so that we might need more space.

Strictly speaking, my pachset does not expands vm_flags, it just prepares to this.
Anyway vm_flags_t looks better than hard-coded "unsigned long" and messy type-casts around it.

>
> Readahead flags are good candidate to move into another space and arch-specific flags, I guess.
> Another candidate I think of is THP flag. It's just for only anonymous vma now
> (But I am not sure we have a plan to support it for file-backed pages in future)
> so we can move it to anon_vma or somewhere.
> I think other guys might find more somethings
>
> The point is that at least, we have to discuss about clean up current vm_flags's
> use cases before expanding it unconditionally.

Seems like we can easily remove VM_EXECUTABLE
(count in mm->num_exe_file_vmas amount of vmas with vma->vm_file == mm->exe_file
instead of vmas with VM_EXECUTABLE bit)

And probably VM_CAN_NONLINEAR...

>
> On Wed, Mar 21, 2012 at 10:56:07AM +0400, Konstantin Khlebnikov wrote:
>> There is good old tradition: every year somebody submit patches for extending
>> vma->vm_flags upto 64-bits, because there no free bits left on 32-bit systems.
>>
>> previous attempts:
>> https://lkml.org/lkml/2011/4/12/24 (KOSAKI Motohiro)
>> https://lkml.org/lkml/2010/4/27/23 (Benjamin Herrenschmidt)
>> https://lkml.org/lkml/2009/10/1/202 (Hugh Dickins)
>>
>> Here already exist special type for this: vm_flags_t, but not all code uses it.
>> So, before switching vm_flags_t from unsinged long to u64 we must spread
>> vm_flags_t everywhere and fix all possible type-casting problems.
>>
>> There is no functional changes in this patch set,
>> it only prepares code for vma->vm_flags converting.
>>