if (S_ISREG(inode->i_mode)) { fuse_init_common(inode); } else if (S_ISDIR(inode->i_mode)) fuse_init_dir(inode); else if (S_ISLNK(inode->i_mode)) fuse_init_symlink(inode); else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { fuse_init_common(inode); init_special_inode(inode, inode->i_mode, new_decode_dev(attr->rdev)); } else {  inode->i_mode = S_IFREG; fuse_init_common(inode); }
static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr){	inode->i_mode = attr->mode & S_IFMT;	i_size_write(inode, attr->size);}