Lines Matching refs:inode

22  * >> inode->u.generic_ip points to the associated yaffs_Object.
29 * * Michael Fischer for finding the problem with inode inconsistency.
118 static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode,
120 static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry,
123 static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode);
124 static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry);
126 static int yaffs_link(struct dentry *old_dentry, struct inode *dir,
128 static int yaffs_unlink(struct inode *dir, struct dentry *dentry);
129 static int yaffs_symlink(struct inode *dir, struct dentry *dentry,
131 static int yaffs_mkdir(struct inode *dir, struct dentry *dentry, int mode);
134 static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
137 static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
140 static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
141 struct inode *new_dir, struct dentry *new_dentry);
159 static void yaffs_read_inode(struct inode *inode);
161 static void yaffs_put_inode(struct inode *inode);
162 static void yaffs_delete_inode(struct inode *);
163 static void yaffs_clear_inode(struct inode *);
311 struct inode *yaffs_get_inode(struct super_block *sb, int mode, int dev,
319 static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry,
322 static struct dentry *yaffs_lookup(struct inode *dir, struct dentry *dentry)
326 struct inode *inode = NULL; /* NCB 2.5/2.6 needs NULL here */
349 inode = yaffs_get_inode(dir->i_sb, obj->yst_mode, 0, obj);
351 if (inode) {
355 * d_add even if NULL inode */
358 d_add(dentry, inode);
370 /* added NCB for 2.5/6 compatability - forces add even if inode is
372 d_add(dentry, inode);
379 /* For now put inode is just for debugging
380 * Put inode is called when the inode **structure** is put.
382 static void yaffs_put_inode(struct inode *inode)
385 ("yaffs_put_inode: ino %d, count %d\n", (int)inode->i_ino,
386 atomic_read(&inode->i_count)));
390 /* clear is called to tell the fs to release any per-inode data it holds */
391 static void yaffs_clear_inode(struct inode *inode)
396 obj = yaffs_InodeToObject(inode);
399 ("yaffs_clear_inode: ino %d, count %d %s\n", (int)inode->i_ino,
400 atomic_read(&inode->i_count),
407 /* Clear the association between the inode and
411 inode->u.generic_ip = NULL;
415 * This should fix the inode inconsistency problem.
425 /* delete is called when the link count is zero and the inode
430 static void yaffs_delete_inode(struct inode *inode)
432 yaffs_Object *obj = yaffs_InodeToObject(inode);
436 ("yaffs_delete_inode: ino %d, count %d %s\n", (int)inode->i_ino,
437 atomic_read(&inode->i_count),
447 truncate_inode_pages (&inode->i_data, 0);
449 clear_inode(inode);
551 struct inode *inode;
560 inode = mapping->host;
561 if (!inode)
564 if (offset > inode->i_size) {
567 "yaffs_writepage at %08x, inode size = %08x!!!\n",
569 (unsigned)inode->i_size));
576 end_index = inode->i_size >> PAGE_CACHE_SHIFT;
582 nBytes = inode->i_size & (PAGE_CACHE_SIZE - 1);
589 obj = yaffs_InodeToObject(inode);
597 (int)obj->variant.fileVariant.fileSize, (int)inode->i_size));
605 (int)obj->variant.fileVariant.fileSize, (int)inode->i_size));
666 static void yaffs_FillInodeFromObject(struct inode *inode, yaffs_Object * obj)
668 if (inode && obj) {
703 inode->i_ino = obj->objectId;
704 inode->i_mode = obj->yst_mode;
705 inode->i_uid = obj->yst_uid;
706 inode->i_gid = obj->yst_gid;
707 inode->i_blksize = inode->i_sb->s_blocksize;
710 inode->i_rdev = old_decode_dev(obj->yst_rdev);
711 inode->i_atime.tv_sec = (time_t) (obj->yst_atime);
712 inode->i_atime.tv_nsec = 0;
713 inode->i_mtime.tv_sec = (time_t) obj->yst_mtime;
714 inode->i_mtime.tv_nsec = 0;
715 inode->i_ctime.tv_sec = (time_t) obj->yst_ctime;
716 inode->i_ctime.tv_nsec = 0;
718 inode->i_rdev = obj->yst_rdev;
719 inode->i_atime = obj->yst_atime;
720 inode->i_mtime = obj->yst_mtime;
721 inode->i_ctime = obj->yst_ctime;
723 inode->i_size = yaffs_GetObjectFileLength(obj);
724 inode->i_blocks = (inode->i_size + 511) >> 9;
726 inode->i_nlink = yaffs_GetObjectLinkCount(obj);
731 inode->i_mode, inode->i_uid, inode->i_gid,
732 (int)inode->i_size, atomic_read(&inode->i_count)));
737 init_special_inode(inode, obj->yst_mode,
740 init_special_inode(inode, obj->yst_mode,
745 inode->i_op = &yaffs_file_inode_operations;
746 inode->i_fop = &yaffs_file_operations;
747 inode->i_mapping->a_ops =
751 inode->i_op = &yaffs_dir_inode_operations;
752 inode->i_fop = &yaffs_dir_operations;
755 inode->i_op = &yaffs_symlink_inode_operations;
759 inode->u.generic_ip = obj;
760 obj->myInode = inode;
769 struct inode *yaffs_get_inode(struct super_block *sb, int mode, int dev,
772 struct inode *inode;
791 inode = iget(sb, obj->objectId);
794 /* iget also increments the inode's i_count */
797 return inode;
805 struct inode *inode;
814 inode = f->f_dentry->d_inode;
816 if (!S_ISBLK(inode->i_mode) && f->f_flags & O_APPEND) {
817 ipos = inode->i_size;
841 if (ipos > inode->i_size) {
842 inode->i_size = ipos;
843 inode->i_blocks = (ipos + 511) >> 9;
849 ipos, (int)(inode->i_blocks)));
861 struct inode *inode = f->f_dentry->d_inode;
880 (int)inode->i_ino));
881 if (filldir(dirent, ".", 1, offset, inode->i_ino, DT_DIR)
906 if (f->f_version != inode->i_version) {
909 f->f_version = inode->i_version;
920 (KERN_DEBUG "yaffs_readdir: %s inode %d\n", name,
947 * File creation. Allocate an inode, and we're done..
950 static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
953 static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
957 struct inode *inode;
1027 inode = yaffs_get_inode(dir->i_sb, mode, rdev, obj);
1028 d_instantiate(dentry, inode);
1031 obj->objectId, atomic_read(&inode->i_count)));
1042 static int yaffs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
1057 static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode,
1060 static int yaffs_create(struct inode *dir, struct dentry *dentry, int mode)
1067 static int yaffs_unlink(struct inode *dir, struct dentry *dentry)
1097 static int yaffs_link(struct dentry *old_dentry, struct inode *dir,
1100 struct inode *inode = old_dentry->d_inode;
1107 obj = yaffs_InodeToObject(inode);
1112 if (!S_ISDIR(inode->i_mode)) /* Don't link directories */
1140 static int yaffs_symlink(struct inode *dir, struct dentry *dentry,
1158 struct inode *inode;
1160 inode = yaffs_get_inode(dir->i_sb, obj->yst_mode, 0, obj);
1161 d_instantiate(dentry, inode);
1195 static int yaffs_rename(struct inode *old_dir, struct dentry *old_dentry,
1196 struct inode *new_dir, struct dentry *new_dentry)
1250 struct inode *inode = dentry->d_inode;
1256 yaffs_InodeToObject(inode)->objectId));
1258 if ((error = inode_change_ok(inode, attr)) == 0) {
1260 dev = yaffs_InodeToObject(inode)->myDev;
1262 if (yaffs_SetAttributes(yaffs_InodeToObject(inode), attr) ==
1270 error = inode_setattr(inode, attr);
1374 static void yaffs_read_inode(struct inode *inode)
1382 yaffs_Device *dev = yaffs_SuperToDevice(inode->i_sb);
1385 (KERN_DEBUG "yaffs_read_inode for %d\n", (int)inode->i_ino));
1389 obj = yaffs_FindObjectByNumber(dev, inode->i_ino);
1391 yaffs_FillInodeFromObject(inode, obj);
1456 struct inode *inode = NULL;
1717 /* Create root inode */
1719 inode = yaffs_get_inode(sb, S_IFDIR | 0755, 0,
1722 if (!inode)
1725 inode->i_op = &yaffs_dir_inode_operations;
1726 inode->i_fop = &yaffs_dir_operations;
1728 T(YAFFS_TRACE_OS, ("yaffs_read_super: got root inode\n"));
1730 root = d_alloc_root(inode);
1735 iput(inode);