Lines Matching refs:inode

41 					struct inode *inode,  in ext3_append()  argument
46 *block = inode->i_size >> inode->i_sb->s_blocksize_bits; in ext3_append()
48 if ((bh = ext3_dir_bread(handle, inode, *block, 1, err))) { in ext3_append()
49 inode->i_size += inode->i_sb->s_blocksize; in ext3_append()
50 EXT3_I(inode)->i_disksize = inode->i_size; in ext3_append()
72 __le32 inode; member
143 static unsigned dx_root_limit (struct inode *dir, unsigned infosize);
144 static unsigned dx_node_limit (struct inode *dir);
146 struct inode *dir,
158 static int ext3_htree_next_block(struct inode *dir, __u32 hash,
162 static struct buffer_head * ext3_dx_find_entry(struct inode *dir,
166 struct inode *inode);
223 static inline unsigned dx_root_limit (struct inode *dir, unsigned infosize) in dx_root_limit()
230 static inline unsigned dx_node_limit (struct inode *dir) in dx_node_limit()
268 if (de->inode) in dx_show_leaf()
288 struct stats dx_show_entries(struct dx_hash_info *hinfo, struct inode *dir, in dx_show_entries()
329 dx_probe(struct qstr *entry, struct inode *dir, in dx_probe()
494 static int ext3_htree_next_block(struct inode *dir, __u32 hash, in ext3_htree_next_block()
558 struct inode *dir, int block, in htree_dirblock_to_tree()
587 if (de->inode == 0) in htree_dirblock_to_tree()
615 struct inode *dir; in ext3_htree_fill_tree()
709 if (de->name_len && de->inode) { in dx_make_map()
767 static void ext3_update_dx_flag(struct inode *inode) in ext3_update_dx_flag() argument
769 if (!EXT3_HAS_COMPAT_FEATURE(inode->i_sb, in ext3_update_dx_flag()
771 EXT3_I(inode)->i_flags &= ~EXT3_INDEX_FL; in ext3_update_dx_flag()
785 if (!de->inode) in ext3_match()
794 struct inode *dir, in search_dirblock()
842 static struct buffer_head *ext3_find_entry(struct inode *dir, in ext3_find_entry()
964 static struct buffer_head * ext3_dx_find_entry(struct inode *dir, in ext3_dx_find_entry()
1014 static struct dentry *ext3_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags) in ext3_lookup()
1016 struct inode * inode; in ext3_lookup() local
1024 inode = NULL; in ext3_lookup()
1026 unsigned long ino = le32_to_cpu(de->inode); in ext3_lookup()
1033 inode = ext3_iget(dir->i_sb, ino); in ext3_lookup()
1034 if (inode == ERR_PTR(-ESTALE)) { in ext3_lookup()
1041 return d_splice_alias(inode, dentry); in ext3_lookup()
1055 ino = le32_to_cpu(de->inode); in ext3_get_parent()
1100 de->inode = 0; in dx_move_dirents()
1120 if (de->inode && de->name_len) { in dx_pack_dirents()
1138 static struct ext3_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, in do_split()
1243 struct inode *inode, struct ext3_dir_entry_2 *de, in add_dirent_to_buf() argument
1246 struct inode *dir = d_inode(dentry->d_parent); in add_dirent_to_buf()
1270 if ((de->inode? rlen - nlen: rlen) >= reclen) in add_dirent_to_buf()
1289 if (de->inode) { in add_dirent_to_buf()
1296 if (inode) { in add_dirent_to_buf()
1297 de->inode = cpu_to_le32(inode->i_ino); in add_dirent_to_buf()
1298 ext3_set_de_type(dir->i_sb, de, inode->i_mode); in add_dirent_to_buf()
1300 de->inode = 0; in add_dirent_to_buf()
1331 struct inode *inode, struct buffer_head *bh) in make_indexed_dir() argument
1333 struct inode *dir = d_inode(dentry->d_parent); in make_indexed_dir()
1422 return add_dirent_to_buf(handle, dentry, inode, de, bh); in make_indexed_dir()
1436 struct inode *inode) in ext3_add_entry() argument
1438 struct inode *dir = d_inode(dentry->d_parent); in ext3_add_entry()
1452 retval = ext3_dx_add_entry(handle, dentry, inode); in ext3_add_entry()
1464 retval = add_dirent_to_buf(handle, dentry, inode, NULL, bh); in ext3_add_entry()
1470 return make_indexed_dir(handle, dentry, inode, bh); in ext3_add_entry()
1477 de->inode = 0; in ext3_add_entry()
1479 return add_dirent_to_buf(handle, dentry, inode, de, bh); in ext3_add_entry()
1486 struct inode *inode) in ext3_dx_add_entry() argument
1492 struct inode *dir = d_inode(dentry->d_parent); in ext3_dx_add_entry()
1511 err = add_dirent_to_buf(handle, dentry, inode, NULL, bh); in ext3_dx_add_entry()
1606 err = add_dirent_to_buf(handle, dentry, inode, de, bh); in ext3_dx_add_entry()
1624 struct inode * dir, in ext3_delete_entry()
1650 de->inode = 0; in ext3_delete_entry()
1669 struct dentry *dentry, struct inode *inode) in ext3_add_nondir() argument
1671 int err = ext3_add_entry(handle, dentry, inode); in ext3_add_nondir()
1673 ext3_mark_inode_dirty(handle, inode); in ext3_add_nondir()
1674 unlock_new_inode(inode); in ext3_add_nondir()
1675 d_instantiate(dentry, inode); in ext3_add_nondir()
1678 drop_nlink(inode); in ext3_add_nondir()
1679 unlock_new_inode(inode); in ext3_add_nondir()
1680 iput(inode); in ext3_add_nondir()
1692 static int ext3_create (struct inode * dir, struct dentry * dentry, umode_t mode, in ext3_create()
1696 struct inode * inode; in ext3_create() local
1711 inode = ext3_new_inode (handle, dir, &dentry->d_name, mode); in ext3_create()
1712 err = PTR_ERR(inode); in ext3_create()
1713 if (!IS_ERR(inode)) { in ext3_create()
1714 inode->i_op = &ext3_file_inode_operations; in ext3_create()
1715 inode->i_fop = &ext3_file_operations; in ext3_create()
1716 ext3_set_aops(inode); in ext3_create()
1717 err = ext3_add_nondir(handle, dentry, inode); in ext3_create()
1725 static int ext3_mknod (struct inode * dir, struct dentry *dentry, in ext3_mknod()
1729 struct inode *inode; in ext3_mknod() local
1747 inode = ext3_new_inode (handle, dir, &dentry->d_name, mode); in ext3_mknod()
1748 err = PTR_ERR(inode); in ext3_mknod()
1749 if (!IS_ERR(inode)) { in ext3_mknod()
1750 init_special_inode(inode, inode->i_mode, rdev); in ext3_mknod()
1752 inode->i_op = &ext3_special_inode_operations; in ext3_mknod()
1754 err = ext3_add_nondir(handle, dentry, inode); in ext3_mknod()
1762 static int ext3_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in ext3_tmpfile()
1765 struct inode *inode; in ext3_tmpfile() local
1777 inode = ext3_new_inode (handle, dir, NULL, mode); in ext3_tmpfile()
1778 err = PTR_ERR(inode); in ext3_tmpfile()
1779 if (!IS_ERR(inode)) { in ext3_tmpfile()
1780 inode->i_op = &ext3_file_inode_operations; in ext3_tmpfile()
1781 inode->i_fop = &ext3_file_operations; in ext3_tmpfile()
1782 ext3_set_aops(inode); in ext3_tmpfile()
1783 d_tmpfile(dentry, inode); in ext3_tmpfile()
1784 err = ext3_orphan_add(handle, inode); in ext3_tmpfile()
1787 mark_inode_dirty(inode); in ext3_tmpfile()
1788 unlock_new_inode(inode); in ext3_tmpfile()
1796 unlock_new_inode(inode); in ext3_tmpfile()
1800 static int ext3_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode) in ext3_mkdir()
1803 struct inode * inode; in ext3_mkdir() local
1823 inode = ext3_new_inode (handle, dir, &dentry->d_name, S_IFDIR | mode); in ext3_mkdir()
1824 err = PTR_ERR(inode); in ext3_mkdir()
1825 if (IS_ERR(inode)) in ext3_mkdir()
1828 inode->i_op = &ext3_dir_inode_operations; in ext3_mkdir()
1829 inode->i_fop = &ext3_dir_operations; in ext3_mkdir()
1830 inode->i_size = EXT3_I(inode)->i_disksize = inode->i_sb->s_blocksize; in ext3_mkdir()
1831 if (!(dir_block = ext3_dir_bread(handle, inode, 0, 1, &err))) in ext3_mkdir()
1840 de->inode = cpu_to_le32(inode->i_ino); in ext3_mkdir()
1846 de->inode = cpu_to_le32(dir->i_ino); in ext3_mkdir()
1847 de->rec_len = ext3_rec_len_to_disk(inode->i_sb->s_blocksize - in ext3_mkdir()
1852 set_nlink(inode, 2); in ext3_mkdir()
1858 err = ext3_mark_inode_dirty(handle, inode); in ext3_mkdir()
1860 err = ext3_add_entry (handle, dentry, inode); in ext3_mkdir()
1864 clear_nlink(inode); in ext3_mkdir()
1865 unlock_new_inode(inode); in ext3_mkdir()
1866 ext3_mark_inode_dirty(handle, inode); in ext3_mkdir()
1867 iput (inode); in ext3_mkdir()
1876 unlock_new_inode(inode); in ext3_mkdir()
1877 d_instantiate(dentry, inode); in ext3_mkdir()
1889 static int empty_dir (struct inode * inode) in empty_dir() argument
1897 sb = inode->i_sb; in empty_dir()
1898 if (inode->i_size < EXT3_DIR_REC_LEN(1) + EXT3_DIR_REC_LEN(2) || in empty_dir()
1899 !(bh = ext3_dir_bread(NULL, inode, 0, 0, &err))) { in empty_dir()
1901 ext3_error(inode->i_sb, __func__, in empty_dir()
1903 err, inode->i_ino); in empty_dir()
1905 ext3_warning(inode->i_sb, __func__, in empty_dir()
1907 inode->i_ino); in empty_dir()
1912 if (le32_to_cpu(de->inode) != inode->i_ino || in empty_dir()
1913 !le32_to_cpu(de1->inode) || in empty_dir()
1916 ext3_warning (inode->i_sb, "empty_dir", in empty_dir()
1918 inode->i_ino); in empty_dir()
1925 while (offset < inode->i_size ) { in empty_dir()
1930 if (!(bh = ext3_dir_bread (NULL, inode, in empty_dir()
1936 err, inode->i_ino, offset); in empty_dir()
1942 if (!ext3_check_dir_entry("empty_dir", inode, de, bh, offset)) { in empty_dir()
1948 if (le32_to_cpu(de->inode)) { in empty_dir()
1967 int ext3_orphan_add(handle_t *handle, struct inode *inode) in ext3_orphan_add() argument
1969 struct super_block *sb = inode->i_sb; in ext3_orphan_add()
1974 if (!list_empty(&EXT3_I(inode)->i_orphan)) in ext3_orphan_add()
1990 J_ASSERT ((S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || in ext3_orphan_add()
1991 S_ISLNK(inode->i_mode)) || inode->i_nlink == 0); in ext3_orphan_add()
1998 err = ext3_reserve_inode_write(handle, inode, &iloc); in ext3_orphan_add()
2003 NEXT_ORPHAN(inode) = le32_to_cpu(EXT3_SB(sb)->s_es->s_last_orphan); in ext3_orphan_add()
2004 EXT3_SB(sb)->s_es->s_last_orphan = cpu_to_le32(inode->i_ino); in ext3_orphan_add()
2006 rc = ext3_mark_iloc_dirty(handle, inode, &iloc); in ext3_orphan_add()
2019 list_add(&EXT3_I(inode)->i_orphan, &EXT3_SB(sb)->s_orphan); in ext3_orphan_add()
2021 jbd_debug(4, "superblock will point to %lu\n", inode->i_ino); in ext3_orphan_add()
2023 inode->i_ino, NEXT_ORPHAN(inode)); in ext3_orphan_add()
2026 ext3_std_error(inode->i_sb, err); in ext3_orphan_add()
2034 int ext3_orphan_del(handle_t *handle, struct inode *inode) in ext3_orphan_del() argument
2037 struct ext3_inode_info *ei = EXT3_I(inode); in ext3_orphan_del()
2043 mutex_lock(&EXT3_SB(inode->i_sb)->s_orphan_lock); in ext3_orphan_del()
2047 ino_next = NEXT_ORPHAN(inode); in ext3_orphan_del()
2049 sbi = EXT3_SB(inode->i_sb); in ext3_orphan_del()
2051 jbd_debug(4, "remove inode %lu from orphan list\n", inode->i_ino); in ext3_orphan_del()
2062 err = ext3_reserve_inode_write(handle, inode, &iloc); in ext3_orphan_del()
2076 struct inode *i_prev = in ext3_orphan_del()
2089 NEXT_ORPHAN(inode) = 0; in ext3_orphan_del()
2090 err = ext3_mark_iloc_dirty(handle, inode, &iloc); in ext3_orphan_del()
2093 ext3_std_error(inode->i_sb, err); in ext3_orphan_del()
2095 mutex_unlock(&EXT3_SB(inode->i_sb)->s_orphan_lock); in ext3_orphan_del()
2103 static int ext3_rmdir (struct inode * dir, struct dentry *dentry) in ext3_rmdir()
2106 struct inode * inode; in ext3_rmdir() local
2128 inode = d_inode(dentry); in ext3_rmdir()
2131 if (le32_to_cpu(de->inode) != inode->i_ino) in ext3_rmdir()
2135 if (!empty_dir (inode)) in ext3_rmdir()
2141 if (inode->i_nlink != 2) in ext3_rmdir()
2142 ext3_warning (inode->i_sb, "ext3_rmdir", in ext3_rmdir()
2144 inode->i_nlink); in ext3_rmdir()
2145 inode->i_version++; in ext3_rmdir()
2146 clear_nlink(inode); in ext3_rmdir()
2150 inode->i_size = 0; in ext3_rmdir()
2151 ext3_orphan_add(handle, inode); in ext3_rmdir()
2152 inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC; in ext3_rmdir()
2153 ext3_mark_inode_dirty(handle, inode); in ext3_rmdir()
2164 static int ext3_unlink(struct inode * dir, struct dentry *dentry) in ext3_unlink()
2167 struct inode * inode; in ext3_unlink() local
2190 inode = d_inode(dentry); in ext3_unlink()
2193 if (le32_to_cpu(de->inode) != inode->i_ino) in ext3_unlink()
2196 if (!inode->i_nlink) { in ext3_unlink()
2197 ext3_warning (inode->i_sb, "ext3_unlink", in ext3_unlink()
2199 inode->i_ino, inode->i_nlink); in ext3_unlink()
2200 set_nlink(inode, 1); in ext3_unlink()
2208 drop_nlink(inode); in ext3_unlink()
2209 if (!inode->i_nlink) in ext3_unlink()
2210 ext3_orphan_add(handle, inode); in ext3_unlink()
2211 inode->i_ctime = dir->i_ctime; in ext3_unlink()
2212 ext3_mark_inode_dirty(handle, inode); in ext3_unlink()
2222 static int ext3_symlink (struct inode * dir, in ext3_symlink()
2226 struct inode * inode; in ext3_symlink() local
2264 inode = ext3_new_inode (handle, dir, &dentry->d_name, S_IFLNK|S_IRWXUGO); in ext3_symlink()
2265 err = PTR_ERR(inode); in ext3_symlink()
2266 if (IS_ERR(inode)) in ext3_symlink()
2270 inode->i_op = &ext3_symlink_inode_operations; in ext3_symlink()
2271 ext3_set_aops(inode); in ext3_symlink()
2283 drop_nlink(inode); in ext3_symlink()
2284 err = ext3_orphan_add(handle, inode); in ext3_symlink()
2288 err = __page_symlink(inode, symname, l, 1); in ext3_symlink()
2302 set_nlink(inode, 1); in ext3_symlink()
2303 err = ext3_orphan_del(handle, inode); in ext3_symlink()
2306 drop_nlink(inode); in ext3_symlink()
2310 inode->i_op = &ext3_fast_symlink_inode_operations; in ext3_symlink()
2311 memcpy((char*)&EXT3_I(inode)->i_data,symname,l); in ext3_symlink()
2312 inode->i_size = l-1; in ext3_symlink()
2314 EXT3_I(inode)->i_disksize = inode->i_size; in ext3_symlink()
2315 err = ext3_add_nondir(handle, dentry, inode); in ext3_symlink()
2322 unlock_new_inode(inode); in ext3_symlink()
2323 iput(inode); in ext3_symlink()
2328 struct inode * dir, struct dentry *dentry) in ext3_link()
2331 struct inode *inode = d_inode(old_dentry); in ext3_link() local
2334 if (inode->i_nlink >= EXT3_LINK_MAX) in ext3_link()
2348 inode->i_ctime = CURRENT_TIME_SEC; in ext3_link()
2349 inc_nlink(inode); in ext3_link()
2350 ihold(inode); in ext3_link()
2352 err = ext3_add_entry(handle, dentry, inode); in ext3_link()
2354 ext3_mark_inode_dirty(handle, inode); in ext3_link()
2358 if (inode->i_nlink == 1) in ext3_link()
2359 ext3_orphan_del(handle, inode); in ext3_link()
2360 d_instantiate(dentry, inode); in ext3_link()
2362 drop_nlink(inode); in ext3_link()
2363 iput(inode); in ext3_link()
2372 (ext3_next_entry((struct ext3_dir_entry_2 *)(buffer))->inode)
2378 static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, in ext3_rename()
2379 struct inode * new_dir,struct dentry *new_dentry) in ext3_rename()
2382 struct inode * old_inode, * new_inode; in ext3_rename()
2414 if (!old_bh || le32_to_cpu(old_de->inode) != old_inode->i_ino) in ext3_rename()
2451 new_de->inode = cpu_to_le32(old_inode->i_ino); in ext3_rename()
2476 if (le32_to_cpu(old_de->inode) != old_inode->i_ino || in ext3_rename()