From 41443cefc448a6b5a524dfaef77bfdaf296fd373 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 7 May 2008 13:47:37 -0700 Subject: [PATCH] kclient: create fall back to mknod if no nameidata (as with nfs-kernel-server) --- src/kernel/dir.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 9aae39bba72..23d017ce60e 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -307,17 +307,6 @@ static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry, return ceph_do_lookup(dir->i_sb, dentry, CEPH_STAT_MASK_INODE_ALL, 0); } -static int ceph_create(struct inode *dir, struct dentry *dentry, int mode, - struct nameidata *nd) -{ - int err; - dout(5, "create in dir %p dentry %p name '%.*s'\n", - dir, dentry, dentry->d_name.len, dentry->d_name.name); - BUG_ON((nd->flags & LOOKUP_OPEN) == 0); - err = ceph_lookup_open(dir, dentry, nd, mode); - return err; -} - static int ceph_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev) { @@ -353,6 +342,23 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry, return err; } +static int ceph_create(struct inode *dir, struct dentry *dentry, int mode, + struct nameidata *nd) +{ + int err; + + dout(5, "create in dir %p dentry %p name '%.*s'\n", + dir, dentry, dentry->d_name.len, dentry->d_name.name); + if (nd) { + BUG_ON((nd->flags & LOOKUP_OPEN) == 0); + err = ceph_lookup_open(dir, dentry, nd, mode); + return err; + } + + /* fall back to mknod */ + return ceph_mknod(dir, dentry, mode, 0); +} + static int ceph_symlink(struct inode *dir, struct dentry *dentry, const char *dest) { -- 2.47.3