fs: anon_inodes implement dname
authorNick Piggin <[email protected]>
Fri, 20 Nov 2009 22:28:35 +0000 (14:28 -0800)
committerAl Viro <[email protected]>
Thu, 17 Dec 2009 15:48:12 +0000 (10:48 -0500)
Add a d_dname method for anon_inodes filesystem, the same way pipefs and
sockfs pseudo filesystems.  This allows us to remove the DCACHE_UNHASHED
hack from anon_inodes.c (see next patch).

[AV: inumber is useless here, dropped from anon_inodefs_dname()]

Signed-off-by: Nick Piggin <[email protected]>
Cc: Miklos Szeredi <[email protected]>
Cc: Davide Libenzi <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: Al Viro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Al Viro <[email protected]>
fs/anon_inodes.c

index 94f5110c4655167a769088e40e94e3a5159dedeb..01c529a3f7d2372bcc66dc8cbaa8264f1cab79b0 100644 (file)
@@ -45,6 +45,15 @@ static int anon_inodefs_delete_dentry(struct dentry *dentry)
        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, "anon_inode:%s",
+                               dentry->d_name.name);
+}
+
 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_inode_fs_type = {
 };
 static const struct dentry_operations anon_inodefs_dentry_operations = {
        .d_delete       = anon_inodefs_delete_dentry,
+       .d_dname        = anon_inodefs_dname,
 };
 
 /*