} else { /* safest to just call it a file */ *pobject_type = DT_REG; tmp_inode->i_mode |= S_IFREG; cFYI(1,("unknown inode type %d",type)); 
static void unix_fill_in_inode(struct inode *tmp_inode,	FILE_UNIX_INFO *pfindData, int *pobject_type, int isNewInode){	loff_t local_size;	struct timespec local_mtime;	struct cifsInodeInfo *cifsInfo = CIFS_I(tmp_inode);	struct cifs_sb_info *cifs_sb = CIFS_SB(tmp_inode->i_sb);	__u32 type = le32_to_cpu(pfindData->Type);	__u64 num_of_bytes = le64_to_cpu(pfindData->NumOfBytes);	__u64 end_of_file = le64_to_cpu(pfindData->EndOfFile);	cifsInfo->time = jiffies;	atomic_inc(&cifsInfo->inUse);	/* save mtime and size */	local_mtime = tmp_inode->i_mtime;	local_size  = tmp_inode->i_size;	tmp_inode->i_atime =	    cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastAccessTime));	tmp_inode->i_mtime =	    cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastModificationTime));	tmp_inode->i_ctime =	    cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastStatusChange));	tmp_inode->i_mode = le64_to_cpu(pfindData->Permissions);	if (type == UNIX_FILE) {		*pobject_type = DT_REG;		tmp_inode->i_mode |= S_IFREG;	} else if (type == UNIX_SYMLINK) {		*pobject_type = DT_LNK;		tmp_inode->i_mode |= S_IFLNK;	} else if (type == UNIX_DIR) {		*pobject_type = DT_DIR;		tmp_inode->i_mode |= S_IFDIR;	} else if (type == UNIX_CHARDEV) {		*pobject_type = DT_CHR;		tmp_inode->i_mode |= S_IFCHR;		tmp_inode->i_rdev = MKDEV(le64_to_cpu(pfindData->DevMajor),				le64_to_cpu(pfindData->DevMinor) & MINORMASK);	} else if (type == UNIX_BLOCKDEV) {		*pobject_type = DT_BLK;		tmp_inode->i_mode |= S_IFBLK;		tmp_inode->i_rdev = MKDEV(le64_to_cpu(pfindData->DevMajor),				le64_to_cpu(pfindData->DevMinor) & MINORMASK);	} else if (type == UNIX_FIFO) {		*pobject_type = DT_FIFO;		tmp_inode->i_mode |= S_IFIFO;	} else if (type == UNIX_SOCKET) {		*pobject_type = DT_SOCK;		tmp_inode->i_mode |= S_IFSOCK;	}	tmp_inode->i_uid = le64_to_cpu(pfindData->Uid);	tmp_inode->i_gid = le64_to_cpu(pfindData->Gid);	tmp_inode->i_nlink = le64_to_cpu(pfindData->Nlinks);	if (is_size_safe_to_change(cifsInfo)) {		/* can not safely change the file size here if the 		client is writing to it due to potential races */		i_size_write(tmp_inode,end_of_file);	/* 512 bytes (2**9) is the fake blocksize that must be used */	/* for this calculation, not the real blocksize */		tmp_inode->i_blocks = (512 - 1 + num_of_bytes) >> 9;	}	if (S_ISREG(tmp_inode->i_mode)) {		cFYI(1, ("File inode"));		tmp_inode->i_op = &cifs_file_inode_ops;		if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO)			tmp_inode->i_fop = &cifs_file_direct_ops;		else			tmp_inode->i_fop = &cifs_file_ops;		if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)			tmp_inode->i_fop->lock = NULL;		tmp_inode->i_data.a_ops = &cifs_addr_ops;		if((cifs_sb->tcon) && (cifs_sb->tcon->ses) &&		   (cifs_sb->tcon->ses->server->maxBuf < 			4096 + MAX_CIFS_HDR_SIZE))			tmp_inode->i_data.a_ops->readpages = NULL;		if(isNewInode)			return; /* No sense invalidating pages for new inode since we					   have not started caching readahead file data yet */		if (timespec_equal(&tmp_inode->i_mtime, &local_mtime) &&			(local_size == tmp_inode->i_size)) {			cFYI(1, ("inode exists but unchanged"));		} else {			/* file may have changed on server */			cFYI(1, ("invalidate inode, readdir detected change"));			invalidate_remote_inode(tmp_inode);		}	} else if (S_ISDIR(tmp_inode->i_mode)) {		cFYI(1, ("Directory inode"));		tmp_inode->i_op = &cifs_dir_inode_ops;		tmp_inode->i_fop = &cifs_dir_ops;	} else if (S_ISLNK(tmp_inode->i_mode)) {		cFYI(1, ("Symbolic Link inode"));		tmp_inode->i_op = &cifs_symlink_inode_ops;/* tmp_inode->i_fop = *//* do not need to set to anything */	} else {		cFYI(1, ("Special inode")); 		init_special_inode(tmp_inode, tmp_inode->i_mode,				   tmp_inode->i_rdev);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3020a1f58c564e3060ec908c0c4f1b74a12e4280/readdir.c/buggy/fs/cifs/readdir.c