On 01/27/2013 09:39 PM, Minchan Kim wrote: > Hi Seth, > > On Fri, Jan 25, 2013 at 11:46:15AM -0600, Seth Jennings wrote: >> zs_create_pool() currently takes a gfp flags argument >> that is used when growing the memory pool. However >> it is not used in allocating the metadata for the pool >> itself. That is currently hardcoded to GFP_KERNEL. >> >> zswap calls zs_create_pool() at swapon time which is done >> in atomic context, resulting in a "might sleep" warning. >> >> This patch changes the meaning of the flags argument in >> zs_create_pool() to mean the flags for the metadata allocation, >> and adds a flags argument to zs_malloc that will be used for >> memory pool growth if required. > > As I mentioned, I'm not strongly against with this patch but it > should be last resort in case of not being able to address > frontswap's init routine's dependency with swap_lock. > > I sent a patch and am waiting reply of Konrand or Dan. > If we can fix frontswap, it would be better rather than > changing zsmalloc. I agree that moving the call to frontswap_init() out of the swap_lock would be a good thing. However, it doesn't mean that we still shouldn't allow the users to control the gfp mask for the allocation done by zs_create_pool(). While moving the frontswap_init() outside the lock removes the _need_ for this patch, I think that is it good API design to allow the user to specify the gfp mask. Seth -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>