From: Eric Dumazet <dada1@cosmosbay.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Christoph Hellwig <hch@infradead.org>,
David Miller <davem@davemloft.net>,
mingo@elte.hu, cl@linux-foundation.org, rjw@sisk.pl,
linux-kernel@vger.kernel.org, kernel-testers@vger.kernel.org,
efault@gmx.de, a.p.zijlstra@chello.nl,
Linux Netdev List <netdev@vger.kernel.org>,
viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] fs: pipe/sockets/anon dentries should have themselves as parent
Date: Sun, 23 Nov 2008 04:53:13 +0100 [thread overview]
Message-ID: <4928D3A9.8060805@cosmosbay.com> (raw)
In-Reply-To: <20081121184344.GC5707@parisc-linux.org>
[-- Attachment #1: Type: text/plain, Size: 5733 bytes --]
Matthew Wilcox a écrit :
> On Fri, Nov 21, 2008 at 06:58:29PM +0100, Eric Dumazet wrote:
>> +/**
>> + * d_alloc_unhashed - allocate unhashed dentry
>> + * @inode: inode to allocate the dentry for
>> + * @name: dentry name
>
> It's normal to list the parameters in the order they're passed to the
> function. Not sure if we have a tool that checks for this or not --
> Randy?
Yes, no problem, better to have the same order.
>
>> + *
>> + * Allocate an unhashed dentry for the inode given. The inode is
>> + * instantiated and returned. %NULL is returned if there is insufficient
>> + * memory. Unhashed dentries have themselves as a parent.
>> + */
>> +
>> +struct dentry * d_alloc_unhashed(const char *name, struct inode *inode)
>> +{
>> + struct qstr q = { .name = name, .len = strlen(name) };
>> + struct dentry *res;
>> +
>> + res = d_alloc(NULL, &q);
>> + if (res) {
>> + res->d_sb = inode->i_sb;
>> + res->d_parent = res;
>> + /*
>> + * We dont want to push this dentry into global dentry hash table.
>> + * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED
>> + * This permits a working /proc/$pid/fd/XXX on sockets,pipes,anon
>> + */
>
> Line length ... as checkpatch would have warned you ;-)
>
> And there are several other grammatical nitpicks with this comment. Try
> this:
>
> /*
> * We don't want to put this dentry in the global dentry
> * hash table, so we pretend the dentry is already hashed
> * by unsetting DCACHE_UNHASHED. This permits
> * /proc/$pid/fd/XXX t work for sockets, pipes and
> * anonymous files (signalfd, timerfd, etc).
> */
Yes, this is better.
>
>> + res->d_flags &= ~DCACHE_UNHASHED;
>> + res->d_flags |= DCACHE_DISCONNECTED;
>
> Is this really better than:
>
> res->d_flags = res->d_flags & ~DCACHE_UNHASHED |
> DCACHE_DISCONNECTED;
Well, I personally prefer the two lines, intention is more readable :)
>
> Anyway, nice cleanup.
>
Thanks Matthew, here is an updated version of the patch.
[PATCH] fs: pipe/sockets/anon dentries should have themselves as parent
Linking pipe/sockets/anon dentries to one root 'parent' has no functional
impact at all, but a scalability one.
We can avoid touching a cache line at allocation stage (inside d_alloc(), no need
to touch root->d_count), but also at freeing time (in d_kill, decrementing d_count)
We avoid an expensive atomic_dec_and_lock() call on the root dentry.
We add d_alloc_unhashed(const char *name, struct inode *inode) helper
to be used by pipes/socket/anon. This function is about the same as
d_alloc_root() but for unhashed entries.
Before patch, time to run 8 * 1 million of close(socket()) calls on 8 CPUS was :
real 0m27.496s
user 0m0.657s
sys 3m39.092s
After patch :
real 0m23.843s
user 0m0.616s
sys 3m9.732s
Old oprofile :
CPU: Core 2, speed 3000.11 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
samples cum. samples % cum. % symbol name
164257 164257 11.0245 11.0245 init_file
155488 319745 10.4359 21.4604 d_alloc
151887 471632 10.1942 31.6547 _atomic_dec_and_lock
91620 563252 6.1493 37.8039 inet_create
74245 637497 4.9831 42.7871 kmem_cache_alloc
46702 684199 3.1345 45.9216 dentry_iput
46186 730385 3.0999 49.0215 tcp_close
42824 773209 2.8742 51.8957 kmem_cache_free
37275 810484 2.5018 54.3975 wake_up_inode
36553 847037 2.4533 56.8508 tcp_v4_init_sock
35661 882698 2.3935 59.2443 inotify_d_instantiate
32998 915696 2.2147 61.4590 sysenter_past_esp
31442 947138 2.1103 63.5693 d_instantiate
31303 978441 2.1010 65.6703 generic_forget_inode
27533 1005974 1.8479 67.5183 vfs_dq_drop
24237 1030211 1.6267 69.1450 sock_attach_fd
19290 1049501 1.2947 70.4397 __copy_from_user_ll
New oprofile :
CPU: Core 2, speed 3000.11 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
samples cum. samples % cum. % symbol name
148703 148703 10.8581 10.8581 inet_create
116680 265383 8.5198 19.3779 new_inode
108912 374295 7.9526 27.3306 init_file
82911 457206 6.0541 33.3846 kmem_cache_alloc
65690 522896 4.7966 38.1812 wake_up_inode
53286 576182 3.8909 42.0721 _atomic_dec_and_lock
43814 619996 3.1992 45.2713 generic_forget_inode
41993 661989 3.0663 48.3376 d_alloc
41244 703233 3.0116 51.3492 kmem_cache_free
39244 742477 2.8655 54.2148 tcp_v4_init_sock
37402 779879 2.7310 56.9458 tcp_close
33336 813215 2.4342 59.3800 sysenter_past_esp
28596 841811 2.0880 61.4680 inode_has_buffers
25769 867580 1.8816 63.3496 d_kill
22606 890186 1.6507 65.0003 dentry_iput
20224 910410 1.4767 66.4770 vfs_dq_drop
19800 930210 1.4458 67.9228 __copy_from_user_ll
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
---
fs/anon_inodes.c | 9 +--------
fs/dcache.c | 33 +++++++++++++++++++++++++++++++++
fs/pipe.c | 10 +---------
include/linux/dcache.h | 1 +
net/socket.c | 10 +---------
5 files changed, 37 insertions(+), 26 deletions(-)
[-- Attachment #2: d_alloc_unhashed2.patch --]
[-- Type: text/plain, Size: 4788 bytes --]
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
index 3662dd4..9fd0515 100644
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -71,7 +71,6 @@ static struct dentry_operations anon_inodefs_dentry_operations = {
int anon_inode_getfd(const char *name, const struct file_operations *fops,
void *priv, int flags)
{
- struct qstr this;
struct dentry *dentry;
struct file *file;
int error, fd;
@@ -89,10 +88,7 @@ int anon_inode_getfd(const char *name, const struct file_operations *fops,
* using the inode sequence number.
*/
error = -ENOMEM;
- this.name = name;
- this.len = strlen(name);
- this.hash = 0;
- dentry = d_alloc(anon_inode_mnt->mnt_sb->s_root, &this);
+ dentry = d_alloc_unhashed(name, anon_inode_inode);
if (!dentry)
goto err_put_unused_fd;
@@ -104,9 +100,6 @@ int anon_inode_getfd(const char *name, const struct file_operations *fops,
atomic_inc(&anon_inode_inode->i_count);
dentry->d_op = &anon_inodefs_dentry_operations;
- /* Do not publish this dentry inside the global dentry hash table */
- dentry->d_flags &= ~DCACHE_UNHASHED;
- d_instantiate(dentry, anon_inode_inode);
error = -ENFILE;
file = alloc_file(anon_inode_mnt, dentry,
diff --git a/fs/dcache.c b/fs/dcache.c
index a1d86c7..43ef88d 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1111,6 +1111,39 @@ struct dentry * d_alloc_root(struct inode * root_inode)
return res;
}
+/**
+ * d_alloc_unhashed - allocate unhashed dentry
+ * @name: dentry name
+ * @inode: inode to allocate the dentry for
+ *
+ * Allocate an unhashed dentry for the inode given. The inode is
+ * instantiated and returned. %NULL is returned if there is insufficient
+ * memory. Unhashed dentries have themselves as a parent.
+ */
+
+struct dentry * d_alloc_unhashed(const char *name, struct inode *inode)
+{
+ struct qstr q = { .name = name, .len = strlen(name) };
+ struct dentry *res;
+
+ res = d_alloc(NULL, &q);
+ if (res) {
+ res->d_sb = inode->i_sb;
+ res->d_parent = res;
+ /*
+ * We dont want to push this dentry into global dentry
+ * hash table, so we pretend the dentry is already hashed
+ * by unsetting DCACHE_UNHASHED. This permits
+ * /proc/$pid/fd/XXX to work for sockets, pipes, and
+ * anonymous files (signalfd, timerfd, ...)
+ */
+ res->d_flags &= ~DCACHE_UNHASHED;
+ res->d_flags |= DCACHE_DISCONNECTED;
+ d_instantiate(res, inode);
+ }
+ return res;
+}
+
static inline struct hlist_head *d_hash(struct dentry *parent,
unsigned long hash)
{
diff --git a/fs/pipe.c b/fs/pipe.c
index 7aea8b8..29fcac2 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -918,7 +918,6 @@ struct file *create_write_pipe(int flags)
struct inode *inode;
struct file *f;
struct dentry *dentry;
- struct qstr name = { .name = "" };
err = -ENFILE;
inode = get_pipe_inode();
@@ -926,18 +925,11 @@ struct file *create_write_pipe(int flags)
goto err;
err = -ENOMEM;
- dentry = d_alloc(pipe_mnt->mnt_sb->s_root, &name);
+ dentry = d_alloc_unhashed("", inode);
if (!dentry)
goto err_inode;
dentry->d_op = &pipefs_dentry_operations;
- /*
- * We dont want to publish this dentry into global dentry hash table.
- * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED
- * This permits a working /proc/$pid/fd/XXX on pipes
- */
- dentry->d_flags &= ~DCACHE_UNHASHED;
- d_instantiate(dentry, inode);
err = -ENFILE;
f = alloc_file(pipe_mnt, dentry, FMODE_WRITE, &write_pipefifo_fops);
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index a37359d..12438d6 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -238,6 +238,7 @@ extern int d_invalidate(struct dentry *);
/* only used at mount-time */
extern struct dentry * d_alloc_root(struct inode *);
+extern struct dentry * d_alloc_unhashed(const char *, struct inode *);
/* <clickety>-<click> the ramfs-type tree */
extern void d_genocide(struct dentry *);
diff --git a/net/socket.c b/net/socket.c
index e9d65ea..b659b5d 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -371,20 +371,12 @@ static int sock_alloc_fd(struct file **filep, int flags)
static int sock_attach_fd(struct socket *sock, struct file *file, int flags)
{
struct dentry *dentry;
- struct qstr name = { .name = "" };
- dentry = d_alloc(sock_mnt->mnt_sb->s_root, &name);
+ dentry = d_alloc_unhashed("", SOCK_INODE(sock));
if (unlikely(!dentry))
return -ENOMEM;
dentry->d_op = &sockfs_dentry_operations;
- /*
- * We dont want to push this dentry into global dentry hash table.
- * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED
- * This permits a working /proc/$pid/fd/XXX on sockets
- */
- dentry->d_flags &= ~DCACHE_UNHASHED;
- d_instantiate(dentry, SOCK_INODE(sock));
sock->file = file;
init_file(file, sock_mnt, dentry, FMODE_READ | FMODE_WRITE,
next prev parent reply other threads:[~2008-11-23 3:54 UTC|newest]
Thread overview: 349+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-16 17:38 2.6.28-rc5: Reported regressions 2.6.26 -> 2.6.27 Rafael J. Wysocki
2008-11-16 17:38 ` Rafael J. Wysocki
2008-11-16 17:38 ` [Bug #11207] VolanoMark regression with 2.6.27-rc1 Rafael J. Wysocki
2008-11-16 17:38 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11215] INFO: possible recursive locking detected ps2_command Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -> 2.6.28 Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-17 9:06 ` Ingo Molnar
2008-11-17 9:06 ` Ingo Molnar
2008-11-17 9:14 ` David Miller
2008-11-17 9:14 ` David Miller
2008-11-17 11:01 ` Ingo Molnar
2008-11-17 11:01 ` Ingo Molnar
2008-11-17 11:20 ` Eric Dumazet
2008-11-17 16:11 ` Ingo Molnar
2008-11-17 16:11 ` Ingo Molnar
2008-11-17 16:35 ` Eric Dumazet
2008-11-17 16:35 ` Eric Dumazet
2008-11-17 17:08 ` Ingo Molnar
2008-11-17 17:08 ` Ingo Molnar
2008-11-17 17:25 ` Ingo Molnar
2008-11-17 17:25 ` Ingo Molnar
2008-11-17 17:33 ` Eric Dumazet
2008-11-17 17:33 ` Eric Dumazet
2008-11-17 17:38 ` Linus Torvalds
2008-11-17 17:38 ` Linus Torvalds
2008-11-17 17:42 ` Eric Dumazet
2008-11-17 17:42 ` Eric Dumazet
2008-11-17 18:23 ` Ingo Molnar
2008-11-17 18:23 ` Ingo Molnar
2008-11-17 18:33 ` Linus Torvalds
2008-11-17 18:33 ` Linus Torvalds
2008-11-17 18:49 ` Ingo Molnar
2008-11-17 18:49 ` Ingo Molnar
2008-11-17 19:30 ` Eric Dumazet
2008-11-17 19:30 ` Eric Dumazet
2008-11-17 19:39 ` David Miller
2008-11-17 19:39 ` David Miller
2008-11-17 19:43 ` Eric Dumazet
2008-11-17 19:43 ` Eric Dumazet
2008-11-17 19:55 ` Linus Torvalds
2008-11-17 19:55 ` Linus Torvalds
2008-11-17 20:16 ` David Miller
2008-11-17 20:16 ` David Miller
2008-11-17 20:30 ` Linus Torvalds
2008-11-17 20:30 ` Linus Torvalds
2008-11-17 20:58 ` David Miller
2008-11-17 20:58 ` David Miller
2008-11-18 9:44 ` Nick Piggin
2008-11-18 9:44 ` Nick Piggin
2008-11-18 15:58 ` Linus Torvalds
2008-11-18 15:58 ` Linus Torvalds
2008-11-19 4:31 ` Nick Piggin
2008-11-20 9:14 ` David Miller
2008-11-20 9:14 ` David Miller
2008-11-20 9:06 ` David Miller
2008-11-20 9:06 ` David Miller
2008-11-18 12:29 ` Mike Galbraith
2008-11-18 12:29 ` Mike Galbraith
2008-11-17 19:57 ` Ingo Molnar
2008-11-17 19:57 ` Ingo Molnar
2008-11-17 20:20 ` (avc_has_perm_noaudit()) " Ingo Molnar
2008-11-17 20:20 ` Ingo Molnar
2008-11-17 20:32 ` ip_queue_xmit(): " Ingo Molnar
2008-11-17 20:32 ` Ingo Molnar
2008-11-17 20:57 ` Eric Dumazet
2008-11-17 20:57 ` Eric Dumazet
2008-11-18 9:12 ` Nick Piggin
2008-11-17 20:47 ` Ingo Molnar
2008-11-17 20:47 ` Ingo Molnar
2008-11-17 20:56 ` Eric Dumazet
2008-11-17 20:56 ` Eric Dumazet
2008-11-17 20:55 ` skb_release_head_state(): " Ingo Molnar
2008-11-17 20:55 ` Ingo Molnar
2008-11-17 21:01 ` David Miller
2008-11-17 21:01 ` David Miller
2008-11-17 21:04 ` Eric Dumazet
2008-11-17 21:04 ` Eric Dumazet
2008-11-17 21:34 ` Linus Torvalds
2008-11-17 21:34 ` Linus Torvalds
2008-11-17 21:38 ` Ingo Molnar
2008-11-17 21:38 ` Ingo Molnar
2008-11-17 21:09 ` tcp_ack(): " Ingo Molnar
2008-11-17 21:09 ` Ingo Molnar
2008-11-17 21:19 ` tcp_recvmsg(): " Ingo Molnar
2008-11-17 21:19 ` Ingo Molnar
2008-11-17 21:26 ` eth_type_trans(): " Ingo Molnar
2008-11-17 21:26 ` Ingo Molnar
2008-11-17 21:40 ` Eric Dumazet
2008-11-17 21:40 ` Eric Dumazet
2008-11-17 23:41 ` Eric Dumazet
2008-11-17 23:41 ` Eric Dumazet
2008-11-18 0:01 ` Linus Torvalds
2008-11-18 0:01 ` Linus Torvalds
2008-11-18 8:35 ` Eric Dumazet
2008-11-17 21:52 ` Linus Torvalds
2008-11-17 21:52 ` Linus Torvalds
2008-11-18 5:16 ` David Miller
2008-11-18 5:16 ` David Miller
2008-11-18 5:35 ` Eric Dumazet
2008-11-18 7:00 ` David Miller
2008-11-18 7:00 ` David Miller
2008-11-18 8:30 ` Ingo Molnar
2008-11-18 8:30 ` Ingo Molnar
2008-11-18 8:49 ` Eric Dumazet
2008-11-18 8:49 ` Eric Dumazet
2008-11-17 21:35 ` __inet_lookup_established(): " Ingo Molnar
2008-11-17 21:35 ` Ingo Molnar
2008-11-17 22:14 ` Eric Dumazet
2008-11-17 22:14 ` Eric Dumazet
2008-11-17 21:59 ` system_call() - " Ingo Molnar
2008-11-17 21:59 ` Ingo Molnar
2008-11-17 22:09 ` Linus Torvalds
2008-11-17 22:09 ` Linus Torvalds
2008-11-17 22:08 ` Ingo Molnar
2008-11-17 22:15 ` Eric Dumazet
2008-11-17 22:15 ` Eric Dumazet
2008-11-17 22:26 ` Ingo Molnar
2008-11-17 22:26 ` Ingo Molnar
2008-11-17 22:39 ` Eric Dumazet
2008-11-17 22:39 ` Eric Dumazet
2008-11-18 5:23 ` David Miller
2008-11-18 5:23 ` David Miller
2008-11-18 8:45 ` Ingo Molnar
2008-11-18 8:45 ` Ingo Molnar
2008-11-17 22:14 ` tcp_transmit_skb() - " Ingo Molnar
2008-11-17 22:14 ` Ingo Molnar
2008-11-17 22:19 ` Ingo Molnar
2008-11-17 22:19 ` Ingo Molnar
2008-11-17 19:36 ` David Miller
2008-11-17 19:36 ` David Miller
2008-11-17 19:31 ` David Miller
2008-11-17 19:31 ` David Miller
2008-11-17 19:47 ` Linus Torvalds
2008-11-17 19:47 ` Linus Torvalds
2008-11-17 19:51 ` David Miller
2008-11-17 19:51 ` David Miller
2008-11-17 19:53 ` Ingo Molnar
2008-11-17 19:53 ` Ingo Molnar
2008-11-17 22:47 ` Ingo Molnar
2008-11-17 22:47 ` Ingo Molnar
2008-11-17 19:21 ` David Miller
2008-11-17 19:21 ` David Miller
2008-11-17 19:48 ` Linus Torvalds
2008-11-17 19:48 ` Linus Torvalds
2008-11-17 19:52 ` David Miller
2008-11-17 19:52 ` David Miller
2008-11-17 19:57 ` Linus Torvalds
2008-11-17 19:57 ` Linus Torvalds
2008-11-17 20:18 ` David Miller
2008-11-17 20:18 ` David Miller
2008-11-19 19:43 ` Christoph Lameter
2008-11-19 19:43 ` Christoph Lameter
2008-11-19 20:14 ` Ingo Molnar
2008-11-19 20:14 ` Ingo Molnar
2008-11-20 23:52 ` Christoph Lameter
2008-11-20 23:52 ` Christoph Lameter
2008-11-21 8:30 ` Ingo Molnar
2008-11-21 8:30 ` Ingo Molnar
2008-11-21 8:51 ` Eric Dumazet
2008-11-21 8:51 ` Eric Dumazet
2008-11-21 9:05 ` David Miller
2008-11-21 9:05 ` David Miller
2008-11-21 12:51 ` Eric Dumazet
2008-11-21 12:51 ` Eric Dumazet
2008-11-21 15:13 ` [PATCH] fs: pipe/sockets/anon dentries should not have a parent Eric Dumazet
2008-11-21 15:13 ` Eric Dumazet
2008-11-21 15:21 ` Ingo Molnar
2008-11-21 15:21 ` Ingo Molnar
2008-11-21 15:28 ` Eric Dumazet
2008-11-21 15:28 ` Eric Dumazet
2008-11-21 15:34 ` Ingo Molnar
2008-11-21 15:34 ` Ingo Molnar
2008-11-26 23:27 ` [PATCH 0/6] fs: Scalability of sockets/pipes allocation/deallocation on SMP Eric Dumazet
2008-11-27 1:37 ` Christoph Lameter
2008-11-27 1:37 ` Christoph Lameter
2008-11-27 6:27 ` Eric Dumazet
2008-11-27 6:27 ` Eric Dumazet
2008-11-27 14:44 ` Christoph Lameter
2008-11-27 14:44 ` Christoph Lameter
2008-11-27 9:39 ` Christoph Hellwig
2008-11-28 18:03 ` Ingo Molnar
2008-11-28 18:47 ` Peter Zijlstra
2008-11-28 18:47 ` Peter Zijlstra
2008-11-29 6:38 ` Christoph Hellwig
2008-11-29 6:38 ` Christoph Hellwig
2008-11-29 8:07 ` Eric Dumazet
2008-11-29 8:07 ` Eric Dumazet
2008-11-29 8:43 ` [PATCH v2 0/5] " Eric Dumazet
2008-11-29 8:43 ` Eric Dumazet
2008-12-11 22:38 ` [PATCH v3 0/7] " Eric Dumazet
2008-12-11 22:38 ` Eric Dumazet
2008-12-11 22:38 ` [PATCH v3 1/7] fs: Use a percpu_counter to track nr_dentry Eric Dumazet
2008-12-11 22:38 ` Eric Dumazet
2007-07-24 1:24 ` Nick Piggin
2007-07-24 1:24 ` Nick Piggin
2008-12-16 21:04 ` Paul E. McKenney
2008-12-16 21:04 ` Paul E. McKenney
2008-12-11 22:39 ` [PATCH v3 2/7] fs: Use a percpu_counter to track nr_inodes Eric Dumazet
2008-12-11 22:39 ` Eric Dumazet
2007-07-24 1:30 ` Nick Piggin
2007-07-24 1:30 ` Nick Piggin
2008-12-12 5:11 ` Eric Dumazet
2008-12-12 5:11 ` Eric Dumazet
2008-12-16 21:10 ` Paul E. McKenney
2008-12-16 21:10 ` Paul E. McKenney
2008-12-11 22:39 ` [PATCH v3 3/7] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-12-11 22:39 ` Eric Dumazet
2007-07-24 1:34 ` Nick Piggin
2007-07-24 1:34 ` Nick Piggin
2008-12-16 21:26 ` Paul E. McKenney
2008-12-16 21:26 ` Paul E. McKenney
2008-12-11 22:39 ` [PATCH v3 4/7] fs: Introduce SINGLE dentries for pipes, socket, anon fd Eric Dumazet
2008-12-11 22:39 ` Eric Dumazet
2008-12-16 21:40 ` Paul E. McKenney
2008-12-16 21:40 ` Paul E. McKenney
2008-12-11 22:40 ` [PATCH v3 5/7] fs: new_inode_single() and iput_single() Eric Dumazet
2008-12-11 22:40 ` Eric Dumazet
2008-12-16 21:41 ` Paul E. McKenney
2008-12-16 21:41 ` Paul E. McKenney
2008-12-11 22:40 ` [PATCH v3 6/7] fs: struct file move from call_rcu() to SLAB_DESTROY_BY_RCU Eric Dumazet
2008-12-11 22:40 ` Eric Dumazet
2007-07-24 1:13 ` Nick Piggin
2007-07-24 1:13 ` Nick Piggin
2007-07-24 1:13 ` Nick Piggin
2008-12-12 2:50 ` Nick Piggin
2008-12-12 2:50 ` Nick Piggin
2008-12-12 4:45 ` Eric Dumazet
2008-12-12 4:45 ` Eric Dumazet
2008-12-12 16:48 ` Eric Dumazet
2008-12-12 16:48 ` Eric Dumazet
2008-12-13 2:07 ` Christoph Lameter
2008-12-13 2:07 ` Christoph Lameter
2008-12-17 20:25 ` Eric Dumazet
2008-12-17 20:25 ` Eric Dumazet
2008-12-13 1:41 ` Christoph Lameter
2008-12-13 1:41 ` Christoph Lameter
2008-12-11 22:41 ` [PATCH v3 7/7] fs: MS_NOREFCOUNT Eric Dumazet
2008-12-11 22:41 ` Eric Dumazet
2008-11-29 8:43 ` [PATCH v2 1/5] fs: Use a percpu_counter to track nr_dentry Eric Dumazet
2008-11-29 8:43 ` Eric Dumazet
2008-11-29 8:43 ` [PATCH v2 2/5] fs: Use a percpu_counter to track nr_inodes Eric Dumazet
2008-11-29 8:43 ` Eric Dumazet
2008-11-29 8:44 ` [PATCH v2 3/5] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-11-29 8:44 ` Eric Dumazet
2008-11-29 8:44 ` [PATCH v2 4/5] fs: Introduce SINGLE dentries for pipes, socket, anon fd Eric Dumazet
2008-11-29 8:44 ` Eric Dumazet
2008-11-29 10:38 ` Jörn Engel
2008-11-29 10:38 ` Jörn Engel
2008-11-29 10:38 ` Jörn Engel
2008-11-29 11:14 ` Eric Dumazet
2008-11-29 11:14 ` Eric Dumazet
2008-11-29 8:45 ` [PATCH v2 5/5] fs: new_inode_single() and iput_single() Eric Dumazet
2008-11-29 8:45 ` Eric Dumazet
2008-11-29 11:14 ` Jörn Engel
2008-11-29 11:14 ` Jörn Engel
2008-11-29 11:14 ` Jörn Engel
2008-11-26 23:30 ` [PATCH 1/6] fs: Introduce a per_cpu nr_dentry Eric Dumazet
2008-11-26 23:30 ` Eric Dumazet
2008-11-27 9:41 ` Christoph Hellwig
2008-11-27 9:41 ` Christoph Hellwig
2008-11-26 23:32 ` [PATCH 3/6] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-11-27 9:46 ` Christoph Hellwig
2008-11-27 9:46 ` Christoph Hellwig
2008-11-26 23:32 ` [PATCH 4/6] fs: Introduce a per_cpu nr_inodes Eric Dumazet
2008-11-26 23:32 ` Eric Dumazet
2008-11-27 9:32 ` Peter Zijlstra
2008-11-27 9:39 ` Peter Zijlstra
2008-11-27 9:39 ` Peter Zijlstra
2008-11-27 9:48 ` Christoph Hellwig
2008-11-27 10:01 ` Eric Dumazet
2008-11-27 10:01 ` Eric Dumazet
2008-11-27 10:07 ` Andi Kleen
2008-11-27 14:46 ` Christoph Lameter
2008-11-26 23:32 ` [PATCH 5/6] fs: Introduce special inodes Eric Dumazet
2008-11-26 23:32 ` Eric Dumazet
2008-11-27 8:20 ` David Miller
2008-11-27 8:20 ` David Miller
2008-11-26 23:32 ` [PATCH 6/6] fs: Introduce kern_mount_special() to mount special vfs Eric Dumazet
2008-11-27 8:21 ` David Miller
2008-11-27 8:21 ` David Miller
2008-11-27 9:53 ` Christoph Hellwig
2008-11-27 10:04 ` Eric Dumazet
2008-11-27 10:04 ` Eric Dumazet
2008-11-27 10:10 ` Christoph Hellwig
2008-11-27 10:10 ` Christoph Hellwig
2008-11-28 9:26 ` Al Viro
2008-11-28 9:26 ` Al Viro
2008-11-28 9:34 ` Al Viro
2008-11-28 9:34 ` Al Viro
2008-11-28 18:02 ` Ingo Molnar
2008-11-28 18:02 ` Ingo Molnar
2008-11-28 18:58 ` Ingo Molnar
2008-11-28 22:20 ` Eric Dumazet
2008-11-28 22:20 ` Eric Dumazet
2008-11-28 22:37 ` Eric Dumazet
2008-11-28 22:43 ` Eric Dumazet
2008-11-21 15:36 ` [PATCH] fs: pipe/sockets/anon dentries should not have a parent Christoph Hellwig
2008-11-21 17:58 ` [PATCH] fs: pipe/sockets/anon dentries should have themselves as parent Eric Dumazet
2008-11-21 18:43 ` Matthew Wilcox
2008-11-21 18:43 ` Matthew Wilcox
2008-11-23 3:53 ` Eric Dumazet [this message]
2008-11-21 9:18 ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -> 2.6.28 Ingo Molnar
2008-11-21 9:18 ` Ingo Molnar
2008-11-21 9:03 ` David Miller
2008-11-21 9:03 ` David Miller
2008-11-21 16:11 ` Christoph Lameter
2008-11-21 16:11 ` Christoph Lameter
2008-11-21 18:06 ` Christoph Lameter
2008-11-21 18:06 ` Christoph Lameter
2008-11-21 18:16 ` Eric Dumazet
2008-11-21 18:16 ` Eric Dumazet
2008-11-21 18:19 ` Eric Dumazet
2008-11-21 18:19 ` Eric Dumazet
2008-11-16 17:40 ` [Bug #11664] acpi errors and random freeze on sony vaio sr Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11698] 2.6.27-rc7, freezes with > 1 s2ram cycle Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11404] BUG: in 2.6.23-rc3-git7 in do_cciss_intr Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-17 16:19 ` Randy Dunlap
2008-11-16 17:40 ` [Bug #11569] Panic stop CPUs regression Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11543] kernel panic: softlockup in tick_periodic() ??? Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11836] Scheduler on C2D CPU and latest 2.6.27 kernel Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11805] mounting XFS produces a segfault Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-17 14:44 ` Christoph Hellwig
2008-11-17 14:44 ` Christoph Hellwig
2008-11-16 17:40 ` [Bug #11795] ks959-sir dongle no longer works under 2.6.27 (REGRESSION) Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11865] WOL for E100 Doesn't Work Anymore Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11843] usb hdd problems with 2.6.27.2 Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 21:37 ` Luciano Rocha
2008-11-16 17:40 ` [Bug #11876] RCU hang on cpu re-hotplug with 2.6.27rc8 Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11886] without serial console system doesn't poweroff Rafael J. Wysocki
2008-11-16 17:40 ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #12039] Regression: USB/DVB 2.6.26.8 --> 2.6.27.6 Rafael J. Wysocki
2008-11-16 17:41 ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #11983] iwlagn: wrong command queue 31, command id 0x0 Rafael J. Wysocki
2008-11-16 17:41 ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #12048] Regression in bonding between 2.6.26.8 and 2.6.27.6 Rafael J. Wysocki
2008-11-16 17:41 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4928D3A9.8060805@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=a.p.zijlstra@chello.nl \
--cc=cl@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=efault@gmx.de \
--cc=hch@infradead.org \
--cc=kernel-testers@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=mingo@elte.hu \
--cc=netdev@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.