Lines Matching refs:inode
56 static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, in ocfs2_symlink_get_block() argument
64 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_symlink_get_block()
68 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_symlink_get_block()
71 BUG_ON(ocfs2_inode_is_fast_symlink(inode)); in ocfs2_symlink_get_block()
73 if ((iblock << inode->i_sb->s_blocksize_bits) > PATH_MAX + 1) { in ocfs2_symlink_get_block()
79 status = ocfs2_read_inode_block(inode, &bh); in ocfs2_symlink_get_block()
86 if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb, in ocfs2_symlink_get_block()
96 if (!buffer_uptodate(bh_result) && ocfs2_inode_is_new(inode)) { in ocfs2_symlink_get_block()
111 && ocfs2_inode_is_new(inode)) { in ocfs2_symlink_get_block()
126 map_bh(bh_result, inode->i_sb, in ocfs2_symlink_get_block()
137 int ocfs2_get_block(struct inode *inode, sector_t iblock, in ocfs2_get_block() argument
142 u64 max_blocks = bh_result->b_size >> inode->i_blkbits; in ocfs2_get_block()
144 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_get_block()
146 trace_ocfs2_get_block((unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_get_block()
149 if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_SYSTEM_FILE) in ocfs2_get_block()
151 inode, inode->i_ino); in ocfs2_get_block()
153 if (S_ISLNK(inode->i_mode)) { in ocfs2_get_block()
155 err = ocfs2_symlink_get_block(inode, iblock, bh_result, create); in ocfs2_get_block()
159 err = ocfs2_extent_map_get_blocks(inode, iblock, &p_blkno, &count, in ocfs2_get_block()
163 "%llu, NULL)\n", err, inode, (unsigned long long)iblock, in ocfs2_get_block()
190 map_bh(bh_result, inode->i_sb, p_blkno); in ocfs2_get_block()
192 bh_result->b_size = count << inode->i_blkbits; in ocfs2_get_block()
201 (unsigned long long)OCFS2_I(inode)->ip_blkno); in ocfs2_get_block()
202 …mlog(ML_ERROR, "Size %llu, clusters %u\n", (unsigned long long)i_size_read(inode), OCFS2_I(inode)-… in ocfs2_get_block()
208 past_eof = ocfs2_blocks_for_bytes(inode->i_sb, i_size_read(inode)); in ocfs2_get_block()
210 trace_ocfs2_get_block_end((unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_get_block()
222 int ocfs2_read_inline_data(struct inode *inode, struct page *page, in ocfs2_read_inline_data() argument
230 ocfs2_error(inode->i_sb, "Inode %llu lost inline data flag", in ocfs2_read_inline_data()
231 (unsigned long long)OCFS2_I(inode)->ip_blkno); in ocfs2_read_inline_data()
235 size = i_size_read(inode); in ocfs2_read_inline_data()
238 size > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) { in ocfs2_read_inline_data()
239 ocfs2_error(inode->i_sb, in ocfs2_read_inline_data()
241 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_read_inline_data()
259 static int ocfs2_readpage_inline(struct inode *inode, struct page *page) in ocfs2_readpage_inline() argument
265 BUG_ON(!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)); in ocfs2_readpage_inline()
267 ret = ocfs2_read_inode_block(inode, &di_bh); in ocfs2_readpage_inline()
273 ret = ocfs2_read_inline_data(inode, page, di_bh); in ocfs2_readpage_inline()
283 struct inode *inode = page->mapping->host; in ocfs2_readpage() local
284 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_readpage()
291 ret = ocfs2_inode_lock_with_page(inode, NULL, 0, page); in ocfs2_readpage()
322 if (start >= i_size_read(inode)) { in ocfs2_readpage()
330 ret = ocfs2_readpage_inline(inode, page); in ocfs2_readpage()
336 up_read(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_readpage()
338 ocfs2_inode_unlock(inode, 0); in ocfs2_readpage()
358 struct inode *inode = mapping->host; in ocfs2_readpages() local
359 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_readpages()
367 ret = ocfs2_inode_lock_full(inode, NULL, 0, OCFS2_LOCK_NONBLOCK); in ocfs2_readpages()
372 ocfs2_inode_unlock(inode, 0); in ocfs2_readpages()
389 if (start >= i_size_read(inode)) in ocfs2_readpages()
396 ocfs2_inode_unlock(inode, 0); in ocfs2_readpages()
462 struct inode *inode = mapping->host; in ocfs2_bmap() local
464 trace_ocfs2_bmap((unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_bmap()
470 if (!INODE_JOURNAL(inode)) { in ocfs2_bmap()
471 err = ocfs2_inode_lock(inode, NULL, 0); in ocfs2_bmap()
477 down_read(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_bmap()
480 if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)) in ocfs2_bmap()
481 err = ocfs2_extent_map_get_blocks(inode, block, &p_blkno, NULL, in ocfs2_bmap()
484 if (!INODE_JOURNAL(inode)) { in ocfs2_bmap()
485 up_read(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_bmap()
486 ocfs2_inode_unlock(inode, 0); in ocfs2_bmap()
515 static int ocfs2_direct_IO_get_blocks(struct inode *inode, sector_t iblock, in ocfs2_direct_IO_get_blocks() argument
523 unsigned char blocksize_bits = inode->i_sb->s_blocksize_bits; in ocfs2_direct_IO_get_blocks()
524 unsigned long max_blocks = bh_result->b_size >> inode->i_blkbits; in ocfs2_direct_IO_get_blocks()
528 cpos = ocfs2_blocks_to_clusters(inode->i_sb, iblock); in ocfs2_direct_IO_get_blocks()
534 inode_blocks = ocfs2_blocks_for_bytes(inode->i_sb, i_size_read(inode)); in ocfs2_direct_IO_get_blocks()
538 ret = ocfs2_extent_map_get_blocks(inode, iblock, &p_blkno, in ocfs2_direct_IO_get_blocks()
552 ret = ocfs2_inode_lock(inode, NULL, 1); in ocfs2_direct_IO_get_blocks()
562 clusters_to_alloc = ocfs2_clusters_for_bytes(inode->i_sb, len); in ocfs2_direct_IO_get_blocks()
567 ret = ocfs2_extend_allocation(inode, cpos, in ocfs2_direct_IO_get_blocks()
574 ret = ocfs2_extent_map_get_blocks(inode, iblock, &p_blkno, in ocfs2_direct_IO_get_blocks()
591 map_bh(bh_result, inode->i_sb, p_blkno); in ocfs2_direct_IO_get_blocks()
602 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_get_blocks()
616 struct inode *inode = file_inode(iocb->ki_filp); in ocfs2_dio_end_io() local
628 mutex_unlock(&OCFS2_I(inode)->ip_unaligned_aio); in ocfs2_dio_end_io()
634 ocfs2_rw_unlock(inode, level); in ocfs2_dio_end_io()
645 struct inode *inode, loff_t offset) in ocfs2_is_overwrite() argument
654 ret = ocfs2_get_clusters(inode, v_cpos, &p_cpos, in ocfs2_is_overwrite()
668 struct inode *inode, loff_t offset, in ocfs2_direct_IO_zero_extend() argument
672 u32 v_cpos = ocfs2_bytes_to_clusters(osb->sb, i_size_read(inode)); in ocfs2_direct_IO_zero_extend()
677 if (offset <= i_size_read(inode) || cluster_align) in ocfs2_direct_IO_zero_extend()
680 ret = ocfs2_get_clusters(inode, v_cpos, &p_cpos, &num_clusters, in ocfs2_direct_IO_zero_extend()
688 u64 s = i_size_read(inode); in ocfs2_direct_IO_zero_extend()
702 struct inode *inode, loff_t offset) in ocfs2_direct_IO_extend_no_holes() argument
706 u32 v_cpos = ocfs2_bytes_to_clusters(osb->sb, i_size_read(inode)); in ocfs2_direct_IO_extend_no_holes()
714 u64 s = i_size_read(inode); in ocfs2_direct_IO_extend_no_holes()
720 if (offset <= i_size_read(inode)) in ocfs2_direct_IO_extend_no_holes()
723 clusters_to_add = ocfs2_bytes_to_clusters(inode->i_sb, offset) - in ocfs2_direct_IO_extend_no_holes()
724 ocfs2_bytes_to_clusters(inode->i_sb, i_size_read(inode)); in ocfs2_direct_IO_extend_no_holes()
725 total_zero_len = offset - i_size_read(inode); in ocfs2_direct_IO_extend_no_holes()
733 ret = ocfs2_extend_allocation(inode, in ocfs2_direct_IO_extend_no_holes()
734 OCFS2_I(inode)->ip_clusters, in ocfs2_direct_IO_extend_no_holes()
743 ret = ocfs2_get_clusters(inode, v_cpos, &p_cpos, &num_clusters, in ocfs2_direct_IO_extend_no_holes()
787 struct inode *inode = file_inode(file)->i_mapping->host; in ocfs2_direct_IO_write() local
788 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_direct_IO_write()
795 int append_write = offset >= i_size_read(inode) ? 1 : 0; in ocfs2_direct_IO_write()
801 u64 s = i_size_read(inode); in ocfs2_direct_IO_write()
808 if ((offset - i_size_read(inode)) < zero_len_tail) in ocfs2_direct_IO_write()
809 zero_len_tail = offset - i_size_read(inode); in ocfs2_direct_IO_write()
818 if (final_size > i_size_read(inode)) { in ocfs2_direct_IO_write()
819 ret = ocfs2_add_inode_to_orphan(osb, inode); in ocfs2_direct_IO_write()
828 ret = ocfs2_inode_lock(inode, NULL, 1); in ocfs2_direct_IO_write()
836 if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) in ocfs2_direct_IO_write()
837 ret = ocfs2_direct_IO_zero_extend(osb, inode, offset, in ocfs2_direct_IO_write()
840 ret = ocfs2_direct_IO_extend_no_holes(osb, inode, in ocfs2_direct_IO_write()
844 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_write()
848 is_overwrite = ocfs2_is_overwrite(osb, inode, offset); in ocfs2_direct_IO_write()
851 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_write()
855 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_write()
858 written = __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter, in ocfs2_direct_IO_write()
862 loff_t i_size = i_size_read(inode); in ocfs2_direct_IO_write()
865 ret = ocfs2_inode_lock(inode, &di_bh, 1); in ocfs2_direct_IO_write()
871 if (i_size == i_size_read(inode)) { in ocfs2_direct_IO_write()
872 ret = ocfs2_truncate_file(inode, di_bh, in ocfs2_direct_IO_write()
878 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_write()
884 ocfs2_inode_unlock(inode, 1); in ocfs2_direct_IO_write()
897 ret = ocfs2_inode_lock(inode, NULL, 0); in ocfs2_direct_IO_write()
903 ret = ocfs2_get_clusters(inode, v_cpos, &p_cpos, in ocfs2_direct_IO_write()
907 ocfs2_inode_unlock(inode, 0); in ocfs2_direct_IO_write()
919 ocfs2_inode_unlock(inode, 0); in ocfs2_direct_IO_write()
928 tmp_ret = ocfs2_del_inode_from_orphan(osb, inode, in ocfs2_direct_IO_write()
952 struct inode *inode = file_inode(file)->i_mapping->host; in ocfs2_direct_IO() local
953 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_direct_IO()
961 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_direct_IO()
967 if (i_size_read(inode) <= offset && !full_coherency) in ocfs2_direct_IO()
971 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, in ocfs2_direct_IO()
1044 static int ocfs2_should_read_blk(struct inode *inode, struct page *page, in ocfs2_should_read_blk() argument
1049 if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) in ocfs2_should_read_blk()
1052 if (i_size_read(inode) > offset) in ocfs2_should_read_blk()
1066 struct inode *inode, unsigned int from, in ocfs2_map_page_blocks() argument
1072 unsigned int bsize = 1 << inode->i_blkbits; in ocfs2_map_page_blocks()
1102 map_bh(bh, inode->i_sb, *p_blkno); in ocfs2_map_page_blocks()
1111 ocfs2_should_read_blk(inode, page, block_start) && in ocfs2_map_page_blocks()
1356 static void ocfs2_write_failure(struct inode *inode, in ocfs2_write_failure() argument
1371 if (ocfs2_should_order_data(inode)) in ocfs2_write_failure()
1372 ocfs2_jbd2_file_inode(wc->w_handle, inode); in ocfs2_write_failure()
1379 static int ocfs2_prepare_page_for_write(struct inode *inode, u64 *p_blkno, in ocfs2_prepare_page_for_write() argument
1390 ocfs2_figure_cluster_boundaries(OCFS2_SB(inode->i_sb), cpos, in ocfs2_prepare_page_for_write()
1396 new = new | ((i_size_read(inode) <= page_offset(page)) && in ocfs2_prepare_page_for_write()
1404 ret = ocfs2_map_page_blocks(page, p_blkno, inode, in ocfs2_prepare_page_for_write()
1408 ret = ocfs2_map_page_blocks(page, p_blkno, inode, in ocfs2_prepare_page_for_write()
1432 ret = ocfs2_map_page_blocks(page, p_blkno, inode, in ocfs2_prepare_page_for_write()
1451 ocfs2_clear_page_regions(page, OCFS2_SB(inode->i_sb), in ocfs2_prepare_page_for_write()
1471 struct inode *inode = mapping->host; in ocfs2_grab_pages_for_write() local
1484 wc->w_num_pages = ocfs2_pages_per_cluster(inode->i_sb); in ocfs2_grab_pages_for_write()
1485 start = ocfs2_align_clusters_to_page_index(inode->i_sb, cpos); in ocfs2_grab_pages_for_write()
1491 last_byte = max(user_pos + user_len, i_size_read(inode)); in ocfs2_grab_pages_for_write()
1556 struct inode *inode = mapping->host; in ocfs2_write_cluster() local
1568 ret = ocfs2_add_inode_data(OCFS2_SB(inode->i_sb), inode, in ocfs2_write_cluster()
1583 (unsigned long long)OCFS2_I(inode)->ip_blkno); in ocfs2_write_cluster()
1589 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), in ocfs2_write_cluster()
1591 ret = ocfs2_mark_extent_written(inode, &et, in ocfs2_write_cluster()
1601 v_blkno = ocfs2_clusters_to_blocks(inode->i_sb, cpos); in ocfs2_write_cluster()
1603 v_blkno = user_pos >> inode->i_sb->s_blocksize_bits; in ocfs2_write_cluster()
1609 ret = ocfs2_extent_map_get_blocks(inode, v_blkno, &p_blkno, NULL, in ocfs2_write_cluster()
1614 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_write_cluster()
1624 tmpret = ocfs2_prepare_page_for_write(inode, &p_blkno, wc, in ocfs2_write_cluster()
1639 ocfs2_write_failure(inode, wc, user_pos, user_len); in ocfs2_write_cluster()
1749 static int ocfs2_populate_write_desc(struct inode *inode, in ocfs2_populate_write_desc() argument
1772 ret = ocfs2_get_clusters(inode, desc->c_cpos, &phys, in ocfs2_populate_write_desc()
1833 struct inode *inode, in ocfs2_write_begin_inline() argument
1837 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_write_begin_inline()
1863 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), wc->w_di_bh, in ocfs2_write_begin_inline()
1872 if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)) in ocfs2_write_begin_inline()
1873 ocfs2_set_inode_data_inline(inode, di); in ocfs2_write_begin_inline()
1876 ret = ocfs2_read_inline_data(inode, page, wc->w_di_bh); in ocfs2_write_begin_inline()
1899 struct inode *inode, loff_t pos, in ocfs2_try_to_write_inline_data() argument
1905 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_try_to_write_inline_data()
1924 ret = ocfs2_convert_inline_data_to_extents(inode, wc->w_di_bh); in ocfs2_try_to_write_inline_data()
1933 if (oi->ip_clusters != 0 || i_size_read(inode) != 0) in ocfs2_try_to_write_inline_data()
1941 end > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) in ocfs2_try_to_write_inline_data()
1945 ret = ocfs2_write_begin_inline(mapping, inode, wc); in ocfs2_try_to_write_inline_data()
1969 static int ocfs2_expand_nonsparse_inode(struct inode *inode, in ocfs2_expand_nonsparse_inode() argument
1977 BUG_ON(ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))); in ocfs2_expand_nonsparse_inode()
1979 if (newsize <= i_size_read(inode)) in ocfs2_expand_nonsparse_inode()
1982 ret = ocfs2_extend_no_holes(inode, di_bh, newsize, pos); in ocfs2_expand_nonsparse_inode()
1987 ocfs2_clusters_for_bytes(inode->i_sb, i_size_read(inode)); in ocfs2_expand_nonsparse_inode()
1992 static int ocfs2_zero_tail(struct inode *inode, struct buffer_head *di_bh, in ocfs2_zero_tail() argument
1997 BUG_ON(!ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))); in ocfs2_zero_tail()
1998 if (pos > i_size_read(inode)) in ocfs2_zero_tail()
1999 ret = ocfs2_zero_extend(inode, di_bh, pos); in ocfs2_zero_tail()
2050 struct inode *inode = mapping->host; in ocfs2_write_begin_nolock() local
2051 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_write_begin_nolock()
2067 ret = ocfs2_try_to_write_inline_data(mapping, inode, pos, len, in ocfs2_write_begin_nolock()
2080 ret = ocfs2_zero_tail(inode, di_bh, pos); in ocfs2_write_begin_nolock()
2082 ret = ocfs2_expand_nonsparse_inode(inode, di_bh, pos, len, in ocfs2_write_begin_nolock()
2089 ret = ocfs2_check_range_for_refcount(inode, pos, len); in ocfs2_write_begin_nolock()
2095 ret = ocfs2_refcount_cow(inode, di_bh, in ocfs2_write_begin_nolock()
2103 ret = ocfs2_populate_write_desc(inode, wc, &clusters_to_alloc, in ocfs2_write_begin_nolock()
2114 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_write_begin_nolock()
2115 (long long)i_size_read(inode), in ocfs2_write_begin_nolock()
2132 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), in ocfs2_write_begin_nolock()
2134 ret = ocfs2_lock_allocators(inode, &et, in ocfs2_write_begin_nolock()
2143 data_ac->ac_resv = &OCFS2_I(inode)->ip_la_data_resv; in ocfs2_write_begin_nolock()
2145 credits = ocfs2_calc_extend_credits(inode->i_sb, in ocfs2_write_begin_nolock()
2174 ret = dquot_alloc_space_nodirty(inode, in ocfs2_write_begin_nolock()
2183 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), wc->w_di_bh, in ocfs2_write_begin_nolock()
2232 dquot_free_space(inode, in ocfs2_write_begin_nolock()
2273 struct inode *inode = mapping->host; in ocfs2_write_begin() local
2275 ret = ocfs2_inode_lock(inode, &di_bh, 1); in ocfs2_write_begin()
2288 down_write(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_write_begin()
2302 up_write(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_write_begin()
2305 ocfs2_inode_unlock(inode, 1); in ocfs2_write_begin()
2310 static void ocfs2_write_end_inline(struct inode *inode, loff_t pos, in ocfs2_write_end_inline() argument
2329 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_write_end_inline()
2341 struct inode *inode = mapping->host; in ocfs2_write_end_nolock() local
2342 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_write_end_nolock()
2348 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_write_end_nolock()
2349 ocfs2_write_end_inline(inode, pos, len, &copied, di, wc); in ocfs2_write_end_nolock()
2383 if (ocfs2_should_order_data(inode)) in ocfs2_write_end_nolock()
2384 ocfs2_jbd2_file_inode(wc->w_handle, inode); in ocfs2_write_end_nolock()
2391 if (pos > i_size_read(inode)) { in ocfs2_write_end_nolock()
2392 i_size_write(inode, pos); in ocfs2_write_end_nolock()
2393 mark_inode_dirty(inode); in ocfs2_write_end_nolock()
2395 inode->i_blocks = ocfs2_inode_sector_count(inode); in ocfs2_write_end_nolock()
2396 di->i_size = cpu_to_le64((u64)i_size_read(inode)); in ocfs2_write_end_nolock()
2397 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in ocfs2_write_end_nolock()
2398 di->i_mtime = di->i_ctime = cpu_to_le64(inode->i_mtime.tv_sec); in ocfs2_write_end_nolock()
2399 di->i_mtime_nsec = di->i_ctime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); in ocfs2_write_end_nolock()
2400 ocfs2_update_inode_fsync_trans(handle, inode, 1); in ocfs2_write_end_nolock()
2425 struct inode *inode = mapping->host; in ocfs2_write_end() local
2429 up_write(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_write_end()
2430 ocfs2_inode_unlock(inode, 1); in ocfs2_write_end()