Messages in this thread | | | From | Greg Thelen <> | Date | Sat, 6 Nov 2010 10:19:35 -0700 | Subject | Re: [PATCH] memcg: use do_div to divide s64 in 32 bit machine. |
| |
On Fri, Nov 5, 2010 at 6:03 PM, <hannes@cmpxchg.org> wrote: > On Sat, Nov 06, 2010 at 01:08:53AM +0900, Minchan Kim wrote: >> Use do_div to divide s64 value. Otherwise, build would be failed >> like Dave Young reported. > > I thought about that too, but then I asked myself why you would want > to represent a number of pages as signed 64bit type, even on 32 bit?
I think the reason that 64 byte type is used for page count in memcontrol.c is because the low level res_counter primitives operate on 64 bit counters, even on 32 bit machines.
> Isn't the much better fix to get the types right instead? >
I agree that consistent types between mem_cgroup_dirty_info() and global_dirty_info() is important. There seems to be a lot of usage of s64 for page counts in memcontrol.c, which I think is due to the res_counter types. I think these s64 be switched to unsigned long rather to be consistent with the rest of mm code. It looks like this will be a clean patch, except for the lowest level where res_counter_read_u64() is used, where some casting may be needed.
I'll post a patch for that change.
| |