Consider this fixed. I have extracted the common function and the new shmem_insert_page_page_cache function looks like this: spin_lock_irq(&mapping->tree_lock); error = __add_to_page_cache_locked(page, mapping, index); if (!error) __mod_zone_page_state(page_zone(page), NR_SHMEM, nr); radix_tree_preload_end(); spin_unlock_irq(&mapping->tree_lock); if (error) page_cache_release(page); return error; Best wishes, -- Ning Qu (曲宁) | Software Engineer | quning@xxxxxxxxxx | +1-408-418-6066 On Wed, Oct 16, 2013 at 10:49 AM, Ning Qu <quning@xxxxxxxxxx> wrote: > Yes, I guess I can if I just put whatever inside the spin lock into a > common function. Thanks! > Best wishes, > -- > Ning Qu (曲宁) | Software Engineer | quning@xxxxxxxxxx | +1-408-418-6066 > > > On Wed, Oct 16, 2013 at 5:26 AM, Kirill A. Shutemov > <kirill.shutemov@xxxxxxxxxxxxxxx> wrote: >> Ning Qu wrote: >>> Yes, I can try. The code is pretty much similar with some minor difference. >>> >>> One thing I can do is to move the spin lock part (together with the >>> corresponding err handling into a common function. >>> >>> The only problem I can see right now is we need the following >>> additional line for shm: >>> >>> __mod_zone_page_state(page_zone(page), NR_SHMEM, nr); >>> >>> Which means we need to tell if it's coming from shm or not, is that OK >>> to add additional parameter just for that? Or is there any other >>> better way we can infer that information? Thanks! >> >> I think you can account NR_SHMEM after common code succeed, don't you? >> >> -- >> Kirill A. Shutemov -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html