On Fri, Aug 25, 2017 at 11:56 PM, Wangkai (Kevin,C) <wangkai86@xxxxxxxxxx> wrote: > > but I am worried, if there are programs create,delete many temporary files and unique, > the negative dentries will keep growing. The thing is, this has nothing to do with unlink. The *easiest* way to generate negative dentries is in fact to never create any files at all: just look up millions of non-existent names. IOW, just something like this #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int main() { int i; for (i = 0; i < 10000000; i++) { char name[20]; struct stat st; snprintf(name, sizeof(name), "n:%d", i); stat(name, &st); } return 0; } is a much easier and faster way to create negative dentries. And yes, it's entirely possible that we could/should have some way to balance negative dentries against positive ones, but on the whole this has not really come up as a huge problem. For example, your module that does a lot of GFP_ATOMIC allocations - if it wasn't for dentries, it would have been something else. GFP_ATOMIC *will* fail after a while, because it just can't replenish the free memory. That's fundamental. That's what GFP_ATOMIC _means_. It's very much meant for "occasional critical allocations", and if you do just GFP_ATOMIC, you will fail. Linus