diff options
-rw-r--r-- | fs/9p/vfs_inode.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 88419073c654..8f68280d752e 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
@@ -55,6 +55,10 @@ static const struct inode_operations v9fs_file_inode_operations_dotl; | |||
55 | static const struct inode_operations v9fs_symlink_inode_operations; | 55 | static const struct inode_operations v9fs_symlink_inode_operations; |
56 | static const struct inode_operations v9fs_symlink_inode_operations_dotl; | 56 | static const struct inode_operations v9fs_symlink_inode_operations_dotl; |
57 | 57 | ||
58 | static int | ||
59 | v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode, | ||
60 | dev_t rdev); | ||
61 | |||
58 | /** | 62 | /** |
59 | * unixmode2p9mode - convert unix mode bits to plan 9 | 63 | * unixmode2p9mode - convert unix mode bits to plan 9 |
60 | * @v9ses: v9fs session information | 64 | * @v9ses: v9fs session information |
@@ -681,8 +685,14 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
681 | v9ses = v9fs_inode2v9ses(dir); | 685 | v9ses = v9fs_inode2v9ses(dir); |
682 | if (nd && nd->flags & LOOKUP_OPEN) | 686 | if (nd && nd->flags & LOOKUP_OPEN) |
683 | flags = nd->intent.open.flags - 1; | 687 | flags = nd->intent.open.flags - 1; |
684 | else | 688 | else { |
685 | flags = O_RDWR; | 689 | /* |
690 | * create call without LOOKUP_OPEN is due | ||
691 | * to mknod of regular files. So use mknod | ||
692 | * operation. | ||
693 | */ | ||
694 | return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); | ||
695 | } | ||
686 | 696 | ||
687 | name = (char *) dentry->d_name.name; | 697 | name = (char *) dentry->d_name.name; |
688 | P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " | 698 | P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " |