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 ([email protected])
2021/04/08