From: Sage Weil Date: Wed, 7 May 2008 20:47:37 +0000 (-0700) Subject: kclient: create fall back to mknod if no nameidata (as with nfs-kernel-server) X-Git-Tag: v0.2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=41443cefc448a6b5a524dfaef77bfdaf296fd373;p=ceph.git kclient: create fall back to mknod if no nameidata (as with nfs-kernel-server) --- diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 9aae39bba728..23d017ce60e1 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) {