BTW Andrea, could you look at line in net/socket.c, touching i_count?
I added a comment there recently:
/*
* The socket maintains a reference to the inode, so we
* have to increment the count.
*
* It smells... In theory we should not make this not holding
* inode_lock. This syncronization point is not better than
* kernel lock. I see no problem now, this inode is our private
* property.
*/
sock->inode->i_count++;
I wrote "I see no problem", but it is true only if this inode is
really private i.e. VFS never changes i_count for some service purposes.
Also, is it difficult to make similar thing with d_alloc_root?
They are also dummy, so that it does not require cleaning all of dcache.
It would allow to shot the last kernel lock in net/...
Alexey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/