Lines Matching defs:inode

41 #include "inode.h"
58 struct inode *dir,
63 static int ocfs2_dir_indexed(struct inode *inode);
69 static int ocfs2_supports_dir_trailer(struct inode *dir)
87 static int ocfs2_new_dir_wants_trailer(struct inode *dir)
117 static int ocfs2_skip_dir_trailer(struct inode *dir,
133 static void ocfs2_init_dir_trailer(struct inode *inode,
138 trailer = ocfs2_trailer_from_bh(bh, inode->i_sb);
142 trailer->db_parent_dinode = cpu_to_le64(OCFS2_I(inode)->ip_blkno);
151 static int ocfs2_dx_dir_link_trailer(struct inode *dir, handle_t *handle,
190 static int ocfs2_dir_indexed(struct inode *inode)
192 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INDEXED_DIR_FL)
251 static void ocfs2_dx_dir_name_hash(struct inode *dir, const char *name, int len,
294 * bh passed here can be an inode block or a dir data block, depending
295 * on the inode inline data flag.
297 static int ocfs2_check_dir_entry(struct inode * dir,
317 "offset=%lu, inode=%llu, rec_len=%d, name_len=%d\n",
319 offset, (unsigned long long)le64_to_cpu(de->inode), rlen,
331 if (!de->inode)
340 struct inode *dir,
391 struct inode *dir,
455 * because that function doesn't have the inode to test.
457 static int ocfs2_check_dir_trailer(struct inode *dir, struct buffer_head *bh)
496 static int ocfs2_read_dir_block(struct inode *inode, u64 v_block,
502 rc = ocfs2_read_virt_blocks(inode, v_block, 1, &tmp, flags,
510 ocfs2_supports_dir_trailer(inode)) {
511 rc = ocfs2_check_dir_trailer(inode, tmp);
530 * inode. This function does no virtual->physical block translation -
533 static int ocfs2_read_dir_block_direct(struct inode *dir, u64 phys,
590 static int ocfs2_read_dx_root(struct inode *dir, struct ocfs2_dinode *di,
631 static int ocfs2_read_dx_leaf(struct inode *dir, u64 blkno,
651 static int ocfs2_read_dx_leaves(struct inode *dir, u64 start, int num,
665 struct inode *dir,
763 static int ocfs2_dx_dir_lookup_rec(struct inode *inode,
776 ret = ocfs2_find_leaf(INODE_CACHE(inode), el, major_hash,
787 ret = ocfs2_error(inode->i_sb,
789 inode->i_ino,
806 ret = ocfs2_error(inode->i_sb,
808 inode->i_ino,
842 static int ocfs2_dx_dir_lookup(struct inode *inode,
854 ret = ocfs2_dx_dir_lookup_rec(inode, el, name_hash, &cpos, &blkno,
864 blkno += ocfs2_clusters_to_blocks(inode->i_sb, clen - 1);
867 blkno += ocfs2_clusters_to_blocks(inode->i_sb,
877 blkno += ocfs2_dx_dir_hash_idx(OCFS2_SB(inode->i_sb), hinfo);
890 struct inode *dir,
1004 struct inode *dir,
1054 * data block, in the inline-data case it actually points to an inode,
1058 struct inode *dir, struct ocfs2_dir_lookup_result *lookup)
1085 * Update inode number and type of a previously found directory entry.
1087 int ocfs2_update_entry(struct inode *dir, handle_t *handle,
1089 struct inode *new_entry_inode)
1112 de->inode = cpu_to_le64(OCFS2_I(new_entry_inode)->ip_blkno);
1125 static int __ocfs2_delete_entry(handle_t *handle, struct inode *dir,
1157 de->inode = 0;
1174 if (le64_to_cpu(de->inode) == 0)
1229 static int ocfs2_delete_entry_dx(handle_t *handle, struct inode *dir,
1346 struct inode *dir,
1373 struct inode *dir,
1386 struct inode *dir,
1410 if (le64_to_cpu(de->inode) == 0 &&
1454 static int __ocfs2_dx_dir_leaf_insert(struct inode *dir, handle_t *handle,
1477 static void ocfs2_dx_inline_root_insert(struct inode *dir, handle_t *handle,
1485 static int ocfs2_dx_dir_insert(struct inode *dir, handle_t *handle,
1520 static void ocfs2_remove_block_from_free_list(struct inode *dir,
1551 static void ocfs2_recalc_free_list(struct inode *dir, handle_t *handle,
1580 struct inode *dir,
1582 struct inode *inode, u64 blkno,
1692 if (le64_to_cpu(de->inode)) {
1703 de->inode = cpu_to_le64(blkno);
1704 ocfs2_set_de_type(de, inode->i_mode);
1706 de->inode = 0;
1733 static int ocfs2_dir_foreach_blk_id(struct inode *inode,
1744 ret = ocfs2_read_inode_block(inode, &di_bh);
1746 mlog(ML_ERROR, "Unable to read inode block for dir %llu\n",
1747 (unsigned long long)OCFS2_I(inode)->ip_blkno);
1754 while (ctx->pos < i_size_read(inode)) {
1759 if (!inode_eq_iversion(inode, *f_version)) {
1760 for (i = 0; i < i_size_read(inode) && i < offset; ) {
1775 *f_version = inode_query_iversion(inode);
1779 if (!ocfs2_check_dir_entry(inode, de, di_bh, ctx->pos)) {
1781 ctx->pos = i_size_read(inode);
1785 if (le64_to_cpu(de->inode)) {
1787 le64_to_cpu(de->inode),
1802 static int ocfs2_dir_foreach_blk_el(struct inode *inode,
1811 struct super_block * sb = inode->i_sb;
1819 while (ctx->pos < i_size_read(inode)) {
1821 if (ocfs2_read_dir_block(inode, blk, &bh, 0)) {
1837 if (!ocfs2_read_dir_block(inode, ++blk, &tmp,
1849 if (!inode_eq_iversion(inode, *f_version)) {
1866 *f_version = inode_query_iversion(inode);
1869 while (ctx->pos < i_size_read(inode)
1872 if (!ocfs2_check_dir_entry(inode, de, bh, offset)) {
1878 if (le64_to_cpu(de->inode)) {
1881 le64_to_cpu(de->inode),
1900 static int ocfs2_dir_foreach_blk(struct inode *inode, u64 *f_version,
1904 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)
1905 return ocfs2_dir_foreach_blk_id(inode, f_version, ctx);
1906 return ocfs2_dir_foreach_blk_el(inode, f_version, ctx, persist);
1913 int ocfs2_dir_foreach(struct inode *inode, struct dir_context *ctx)
1915 u64 version = inode_query_iversion(inode);
1916 ocfs2_dir_foreach_blk(inode, &version, ctx, true);
1927 struct inode *inode = file_inode(file);
1930 trace_ocfs2_readdir((unsigned long long)OCFS2_I(inode)->ip_blkno);
1932 error = ocfs2_inode_lock_atime(inode, file->f_path.mnt, &lock_level, 1);
1937 ocfs2_inode_unlock(inode, 1);
1939 error = ocfs2_inode_lock(inode, NULL, 0);
1948 error = ocfs2_dir_foreach_blk(inode, &file->f_version, ctx, false);
1950 ocfs2_inode_unlock(inode, lock_level);
1965 struct inode *inode,
1971 (unsigned long long)OCFS2_I(inode)->ip_blkno);
1973 status = ocfs2_find_entry(name, namelen, inode, lookup);
1977 *blkno = le64_to_cpu(lookup->dl_entry->inode);
1989 int ocfs2_lookup_ino_from_name(struct inode *dir, const char *name,
2008 int ocfs2_check_dir_for_entry(struct inode *dir,
2072 static int ocfs2_empty_dir_dx(struct inode *inode,
2083 ret = ocfs2_read_inode_block(inode, &di_bh);
2090 ret = ocfs2_read_dx_root(inode, di, &dx_root_bh);
2113 int ocfs2_empty_dir(struct inode *inode)
2120 if (ocfs2_dir_indexed(inode)) {
2121 ret = ocfs2_empty_dir_dx(inode, &priv);
2130 ret = ocfs2_dir_foreach(inode, &priv.ctx);
2136 (unsigned long long)OCFS2_I(inode)->ip_blkno);
2151 static struct ocfs2_dir_entry *ocfs2_fill_initial_dirents(struct inode *inode,
2152 struct inode *parent,
2158 de->inode = cpu_to_le64(OCFS2_I(inode)->ip_blkno);
2166 de->inode = cpu_to_le64(OCFS2_I(parent)->ip_blkno);
2181 struct inode *parent,
2182 struct inode *inode,
2190 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh,
2197 ocfs2_fill_initial_dirents(inode, parent, data->id_data, size);
2200 i_size_write(inode, size);
2201 set_nlink(inode, 2);
2202 inode->i_blocks = ocfs2_inode_sector_count(inode);
2204 ret = ocfs2_mark_inode_dirty(handle, inode, di_bh);
2214 struct inode *parent,
2215 struct inode *inode,
2225 if (ocfs2_new_dir_wants_trailer(inode))
2228 status = ocfs2_do_extend_dir(osb->sb, handle, inode, fe_bh,
2235 ocfs2_set_new_buffer_uptodate(INODE_CACHE(inode), new_bh);
2237 status = ocfs2_journal_access_db(handle, INODE_CACHE(inode), new_bh,
2245 de = ocfs2_fill_initial_dirents(inode, parent, new_bh->b_data, size);
2246 if (ocfs2_new_dir_wants_trailer(inode)) {
2257 ocfs2_init_dir_trailer(inode, new_bh, size);
2262 i_size_write(inode, inode->i_sb->s_blocksize);
2263 set_nlink(inode, 2);
2264 inode->i_blocks = ocfs2_inode_sector_count(inode);
2265 status = ocfs2_mark_inode_dirty(handle, inode, fe_bh);
2283 handle_t *handle, struct inode *dir,
2375 handle_t *handle, struct inode *dir,
2427 static int __ocfs2_dx_dir_new_cluster(struct inode *dir,
2467 static int ocfs2_dx_dir_new_cluster(struct inode *dir,
2509 struct inode *parent,
2510 struct inode *inode,
2533 ret = ocfs2_fill_new_dir_el(osb, handle, parent, inode, di_bh,
2540 ret = ocfs2_dx_dir_attach_index(osb, handle, inode, di_bh, leaf_bh,
2550 ocfs2_dx_dir_name_hash(inode, ".", 1, &hinfo);
2553 ocfs2_dx_dir_name_hash(inode, "..", 2, &hinfo);
2564 struct inode *parent,
2565 struct inode *inode,
2573 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)
2574 return ocfs2_fill_new_dir_id(osb, handle, parent, inode, fe_bh);
2577 return ocfs2_fill_new_dir_dx(osb, handle, parent, inode, fe_bh,
2580 return ocfs2_fill_new_dir_el(osb, handle, parent, inode, fe_bh,
2584 static int ocfs2_dx_dir_index_block(struct inode *dir,
2605 if (!namelen || !de->inode)
2633 static void ocfs2_dx_dir_index_root_block(struct inode *dir,
2651 if (!de->name_len || !de->inode)
2676 static int ocfs2_new_dx_should_be_inline(struct inode *dir,
2690 if (de->name_len && de->inode)
2704 * in that case is taken from the inline data portion of the inode block.
2715 struct inode *dir)
2764 static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,
2944 * inode should contain the same exact dirents as before and
3083 struct inode *dir,
3142 * block, so we may have to grow the inode by two blocks in that case.
3147 struct inode *dir,
3287 de->inode = 0;
3335 static int ocfs2_find_dir_space_id(struct inode *dir, struct buffer_head *di_bh,
3406 static int ocfs2_find_dir_space_el(struct inode *dir, const char *name,
3627 static void ocfs2_dx_dir_transfer_leaf(struct inode *dir, u32 split_hash,
3684 static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
3879 static int ocfs2_find_dir_space_dx(struct ocfs2_super *osb, struct inode *dir,
3952 static int ocfs2_search_dx_free_list(struct inode *dir,
4000 static int ocfs2_expand_inline_dx_root(struct inode *dir,
4131 static int ocfs2_prepare_dx_dir_for_insert(struct inode *dir,
4234 struct inode *dir,
4310 static int ocfs2_dx_dir_remove_index(struct inode *dir,
4318 struct inode *dx_alloc_inode = NULL;
4391 int ocfs2_dx_dir_truncate(struct inode *dir, struct buffer_head *di_bh)