Eric Dumazet c23fbb6bcb VFS: delay the dentry name generation on sockets and pipes
1) Introduces a new method in 'struct dentry_operations'.  This method
   called d_dname() might be called from d_path() to build a pathname for
   special filesystems.  It is called without locks.

   Future patches (if we succeed in having one common dentry for all
   pipes/sockets) may need to change prototype of this method, but we now
   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);

2) Adds a dynamic_dname() helper function that eases d_dname() implementations

3) Defines d_dname method for sockets : No more sprintf() at socket
   creation.  This is delayed up to the moment someone does an access to
   /proc/pid/fd/...

4) Defines d_dname method for pipes : No more sprintf() at pipe
   creation.  This is delayed up to the moment someone does an access to
   /proc/pid/fd/...

A benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a
*nice* speedup on my Pentium(M) 1.6 Ghz :

3.090 s instead of 3.450 s

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Acked-by: Christoph Hellwig <hch@infradead.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-08 11:15:03 -07:00
..
2007-02-18 10:16:10 -06:00
2006-11-30 04:58:40 +01:00
2006-10-03 22:54:15 +02:00
2006-10-03 22:47:42 +02:00
2006-10-03 22:52:05 +02:00
2006-06-26 09:58:20 -07:00
2006-12-30 10:56:45 -08:00
2006-04-25 15:44:04 -04:00
2006-11-30 04:58:40 +01:00
2006-03-22 00:13:35 +01:00
2006-03-22 00:13:35 +01:00
2007-05-08 11:15:02 -07:00
2006-11-30 04:58:40 +01:00
2007-02-17 19:23:03 +01:00
2006-10-03 22:47:42 +02:00
2006-12-07 08:39:44 -08:00
2007-02-12 09:48:40 -08:00