On Thu, Oct 15, 2009 at 10:13:43AM +0200, Nick Piggin wrote: > Now both sockets and pipes define a d_dname so they are OK, but anon_inodes > does not. I think they should probably be made to just provide a d_dname > anyway so we can have the familiar format of "pseudofs:[ino]" rather than > "[pseudofs]" that we have now. > > That should make this patch work for anon_inodes.c as well. So what if we were to do this first? Are there any other reasons I've missed? (btw. this changes the format the link if that is a problem. Probably if we're going to do this change, we should change things like [timerfd] to just timerfd while we're there to improve consistency further. -- Pipe and socket pseudo filesystems report their file descriptor link paths as pipe:[ino] and socket:[ino]. anon_inodefs allows subsystems to specify a name, but it does not report an associated inode number. Implement this with anon_inodefs_dname in the same way pipefs and sockfs are. --- fs/anon_inodes.c | 10 ++++++++++ 1 file changed, 10 insertions(+) Index: linux-2.6/fs/anon_inodes.c =================================================================== --- linux-2.6.orig/fs/anon_inodes.c +++ linux-2.6/fs/anon_inodes.c @@ -45,6 +45,15 @@ static int anon_inodefs_delete_dentry(st return 1; } +/* + * anon_inodefs_dname() is called from d_path(). + */ +static char *anon_inodefs_dname(struct dentry *dentry, char *buffer, int buflen) +{ + return dynamic_dname(dentry, buffer, buflen, "%s:[%lu]", + dentry->d_name.name, dentry->d_inode->i_ino); +} + static struct file_system_type anon_inode_fs_type = { .name = "anon_inodefs", .get_sb = anon_inodefs_get_sb, @@ -52,6 +61,7 @@ static struct file_system_type anon_inod }; static const struct dentry_operations anon_inodefs_dentry_operations = { .d_delete = anon_inodefs_delete_dentry, + .d_dname = anon_inodefs_dname, }; /* -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html