示例#1
0
static int autofs4_dir_mkdir(struct inode *dir, struct dentry *dentry, int mode)
{
    struct autofs_sb_info *sbi = autofs4_sbi(dir->i_sb);
    struct autofs_info *ino = autofs4_dentry_ino(dentry);
    struct inode *inode;

    if ( !autofs4_oz_mode(sbi) )
        return -EACCES;

    DPRINTK("dentry %p, creating %.*s",
            dentry, dentry->d_name.len, dentry->d_name.name);

    ino = autofs4_init_ino(ino, sbi, S_IFDIR | 0555);
    if (ino == NULL)
        return -ENOSPC;

    inode = autofs4_get_inode(dir->i_sb, ino);
    d_instantiate(dentry, inode);

    if (dir == dir->i_sb->s_root->d_inode)
        dentry->d_op = &autofs4_root_dentry_operations;
    else
        dentry->d_op = &autofs4_dentry_operations;

    dentry->d_fsdata = ino;
    ino->dentry = dget(dentry);
    ino->inode = inode;
    dir->i_nlink++;
    dir->i_mtime = CURRENT_TIME;

    return 0;
}
示例#2
0
static struct autofs_info *autofs4_mkroot(struct autofs_sb_info *sbi)
{
	struct autofs_info *ino;

	ino = autofs4_init_ino(NULL, sbi, S_IFDIR | 0755);
	if (!ino)
		return NULL;

	return ino;
}
示例#3
0
文件: root.c 项目: xricson/knoppix
static int autofs4_dir_symlink(struct inode *dir, 
			       struct dentry *dentry,
			       const char *symname)
{
	struct autofs_sb_info *sbi = autofs4_sbi(dir->i_sb);
	struct autofs_info *ino = autofs4_dentry_ino(dentry);
	struct inode *inode;
	char *cp;

	DPRINTK(("autofs_dir_symlink: %s <- %.*s\n", symname, 
		 dentry->d_name.len, dentry->d_name.name));

	lock_kernel();
	if (!autofs4_oz_mode(sbi)) {
		unlock_kernel();
		return -EACCES;
	}

	ino = autofs4_init_ino(ino, sbi, S_IFLNK | 0555);
	if (ino == NULL) {
		unlock_kernel();
		return -ENOSPC;
	}

	ino->size = strlen(symname);
	ino->u.symlink = cp = kmalloc(ino->size + 1, GFP_KERNEL);

	if (cp == NULL) {
		kfree(ino);
		unlock_kernel();
		return -ENOSPC;
	}

	strcpy(cp, symname);

	inode = autofs4_get_inode(dir->i_sb, ino);
	d_instantiate(dentry, inode);

	if (dir == dir->i_sb->s_root->d_inode)
		dentry->d_op = &autofs4_root_dentry_operations;
	else
		dentry->d_op = &autofs4_dentry_operations;

	dentry->d_fsdata = ino;
	ino->dentry = dget(dentry);
	ino->inode = inode;

	dir->i_mtime = CURRENT_TIME;

	unlock_kernel();
	return 0;
}