Linus Torvalds writes: (Summary) The only reason for that
should be the whole "don't recurse", and I think the naming is
historical and slightly odd.
historical and slightly odd.
It was historically just about allocations that were in the writeout path for a block layer or filesystem - and the name made sense in that context. These days, I think it's just shorthand for "you can do simple direct reclaim from the mm itself, but you can't block or call anything else".
anything else".
So I think the name and the semantics are a bit unclear, but it's obviously still useful.
obviously still useful.
It's entirely possible that direct reclaim should never do any of the more complicated callback cases anyway, but we'd still need the whole "don't wait for the complex case" logic to avoid deadlocks.
historical and slightly odd.
It was historically just about allocations that were in the writeout path for a block layer or filesystem - and the name made sense in that context. These days, I think it's just shorthand for "you can do simple direct reclaim from the mm itself, but you can't block or call anything else".
anything else".
So I think the name and the semantics are a bit unclear, but it's obviously still useful.
obviously still useful.
It's entirely possible that direct reclaim should never do any of the more complicated callback cases anyway, but we'd still need the whole "don't wait for the complex case" logic to avoid deadlocks.