Commit 675b5da0 authored by Trond Myklebust's avatar Trond Myklebust

[PATCH] Pass 'nameidata' to ->create()

  - Make the VFS pass the struct nameidata as an optional argument
    to the create inode operation.
  - Patch vfs_create() to take a struct nameidata as an optional
    argument.
parent fc8b427e
......@@ -256,7 +256,7 @@ affs_unlink(struct inode *dir, struct dentry *dentry)
}
int
affs_create(struct inode *dir, struct dentry *dentry, int mode)
affs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
struct super_block *sb = dir->i_sb;
struct inode *inode;
......
......@@ -78,7 +78,8 @@ struct file_operations bfs_dir_operations = {
extern void dump_imap(const char *, struct super_block *);
static int bfs_create(struct inode * dir, struct dentry * dentry, int mode)
static int bfs_create(struct inode * dir, struct dentry * dentry, int mode,
struct nameidata *nd)
{
int err;
struct inode * inode;
......
......@@ -46,7 +46,7 @@ extern void cifs_delete_inode(struct inode *);
/* Functions related to inodes */
extern struct inode_operations cifs_dir_inode_ops;
extern int cifs_create(struct inode *, struct dentry *, int);
extern int cifs_create(struct inode *, struct dentry *, int, struct nameidata *);
extern struct dentry *cifs_lookup(struct inode *, struct dentry *, struct nameidata *);
extern int cifs_unlink(struct inode *, struct dentry *);
extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *);
......
......@@ -119,7 +119,8 @@ build_wildcard_path_from_dentry(struct dentry *direntry)
/* Inode operations in similar order to how they appear in the Linux file fs.h */
int
cifs_create(struct inode *inode, struct dentry *direntry, int mode)
cifs_create(struct inode *inode, struct dentry *direntry, int mode,
struct nameidata *nd)
{
int rc = -ENOENT;
int xid;
......
......@@ -28,7 +28,7 @@
#include <linux/coda_proc.h>
/* dir inode-ops */
static int coda_create(struct inode *dir, struct dentry *new, int mode);
static int coda_create(struct inode *dir, struct dentry *new, int mode, struct nameidata *nd);
static int coda_mknod(struct inode *dir, struct dentry *new, int mode, dev_t rdev);
static struct dentry *coda_lookup(struct inode *dir, struct dentry *target, struct nameidata *nd);
static int coda_link(struct dentry *old_dentry, struct inode *dir_inode,
......@@ -190,7 +190,7 @@ static inline void coda_dir_changed(struct inode *dir, int link)
}
/* creation routines: create, mknod, mkdir, link, symlink */
static int coda_create(struct inode *dir, struct dentry *de, int mode)
static int coda_create(struct inode *dir, struct dentry *de, int mode, struct nameidata *nd)
{
int error=0;
const char *name=de->d_name.name;
......
......@@ -120,7 +120,7 @@ struct dentry *ext2_get_parent(struct dentry *child)
* If the create succeeds, we fill in the inode information
* with d_instantiate().
*/
static int ext2_create (struct inode * dir, struct dentry * dentry, int mode)
static int ext2_create (struct inode * dir, struct dentry * dentry, int mode, struct nameidata *nd)
{
struct inode * inode = ext2_new_inode (dir, mode);
int err = PTR_ERR(inode);
......
......@@ -1623,7 +1623,8 @@ static int ext3_add_nondir(handle_t *handle,
* If the create succeeds, we fill in the inode information
* with d_instantiate().
*/
static int ext3_create (struct inode * dir, struct dentry * dentry, int mode)
static int ext3_create (struct inode * dir, struct dentry * dentry, int mode,
struct nameidata *nd)
{
handle_t *handle;
struct inode * inode;
......
......@@ -163,7 +163,7 @@ static inline void mark_inodes_deleted(struct hfs_cat_entry *entry,
* a directory and return a corresponding inode, given the inode for
* the directory and the name (and its length) of the new file.
*/
int hfs_create(struct inode * dir, struct dentry *dentry, int mode)
int hfs_create(struct inode * dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
struct hfs_cat_entry *entry = HFS_I(dir)->entry;
struct hfs_cat_entry *new;
......
......@@ -26,7 +26,7 @@
static struct dentry *dbl_lookup(struct inode *, struct dentry *, struct nameidata *);
static int dbl_readdir(struct file *, void *, filldir_t);
static int dbl_create(struct inode *, struct dentry *, int);
static int dbl_create(struct inode *, struct dentry *, int, struct nameidata *);
static int dbl_mkdir(struct inode *, struct dentry *, int);
static int dbl_unlink(struct inode *, struct dentry *);
static int dbl_rmdir(struct inode *, struct dentry *);
......@@ -272,7 +272,7 @@ static int dbl_readdir(struct file * filp,
* the directory and the name (and its length) of the new file.
*/
static int dbl_create(struct inode * dir, struct dentry *dentry,
int mode)
int mode, struct nameidata *nd)
{
int error;
......@@ -280,7 +280,7 @@ static int dbl_create(struct inode * dir, struct dentry *dentry,
if (is_hdr(dir, dentry->d_name.name, dentry->d_name.len)) {
error = -EEXIST;
} else {
error = hfs_create(dir, dentry, mode);
error = hfs_create(dir, dentry, mode, nd);
}
unlock_kernel();
return error;
......
......@@ -285,7 +285,7 @@ void hpfs_decide_conv(struct inode *, unsigned char *, unsigned);
/* namei.c */
int hpfs_mkdir(struct inode *, struct dentry *, int);
int hpfs_create(struct inode *, struct dentry *, int);
int hpfs_create(struct inode *, struct dentry *, int, struct nameidata *);
int hpfs_mknod(struct inode *, struct dentry *, int, dev_t);
int hpfs_symlink(struct inode *, struct dentry *, const char *);
int hpfs_unlink(struct inode *, struct dentry *);
......
......@@ -106,7 +106,7 @@ int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
return -ENOSPC;
}
int hpfs_create(struct inode *dir, struct dentry *dentry, int mode)
int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
const char *name = dentry->d_name.name;
unsigned len = dentry->d_name.len;
......
......@@ -462,7 +462,7 @@ static int hugetlbfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
return retval;
}
static int hugetlbfs_create(struct inode *dir, struct dentry *dentry, int mode)
static int hugetlbfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
return hugetlbfs_mknod(dir, dentry, mode | S_IFREG, 0);
}
......
......@@ -412,7 +412,8 @@ int presto_prep(struct dentry *dentry, struct presto_cache **cache,
return 0;
}
static int presto_create(struct inode * dir, struct dentry * dentry, int mode)
static int presto_create(struct inode * dir, struct dentry * dentry, int mode,
struct nameidata *nd)
{
int error;
struct presto_cache *cache;
......
......@@ -598,7 +598,7 @@ int presto_do_create(struct presto_file_set *fset, struct dentry *dir,
}
DQUOT_INIT(dir->d_inode);
lock_kernel();
error = iops->create(dir->d_inode, dentry, mode);
error = iops->create(dir->d_inode, dentry, mode, NULL);
if (error) {
EXIT;
goto exit_lock;
......
......@@ -1273,7 +1273,8 @@ jffs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
* with d_instantiate().
*/
static int
jffs_create(struct inode *dir, struct dentry *dentry, int mode)
jffs_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
struct jffs_raw_inode raw_inode;
struct jffs_control *c;
......
......@@ -32,7 +32,7 @@ typedef dev_t mknod_arg_t;
static int jffs2_readdir (struct file *, void *, filldir_t);
static int jffs2_create (struct inode *,struct dentry *,int);
static int jffs2_create (struct inode *,struct dentry *,int, struct nameidata *);
static struct dentry *jffs2_lookup (struct inode *,struct dentry *, struct nameidata *);
static int jffs2_link (struct dentry *,struct inode *,struct dentry *);
static int jffs2_unlink (struct inode *,struct dentry *);
......@@ -175,7 +175,8 @@ static int jffs2_readdir(struct file *filp, void *dirent, filldir_t filldir)
/***********************************************************************/
static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode)
static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode,
struct nameidata *nd)
{
struct jffs2_raw_inode *ri;
struct jffs2_inode_info *f, *dir_f;
......
......@@ -54,11 +54,13 @@ s64 commitZeroLink(tid_t, struct inode *);
* PARAMETER: dip - parent directory vnode
* dentry - dentry of new file
* mode - create mode (rwxrwxrwx).
* nd- nd struct
*
* RETURN: Errors from subroutines
*
*/
int jfs_create(struct inode *dip, struct dentry *dentry, int mode)
int jfs_create(struct inode *dip, struct dentry *dentry, int mode,
struct nameidata *nd)
{
int rc = 0;
tid_t tid; /* transaction id */
......
......@@ -89,7 +89,8 @@ static int minix_mknod(struct inode * dir, struct dentry *dentry, int mode, dev_
return error;
}
static int minix_create(struct inode * dir, struct dentry *dentry, int mode)
static int minix_create(struct inode * dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
return minix_mknod(dir, dentry, mode, 0);
}
......
......@@ -261,7 +261,8 @@ static int msdos_add_entry(struct inode *dir, const char *name,
*/
/***** Create a file */
int msdos_create(struct inode *dir,struct dentry *dentry,int mode)
int msdos_create(struct inode *dir,struct dentry *dentry,int mode,
struct nameidata *nd)
{
struct super_block *sb = dir->i_sb;
struct buffer_head *bh;
......
......@@ -1105,7 +1105,8 @@ void unlock_rename(struct dentry *p1, struct dentry *p2)
}
}
int vfs_create(struct inode *dir, struct dentry *dentry, int mode)
int vfs_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
int error = may_create(dir, dentry);
......@@ -1120,7 +1121,7 @@ int vfs_create(struct inode *dir, struct dentry *dentry, int mode)
if (error)
return error;
DQUOT_INIT(dir);
error = dir->i_op->create(dir, dentry, mode);
error = dir->i_op->create(dir, dentry, mode, nd);
if (!error) {
inode_dir_notify(dir, DN_CREATE);
security_inode_post_create(dir, dentry, mode);
......@@ -1277,7 +1278,7 @@ int open_namei(const char * pathname, int flag, int mode, struct nameidata *nd)
if (!dentry->d_inode) {
if (!IS_POSIXACL(dir->d_inode))
mode &= ~current->fs->umask;
error = vfs_create(dir->d_inode, dentry, mode);
error = vfs_create(dir->d_inode, dentry, mode, nd);
up(&dir->d_inode->i_sem);
dput(nd->dentry);
nd->dentry = dentry;
......@@ -1445,7 +1446,7 @@ asmlinkage long sys_mknod(const char __user * filename, int mode, dev_t dev)
if (!IS_ERR(dentry)) {
switch (mode & S_IFMT) {
case 0: case S_IFREG:
error = vfs_create(nd.dentry->d_inode,dentry,mode);
error = vfs_create(nd.dentry->d_inode,dentry,mode,&nd);
break;
case S_IFCHR: case S_IFBLK: case S_IFIFO: case S_IFSOCK:
error = vfs_mknod(nd.dentry->d_inode,dentry,mode,dev);
......
......@@ -34,7 +34,7 @@ static void ncp_do_readdir(struct file *, void *, filldir_t,
static int ncp_readdir(struct file *, void *, filldir_t);
static int ncp_create(struct inode *, struct dentry *, int);
static int ncp_create(struct inode *, struct dentry *, int, struct nameidata *);
static struct dentry *ncp_lookup(struct inode *, struct dentry *, struct nameidata *);
static int ncp_unlink(struct inode *, struct dentry *);
static int ncp_mkdir(struct inode *, struct dentry *, int);
......@@ -942,7 +942,8 @@ int ncp_create_new(struct inode *dir, struct dentry *dentry, int mode,
return error;
}
static int ncp_create(struct inode *dir, struct dentry *dentry, int mode)
static int ncp_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
return ncp_create_new(dir, dentry, mode, 0, 0);
}
......
......@@ -40,7 +40,7 @@ static int nfs_readdir(struct file *, void *, filldir_t);
static struct dentry *nfs_lookup(struct inode *, struct dentry *, struct nameidata *);
static int nfs_cached_lookup(struct inode *, struct dentry *,
struct nfs_fh *, struct nfs_fattr *);
static int nfs_create(struct inode *, struct dentry *, int);
static int nfs_create(struct inode *, struct dentry *, int, struct nameidata *);
static int nfs_mkdir(struct inode *, struct dentry *, int);
static int nfs_rmdir(struct inode *, struct dentry *);
static int nfs_unlink(struct inode *, struct dentry *);
......@@ -787,7 +787,8 @@ static int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle,
* that the operation succeeded on the server, but an error in the
* reply path made it appear to have failed.
*/
static int nfs_create(struct inode *dir, struct dentry *dentry, int mode)
static int nfs_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
struct iattr attr;
struct nfs_fattr fattr;
......
......@@ -924,7 +924,7 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
err = nfserr_perm;
switch (type) {
case S_IFREG:
err = vfs_create(dirp, dchild, iap->ia_mode);
err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
break;
case S_IFDIR:
err = vfs_mkdir(dirp, dchild, iap->ia_mode);
......@@ -1067,7 +1067,7 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
goto out;
}
err = vfs_create(dirp, dchild, iap->ia_mode);
err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
if (err < 0)
goto out_nfserr;
......
......@@ -59,7 +59,7 @@ static char *alias_names [ALIASES_NNODES];
#define NODE2INO(node) (node + OPENPROM_FIRST_INO)
#define NODEP2INO(no) (no + OPENPROM_FIRST_INO + last_node)
static int openpromfs_create (struct inode *, struct dentry *, int);
static int openpromfs_create (struct inode *, struct dentry *, int, struct nameidata *);
static int openpromfs_readdir(struct file *, void *, filldir_t);
static struct dentry *openpromfs_lookup(struct inode *, struct dentry *dentry, struct nameidata *nd);
static int openpromfs_unlink (struct inode *, struct dentry *dentry);
......@@ -854,7 +854,8 @@ static int openpromfs_readdir(struct file * filp, void * dirent, filldir_t filld
return 0;
}
static int openpromfs_create (struct inode *dir, struct dentry *dentry, int mode)
static int openpromfs_create (struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
char *p;
struct inode *inode;
......
......@@ -142,7 +142,8 @@ struct dentry * qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nam
}
#ifdef CONFIG_QNX4FS_RW
int qnx4_create(struct inode *dir, struct dentry *dentry, int mode)
int qnx4_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
QNX4DEBUG(("qnx4: qnx4_create\n"));
if (dir == NULL) {
......
......@@ -111,7 +111,7 @@ static int ramfs_mkdir(struct inode * dir, struct dentry * dentry, int mode)
return retval;
}
static int ramfs_create(struct inode *dir, struct dentry *dentry, int mode)
static int ramfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
return ramfs_mknod(dir, dentry, mode | S_IFREG, 0);
}
......
......@@ -558,7 +558,8 @@ static int new_inode_init(struct inode *inode, struct inode *dir, int mode) {
return 0 ;
}
static int reiserfs_create (struct inode * dir, struct dentry *dentry, int mode)
static int reiserfs_create (struct inode * dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
int retval;
struct inode * inode;
......
......@@ -25,7 +25,7 @@ static int smb_readdir(struct file *, void *, filldir_t);
static int smb_dir_open(struct inode *, struct file *);
static struct dentry *smb_lookup(struct inode *, struct dentry *, struct nameidata *);
static int smb_create(struct inode *, struct dentry *, int);
static int smb_create(struct inode *, struct dentry *, int, struct nameidata *);
static int smb_mkdir(struct inode *, struct dentry *, int);
static int smb_rmdir(struct inode *, struct dentry *);
static int smb_unlink(struct inode *, struct dentry *);
......@@ -510,7 +510,8 @@ smb_instantiate(struct dentry *dentry, __u16 fileid, int have_id)
/* N.B. How should the mode argument be used? */
static int
smb_create(struct inode *dir, struct dentry *dentry, int mode)
smb_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
struct smb_sb_info *server = server_from_dentry(dentry);
__u16 fileid;
......
......@@ -96,7 +96,7 @@ static int sysv_mknod(struct inode * dir, struct dentry * dentry, int mode, dev_
return err;
}
static int sysv_create(struct inode * dir, struct dentry * dentry, int mode)
static int sysv_create(struct inode * dir, struct dentry * dentry, int mode, struct nameidata *nd)
{
return sysv_mknod(dir, dentry, mode, 0);
}
......
......@@ -621,7 +621,7 @@ static int udf_delete_entry(struct inode *inode, struct fileIdentDesc *fi,
return udf_write_fi(inode, cfi, fi, fibh, NULL, NULL);
}
static int udf_create(struct inode *dir, struct dentry *dentry, int mode)
static int udf_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
struct udf_fileident_bh fibh;
struct inode *inode;
......
......@@ -92,7 +92,8 @@ static struct dentry *ufs_lookup(struct inode * dir, struct dentry *dentry, stru
* If the create succeeds, we fill in the inode information
* with d_instantiate().
*/
static int ufs_create (struct inode * dir, struct dentry * dentry, int mode)
static int ufs_create (struct inode * dir, struct dentry * dentry, int mode,
struct nameidata *nd)
{
struct inode * inode = ufs_new_inode(dir, mode);
int err = PTR_ERR(inode);
......
......@@ -105,7 +105,7 @@ int umsdos_make_emd(struct dentry *parent)
Printk(("umsdos_make_emd: creating EMD %s/%s\n",
parent->d_name.name, demd->d_name.name));
err = msdos_create(parent->d_inode, demd, S_IFREG | 0777);
err = msdos_create(parent->d_inode, demd, S_IFREG | 0777, NULL);
if (err) {
printk (KERN_WARNING
"umsdos_make_emd: create %s/%s failed, err=%d\n",
......
......@@ -274,7 +274,7 @@ static int umsdos_create_any (struct inode *dir, struct dentry *dentry,
if (fake->d_inode)
goto out_remove_dput;
ret = msdos_create (dir, fake, S_IFREG | 0777);
ret = msdos_create (dir, fake, S_IFREG | 0777, NULL);
if (ret)
goto out_remove_dput;
......@@ -311,7 +311,7 @@ static int umsdos_create_any (struct inode *dir, struct dentry *dentry,
*
* Return the status of the operation. 0 mean success.
*/
int UMSDOS_create (struct inode *dir, struct dentry *dentry, int mode)
int UMSDOS_create (struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
{
return umsdos_create_any (dir, dentry, mode, 0, 0);
}
......
......@@ -912,7 +912,8 @@ struct dentry *vfat_lookup(struct inode *dir,struct dentry *dentry, struct namei
return dentry;
}
int vfat_create(struct inode *dir,struct dentry* dentry,int mode)
int vfat_create(struct inode *dir,struct dentry* dentry,int mode,
struct nameidata *nd)
{
struct super_block *sb = dir->i_sb;
struct inode *inode = NULL;
......
......@@ -175,7 +175,8 @@ STATIC int
linvfs_create(
struct inode *dir,
struct dentry *dentry,
int mode)
int mode,
struct nameidata *nd)
{
return linvfs_mknod(dir, dentry, mode, 0);
}
......
......@@ -43,7 +43,7 @@ extern int affs_init_bitmap(struct super_block *sb);
extern int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len);
extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *);
extern int affs_unlink(struct inode *dir, struct dentry *dentry);
extern int affs_create(struct inode *dir, struct dentry *dentry, int mode);
extern int affs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *);
extern int affs_mkdir(struct inode *dir, struct dentry *dentry, int mode);
extern int affs_rmdir(struct inode *dir, struct dentry *dentry);
extern int affs_link(struct dentry *olddentry, struct inode *dir,
......
......@@ -639,7 +639,7 @@ static inline void unlock_super(struct super_block * sb)
/*
* VFS helper functions..
*/
extern int vfs_create(struct inode *, struct dentry *, int);
extern int vfs_create(struct inode *, struct dentry *, int, struct nameidata *);
extern int vfs_mkdir(struct inode *, struct dentry *, int);
extern int vfs_mknod(struct inode *, struct dentry *, int, dev_t);
extern int vfs_symlink(struct inode *, struct dentry *, const char *);
......@@ -730,7 +730,7 @@ struct file_operations {
};
struct inode_operations {
int (*create) (struct inode *,struct dentry *,int);
int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
int (*link) (struct dentry *,struct inode *,struct dentry *);
int (*unlink) (struct inode *,struct dentry *);
......
......@@ -234,7 +234,7 @@ extern struct hfs_cat_entry *hfs_cat_get(struct hfs_mdb *,
const struct hfs_cat_key *);
/* dir.c */
extern int hfs_create(struct inode *, struct dentry *, int);
extern int hfs_create(struct inode *, struct dentry *, int, struct nameidata *);
extern int hfs_mkdir(struct inode *, struct dentry *, int);
extern int hfs_unlink(struct inode *, struct dentry *);
extern int hfs_rmdir(struct inode *, struct dentry *);
......
......@@ -308,7 +308,7 @@ extern int fat_scan(struct inode *dir, const char *name,
/* msdos/namei.c - these are for Umsdos */
extern struct dentry *msdos_lookup(struct inode *dir, struct dentry *, struct nameidata *);
extern int msdos_create(struct inode *dir, struct dentry *dentry, int mode);
extern int msdos_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *);
extern int msdos_rmdir(struct inode *dir, struct dentry *dentry);
extern int msdos_mkdir(struct inode *dir, struct dentry *dentry, int mode);
extern int msdos_unlink(struct inode *dir, struct dentry *dentry);
......@@ -318,7 +318,7 @@ extern int msdos_fill_super(struct super_block *sb, void *data, int silent);
/* vfat/namei.c - these are for dmsdos */
extern struct dentry *vfat_lookup(struct inode *dir, struct dentry *, struct nameidata *);
extern int vfat_create(struct inode *dir, struct dentry *dentry, int mode);
extern int vfat_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *);
extern int vfat_rmdir(struct inode *dir, struct dentry *dentry);
extern int vfat_unlink(struct inode *dir, struct dentry *dentry);
extern int vfat_mkdir(struct inode *dir, struct dentry *dentry, int mode);
......
......@@ -117,14 +117,13 @@ extern unsigned long qnx4_block_map(struct inode *inode, long iblock);
extern struct buffer_head *qnx4_getblk(struct inode *, int, int);
extern struct buffer_head *qnx4_bread(struct inode *, int, int);
extern int qnx4_create(struct inode *dir, struct dentry *dentry, int mode);
extern struct inode_operations qnx4_file_inode_operations;
extern struct inode_operations qnx4_dir_inode_operations;
extern struct file_operations qnx4_file_operations;
extern struct file_operations qnx4_dir_operations;
extern int qnx4_is_free(struct super_block *sb, long block);
extern int qnx4_set_bitmap(struct super_block *sb, long block, int busy);
extern int qnx4_create(struct inode *inode, struct dentry *dentry, int mode);
extern int qnx4_create(struct inode *inode, struct dentry *dentry, int mode, struct nameidata *nd);
extern void qnx4_truncate(struct inode *inode);
extern void qnx4_free_inode(struct inode *inode);
extern int qnx4_unlink(struct inode *dir, struct dentry *dentry);
......
......@@ -1398,7 +1398,8 @@ static int shmem_mkdir(struct inode *dir, struct dentry *dentry, int mode)
return 0;
}
static int shmem_create(struct inode *dir, struct dentry *dentry, int mode)
static int shmem_create(struct inode *dir, struct dentry *dentry, int mode,
struct nameidata *nd)
{
return shmem_mknod(dir, dentry, mode | S_IFREG, 0);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment