diff mbox

fs: export simple_dname for drm drivers.

Message ID 1390179284-4824-1-git-send-email-airlied@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

David Airlie Jan. 20, 2014, 12:54 a.m. UTC
David Herrmann's changes to use a pseudo filesystem for drm's shared
inodes requires this be exported for drm to build as a module.

I'd like to merge this via the drm tree, so please ack.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 fs/dcache.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Al Viro Jan. 20, 2014, 1:27 a.m. UTC | #1
On Mon, Jan 20, 2014 at 10:54:44AM +1000, Dave Airlie wrote:
> David Herrmann's changes to use a pseudo filesystem for drm's shared
> inodes requires this be exported for drm to build as a module.
> 
> I'd like to merge this via the drm tree, so please ack.

Having looked through these patches...  The problem is that you'll get
your module impossible to unload.  Sane solution:

static struct vfsmount *drm_mnt;
static int count;
struct inode *drm_alloc_inode(void)
{
	struct inode *res;
	int err = simple_pin_fs(&drm_fs, &drm_mnt, &count);
	if (err)
		return ERR_PTR(err);
	res = alloc_anon_inode(drm_mnt->mnt_sb);
	if (IS_ERR(res))
		simple_release_fs(&drm_mnt, &count);
	return res;
}

/* call from drm_free_dev() */
void drm_put_anon_inode(struct drm_device *dev)
{
	iput(dev->anon_inode);
	simple_release_fs(&drm_mnt, &count);
}

and lose those kern_mount/kern_umount.
diff mbox

Patch

diff --git a/fs/dcache.c b/fs/dcache.c
index 6055d61..27d66b8 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -3107,6 +3107,7 @@  char *simple_dname(struct dentry *dentry, char *buffer, int buflen)
 		end = ERR_PTR(-ENAMETOOLONG);
 	return end;
 }
+EXPORT_SYMBOL(simple_dname);
 
 /*
  * Write full pathname from the root of the filesystem into the buffer.