Hi, > > > > upper caller: > > > > nofs_flag = memalloc_nofs_save(); > > > > ret = btrfs_drew_lock_init(&root->snapshot_lock); > > > > memalloc_nofs_restore(nofs_flag); > > The issue is here. nofs is set which means percpu attempts an atomic > allocation. If it cannot find anything already allocated it isn't happy. > This was done before memalloc_nofs_{save/restore}() were pervasive. > > Percpu should probably try to allocate some pages if possible even if > nofs is set. Thanks. I will wait for the patch, and then test it. Best Regards Wang Yugui (wangyugui@xxxxxxxxxxxx) 2021/04/08