inode->i_mode = S_IFCHR; 
inode->i_mode |= S_IFCHR; 
static int decode_sfu_inode(struct inode * inode, __u64 size,			    const unsigned char *path,			    struct cifs_sb_info *cifs_sb, int xid){	int rc;	int oplock = FALSE;	__u16 netfid;	struct cifsTconInfo *pTcon = cifs_sb->tcon;	char buf[8];	unsigned int bytes_read;	char * pbuf;	pbuf = buf;	if(size == 0) {		inode->i_mode |= S_IFIFO;		return 0;	} else if (size < 8) {		return -EINVAL;	 /* EOPNOTSUPP? */	}			rc = CIFSSMBOpen(xid, pTcon, path, FILE_OPEN, GENERIC_READ,			 CREATE_NOT_DIR, &netfid, &oplock, NULL,			 cifs_sb->local_nls,			 cifs_sb->mnt_cifs_flags &				CIFS_MOUNT_MAP_SPECIAL_CHR);	if (rc==0) {			/* Read header */		rc = CIFSSMBRead(xid, pTcon,			         netfid,				 8 /* length */, 0 /* offset */,				 &bytes_read, &pbuf);		if((rc == 0) && (bytes_read == 8)) {			cERROR(1,("intx %s" ,pbuf));			if(memcmp("IntxBLK", pbuf, 8) == 0) {				cFYI(1,("Block device"));				inode->i_mode = S_IFBLK;			} else if(memcmp("IntxCHR", pbuf, 8) == 0) {				cFYI(1,("Char device"));				inode->i_mode = S_IFCHR;			} else if(memcmp("IntxLNK", pbuf, 7) == 0) {				cFYI(1,("Symlink"));				inode->i_mode = S_IFLNK;			} else				inode->i_mode = S_IFREG; /* then it is a file */				rc = -EOPNOTSUPP; /* or some unknown SFU type */ 			 		}				CIFSSMBClose(xid, pTcon, netfid);		/* inode->i_rdev = MKDEV(le64_to_cpu(DevMajor),                            le64_to_cpu(DevMinor) & MINORMASK);*//*	inode->i_mode |= S_IFBLK; */	}	return rc;	}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3020a1f58c564e3060ec908c0c4f1b74a12e4280/inode.c/clean/fs/cifs/inode.c