• Home
  • Raw
  • Download

Lines Matching refs:dir

75 			    struct inode *dir,
81 struct inode *dir,
91 static int ocfs2_dir_has_trailer(struct inode *dir) in ocfs2_dir_has_trailer() argument
93 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_dir_has_trailer()
96 return ocfs2_meta_ecc(OCFS2_SB(dir->i_sb)); in ocfs2_dir_has_trailer()
126 static int ocfs2_skip_dir_trailer(struct inode *dir, in ocfs2_skip_dir_trailer() argument
133 if (!ocfs2_dir_has_trailer(dir)) in ocfs2_skip_dir_trailer()
159 static int ocfs2_check_dir_entry(struct inode * dir, in ocfs2_check_dir_entry() argument
173 else if (((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize) in ocfs2_check_dir_entry()
179 (unsigned long long)OCFS2_I(dir)->ip_blkno, error_msg, in ocfs2_check_dir_entry()
200 struct inode *dir, in ocfs2_search_dirblock() argument
226 if (!ocfs2_check_dir_entry(dir, de, bh, offset)) { in ocfs2_search_dirblock()
253 struct inode *dir, in ocfs2_find_entry_id() argument
261 ret = ocfs2_read_inode_block(dir, &di_bh); in ocfs2_find_entry_id()
270 found = ocfs2_search_dirblock(di_bh, dir, name, namelen, 0, in ocfs2_find_entry_id()
271 data->id_data, i_size_read(dir), res_dir); in ocfs2_find_entry_id()
383 struct inode *dir, in ocfs2_find_entry_el() argument
399 sb = dir->i_sb; in ocfs2_find_entry_el()
401 nblocks = i_size_read(dir) >> sb->s_blocksize_bits; in ocfs2_find_entry_el()
402 start = OCFS2_I(dir)->ip_dir_start_lookup; in ocfs2_find_entry_el()
429 err = ocfs2_read_dir_block(dir, b++, &bh, in ocfs2_find_entry_el()
436 if (ocfs2_read_dir_block(dir, block, &bh, 0)) { in ocfs2_find_entry_el()
439 ocfs2_error(dir->i_sb, "reading directory %llu, " in ocfs2_find_entry_el()
441 (unsigned long long)OCFS2_I(dir)->ip_blkno, in ocfs2_find_entry_el()
445 i = ocfs2_search_dirblock(bh, dir, name, namelen, in ocfs2_find_entry_el()
450 OCFS2_I(dir)->ip_dir_start_lookup = block; in ocfs2_find_entry_el()
468 nblocks = i_size_read(dir) >> sb->s_blocksize_bits; in ocfs2_find_entry_el()
496 struct inode *dir, in ocfs2_find_entry() argument
501 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_find_entry()
502 return ocfs2_find_entry_id(name, namelen, dir, res_dir); in ocfs2_find_entry()
504 return ocfs2_find_entry_el(name, namelen, dir, res_dir); in ocfs2_find_entry()
510 int ocfs2_update_entry(struct inode *dir, handle_t *handle, in ocfs2_update_entry() argument
523 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_update_entry()
526 ret = access(handle, dir, de_bh, OCFS2_JOURNAL_ACCESS_WRITE); in ocfs2_update_entry()
541 static int __ocfs2_delete_entry(handle_t *handle, struct inode *dir, in __ocfs2_delete_entry() argument
550 mlog_entry("(0x%p, 0x%p, 0x%p, 0x%p)\n", handle, dir, de_del, bh); in __ocfs2_delete_entry()
552 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in __ocfs2_delete_entry()
559 if (!ocfs2_check_dir_entry(dir, de, bh, i)) { in __ocfs2_delete_entry()
565 status = access(handle, dir, bh, in __ocfs2_delete_entry()
577 dir->i_version++; in __ocfs2_delete_entry()
591 struct inode *dir, in ocfs2_delete_entry_id() argument
600 ret = ocfs2_read_inode_block(dir, &di_bh); in ocfs2_delete_entry_id()
609 ret = __ocfs2_delete_entry(handle, dir, de_del, bh, data->id_data, in ocfs2_delete_entry_id()
610 i_size_read(dir)); in ocfs2_delete_entry_id()
618 struct inode *dir, in ocfs2_delete_entry_el() argument
622 return __ocfs2_delete_entry(handle, dir, de_del, bh, bh->b_data, in ocfs2_delete_entry_el()
631 struct inode *dir, in ocfs2_delete_entry() argument
635 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_delete_entry()
636 return ocfs2_delete_entry_id(handle, dir, de_del, bh); in ocfs2_delete_entry()
638 return ocfs2_delete_entry_el(handle, dir, de_del, bh); in ocfs2_delete_entry()
673 struct inode *dir, in __ocfs2_add_entry() argument
683 struct super_block *sb = dir->i_sb; in __ocfs2_add_entry()
693 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in __ocfs2_add_entry()
695 size = i_size_read(dir); in __ocfs2_add_entry()
709 if (!ocfs2_check_dir_entry(dir, de, insert_bh, offset)) { in __ocfs2_add_entry()
720 mlog_bug_on_msg(ocfs2_skip_dir_trailer(dir, de, offset, size), in __ocfs2_add_entry()
726 offset, ocfs2_dir_trailer_blk_off(dir->i_sb)); in __ocfs2_add_entry()
729 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in __ocfs2_add_entry()
730 retval = ocfs2_mark_inode_dirty(handle, dir, parent_fe_bh); in __ocfs2_add_entry()
737 status = ocfs2_journal_access_di(handle, dir, in __ocfs2_add_entry()
741 status = ocfs2_journal_access_db(handle, dir, in __ocfs2_add_entry()
764 dir->i_version++; in __ocfs2_add_entry()
1106 int ocfs2_lookup_ino_from_name(struct inode *dir, const char *name, in ocfs2_lookup_ino_from_name() argument
1113 ret = ocfs2_find_files_on_disk(name, namelen, blkno, dir, &bh, &dirent); in ocfs2_lookup_ino_from_name()
1126 int ocfs2_check_dir_for_entry(struct inode *dir, in ocfs2_check_dir_for_entry() argument
1135 (unsigned long long)OCFS2_I(dir)->ip_blkno, namelen, name); in ocfs2_check_dir_for_entry()
1138 dirent_bh = ocfs2_find_entry(name, namelen, dir, &dirent); in ocfs2_check_dir_for_entry()
1397 static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, in ocfs2_expand_inline_dir() argument
1402 struct super_block *sb = dir->i_sb; in ocfs2_expand_inline_dir()
1405 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); in ocfs2_expand_inline_dir()
1406 struct ocfs2_inode_info *oi = OCFS2_I(dir); in ocfs2_expand_inline_dir()
1414 ocfs2_init_dinode_extent_tree(&et, dir, di_bh); in ocfs2_expand_inline_dir()
1450 if (vfs_dq_alloc_space_nodirty(dir, in ocfs2_expand_inline_dir()
1472 blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off); in ocfs2_expand_inline_dir()
1480 ocfs2_set_new_buffer_uptodate(dir, dirdata_bh); in ocfs2_expand_inline_dir()
1482 ret = ocfs2_journal_access_db(handle, dir, dirdata_bh, in ocfs2_expand_inline_dir()
1489 memcpy(dirdata_bh->b_data, di->id2.i_data.id_data, i_size_read(dir)); in ocfs2_expand_inline_dir()
1490 memset(dirdata_bh->b_data + i_size_read(dir), 0, in ocfs2_expand_inline_dir()
1491 sb->s_blocksize - i_size_read(dir)); in ocfs2_expand_inline_dir()
1492 ocfs2_expand_last_dirent(dirdata_bh->b_data, i_size_read(dir), sb); in ocfs2_expand_inline_dir()
1494 ocfs2_init_dir_trailer(dir, dirdata_bh); in ocfs2_expand_inline_dir()
1510 ret = ocfs2_journal_access_di(handle, dir, di_bh, in ocfs2_expand_inline_dir()
1522 ocfs2_dinode_new_extent_list(dir, di); in ocfs2_expand_inline_dir()
1524 i_size_write(dir, sb->s_blocksize); in ocfs2_expand_inline_dir()
1525 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in ocfs2_expand_inline_dir()
1528 di->i_ctime = di->i_mtime = cpu_to_le64(dir->i_ctime.tv_sec); in ocfs2_expand_inline_dir()
1529 di->i_ctime_nsec = di->i_mtime_nsec = cpu_to_le32(dir->i_ctime.tv_nsec); in ocfs2_expand_inline_dir()
1535 ret = ocfs2_insert_extent(osb, handle, dir, &et, 0, blkno, len, in ocfs2_expand_inline_dir()
1546 dir->i_blocks = ocfs2_inode_sector_count(dir); in ocfs2_expand_inline_dir()
1565 blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off); in ocfs2_expand_inline_dir()
1567 ret = ocfs2_insert_extent(osb, handle, dir, &et, 1, in ocfs2_expand_inline_dir()
1580 vfs_dq_free_space_nodirty(dir, in ocfs2_expand_inline_dir()
1599 struct inode *dir, in ocfs2_do_extend_dir() argument
1609 spin_lock(&OCFS2_I(dir)->ip_lock); in ocfs2_do_extend_dir()
1610 extend = (i_size_read(dir) == ocfs2_clusters_to_bytes(sb, OCFS2_I(dir)->ip_clusters)); in ocfs2_do_extend_dir()
1611 spin_unlock(&OCFS2_I(dir)->ip_lock); in ocfs2_do_extend_dir()
1614 u32 offset = OCFS2_I(dir)->ip_clusters; in ocfs2_do_extend_dir()
1616 if (vfs_dq_alloc_space_nodirty(dir, in ocfs2_do_extend_dir()
1623 status = ocfs2_add_inode_data(OCFS2_SB(sb), dir, &offset, in ocfs2_do_extend_dir()
1633 v_blkno = ocfs2_blocks_for_bytes(sb, i_size_read(dir)); in ocfs2_do_extend_dir()
1634 status = ocfs2_extent_map_get_blocks(dir, v_blkno, &p_blkno, NULL, NULL); in ocfs2_do_extend_dir()
1649 vfs_dq_free_space_nodirty(dir, ocfs2_clusters_to_bytes(sb, 1)); in ocfs2_do_extend_dir()
1663 struct inode *dir, in ocfs2_extend_dir() argument
1683 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_extend_dir()
1684 status = ocfs2_expand_inline_dir(dir, parent_fe_bh, in ocfs2_extend_dir()
1710 dir_i_size = i_size_read(dir); in ocfs2_extend_dir()
1715 dir_i_size = i_size_read(dir); in ocfs2_extend_dir()
1717 (unsigned long long)OCFS2_I(dir)->ip_blkno, dir_i_size); in ocfs2_extend_dir()
1720 spin_lock(&OCFS2_I(dir)->ip_lock); in ocfs2_extend_dir()
1721 if (dir_i_size == ocfs2_clusters_to_bytes(sb, OCFS2_I(dir)->ip_clusters)) { in ocfs2_extend_dir()
1722 spin_unlock(&OCFS2_I(dir)->ip_lock); in ocfs2_extend_dir()
1723 ocfs2_init_dinode_extent_tree(&et, dir, parent_fe_bh); in ocfs2_extend_dir()
1724 num_free_extents = ocfs2_num_free_extents(osb, dir, &et); in ocfs2_extend_dir()
1749 spin_unlock(&OCFS2_I(dir)->ip_lock); in ocfs2_extend_dir()
1754 down_write(&OCFS2_I(dir)->ip_alloc_sem); in ocfs2_extend_dir()
1765 status = ocfs2_do_extend_dir(osb->sb, handle, dir, parent_fe_bh, in ocfs2_extend_dir()
1772 ocfs2_set_new_buffer_uptodate(dir, new_bh); in ocfs2_extend_dir()
1774 status = ocfs2_journal_access_db(handle, dir, new_bh, in ocfs2_extend_dir()
1784 if (ocfs2_dir_has_trailer(dir)) { in ocfs2_extend_dir()
1786 ocfs2_init_dir_trailer(dir, new_bh); in ocfs2_extend_dir()
1796 dir_i_size += dir->i_sb->s_blocksize; in ocfs2_extend_dir()
1797 i_size_write(dir, dir_i_size); in ocfs2_extend_dir()
1798 dir->i_blocks = ocfs2_inode_sector_count(dir); in ocfs2_extend_dir()
1799 status = ocfs2_mark_inode_dirty(handle, dir, parent_fe_bh); in ocfs2_extend_dir()
1810 up_write(&OCFS2_I(dir)->ip_alloc_sem); in ocfs2_extend_dir()
1825 static int ocfs2_find_dir_space_id(struct inode *dir, struct buffer_head *di_bh, in ocfs2_find_dir_space_id() argument
1831 struct super_block *sb = dir->i_sb; in ocfs2_find_dir_space_id()
1836 unsigned int rec_len, new_rec_len, free_space = dir->i_sb->s_blocksize; in ocfs2_find_dir_space_id()
1843 free_space = ocfs2_dir_trailer_blk_off(sb) - i_size_read(dir); in ocfs2_find_dir_space_id()
1845 free_space = dir->i_sb->s_blocksize - i_size_read(dir); in ocfs2_find_dir_space_id()
1848 limit = de_buf + i_size_read(dir); in ocfs2_find_dir_space_id()
1854 if (!ocfs2_check_dir_entry(dir, de, di_bh, offset)) { in ocfs2_find_dir_space_id()
1896 static int ocfs2_find_dir_space_el(struct inode *dir, const char *name, in ocfs2_find_dir_space_el() argument
1903 struct super_block *sb = dir->i_sb; in ocfs2_find_dir_space_el()
1905 int blocksize = dir->i_sb->s_blocksize; in ocfs2_find_dir_space_el()
1907 status = ocfs2_read_dir_block(dir, 0, &bh, 0); in ocfs2_find_dir_space_el()
1921 if (i_size_read(dir) <= offset) { in ocfs2_find_dir_space_el()
1929 status = ocfs2_read_dir_block(dir, in ocfs2_find_dir_space_el()
1939 if (!ocfs2_check_dir_entry(dir, de, bh, offset)) { in ocfs2_find_dir_space_el()
1948 if (ocfs2_skip_dir_trailer(dir, de, offset % blocksize, in ocfs2_find_dir_space_el()
1974 struct inode *dir, in ocfs2_prepare_dir_for_insert() argument
1985 namelen, (unsigned long long)OCFS2_I(dir)->ip_blkno); in ocfs2_prepare_dir_for_insert()
1995 if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_prepare_dir_for_insert()
1996 ret = ocfs2_find_dir_space_id(dir, parent_fe_bh, name, in ocfs2_prepare_dir_for_insert()
1999 ret = ocfs2_find_dir_space_el(dir, name, namelen, &bh); in ocfs2_prepare_dir_for_insert()
2012 ret = ocfs2_extend_dir(osb, dir, parent_fe_bh, blocks_wanted, in ocfs2_prepare_dir_for_insert()