KOSAKI Motohiro wrote:HiThe file systems are not stacked. One is over nandsim, which nandsim
Thank you for this useful comments.
I have few questions.I vaguely remember Adrian (CCed) did this on purpose. This is for theYes it needs PF_MEMALLOC to prevent deadlock because there can be a
case when nandsim emulates NAND flash on top of a file. So there are 2
file-systems involved: one sits on top of nandsim (e.g. UBIFS) and the
other owns the file which nandsim uses (e.g., ext3).
And I really cannot remember off the top of my head why he needed
PF_MEMALLOC, but I think Adrian wanted to prevent the direct reclaim
path to re-enter, say UBIFS, and cause deadlock. But I'd thing that all
the allocations in vfs_read()/vfs_write() should be GFP_NOFS, so that
should not be a probelm?
file system on top of nandsim which, in this case, is on top of another
file system.
I do not see how mempools will help here.
Please offer an alternative solution.
Can you please explain more detail? Another stackable filesystam
(e.g. ecryptfs) don't have such problem. Why nandsim have its issue?
What lock cause deadlock?
does not know about because it is just a lowly NAND device, and, with
the file cache option, one file system below to provide the file cache.
The deadlock is the kernel writing out dirty pages to the top file system
which writes to nandsim which writes to the bottom file system which
allocates memory which causes dirty pages to be written out to the top
file system, which tries to write to nandsim => deadlock.
You mean you want to prevent pageout() instead reclaim itself?
Dropping filecache seems don't make recursive call, right?