Lines Matching refs:inode

68 static int ocfs2_init_file_private(struct inode *inode, struct file *file)  in ocfs2_init_file_private()  argument
84 static void ocfs2_free_file_private(struct inode *inode, struct file *file) in ocfs2_free_file_private() argument
87 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_free_file_private()
97 static int ocfs2_file_open(struct inode *inode, struct file *file) in ocfs2_file_open() argument
101 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_file_open()
103 trace_ocfs2_file_open(inode, file, file->f_path.dentry, in ocfs2_file_open()
104 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_file_open()
109 status = dquot_initialize(inode); in ocfs2_file_open()
119 if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED) { in ocfs2_file_open()
132 status = ocfs2_init_file_private(inode, file); in ocfs2_file_open()
147 static int ocfs2_file_release(struct inode *inode, struct file *file) in ocfs2_file_release() argument
149 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_file_release()
155 trace_ocfs2_file_release(inode, file, file->f_path.dentry, in ocfs2_file_release()
162 ocfs2_free_file_private(inode, file); in ocfs2_file_release()
167 static int ocfs2_dir_open(struct inode *inode, struct file *file) in ocfs2_dir_open() argument
169 return ocfs2_init_file_private(inode, file); in ocfs2_dir_open()
172 static int ocfs2_dir_release(struct inode *inode, struct file *file) in ocfs2_dir_release() argument
174 ocfs2_free_file_private(inode, file); in ocfs2_dir_release()
182 struct inode *inode = file->f_mapping->host; in ocfs2_sync_file() local
183 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_sync_file()
184 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_sync_file()
190 trace_ocfs2_sync_file(inode, file, file->f_path.dentry, in ocfs2_sync_file()
191 OCFS2_I(inode)->ip_blkno, in ocfs2_sync_file()
199 err = filemap_write_and_wait_range(inode->i_mapping, start, end); in ocfs2_sync_file()
209 ret = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL); in ocfs2_sync_file()
220 int ocfs2_should_update_atime(struct inode *inode, in ocfs2_should_update_atime() argument
224 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_should_update_atime()
229 if ((inode->i_flags & S_NOATIME) || in ocfs2_should_update_atime()
230 ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))) in ocfs2_should_update_atime()
245 ((vfsmnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))) in ocfs2_should_update_atime()
249 if ((timespec_compare(&inode->i_atime, &inode->i_mtime) <= 0) || in ocfs2_should_update_atime()
250 (timespec_compare(&inode->i_atime, &inode->i_ctime) <= 0)) in ocfs2_should_update_atime()
257 if ((now.tv_sec - inode->i_atime.tv_sec <= osb->s_atime_quantum)) in ocfs2_should_update_atime()
263 int ocfs2_update_inode_atime(struct inode *inode, in ocfs2_update_inode_atime() argument
267 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_update_inode_atime()
278 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), bh, in ocfs2_update_inode_atime()
290 inode->i_atime = CURRENT_TIME; in ocfs2_update_inode_atime()
291 di->i_atime = cpu_to_le64(inode->i_atime.tv_sec); in ocfs2_update_inode_atime()
292 di->i_atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec); in ocfs2_update_inode_atime()
293 ocfs2_update_inode_fsync_trans(handle, inode, 0); in ocfs2_update_inode_atime()
297 ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); in ocfs2_update_inode_atime()
303 struct inode *inode, in ocfs2_set_inode_size() argument
309 i_size_write(inode, new_i_size); in ocfs2_set_inode_size()
310 inode->i_blocks = ocfs2_inode_sector_count(inode); in ocfs2_set_inode_size()
311 inode->i_ctime = inode->i_mtime = CURRENT_TIME; in ocfs2_set_inode_size()
313 status = ocfs2_mark_inode_dirty(handle, inode, fe_bh); in ocfs2_set_inode_size()
323 int ocfs2_simple_size_update(struct inode *inode, in ocfs2_simple_size_update() argument
328 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_simple_size_update()
338 ret = ocfs2_set_inode_size(handle, inode, di_bh, in ocfs2_simple_size_update()
343 ocfs2_update_inode_fsync_trans(handle, inode, 0); in ocfs2_simple_size_update()
349 static int ocfs2_cow_file_pos(struct inode *inode, in ocfs2_cow_file_pos() argument
354 u32 phys, cpos = offset >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; in ocfs2_cow_file_pos()
363 if ((offset & (OCFS2_SB(inode->i_sb)->s_clustersize - 1)) == 0) in ocfs2_cow_file_pos()
366 status = ocfs2_get_clusters(inode, cpos, &phys, in ocfs2_cow_file_pos()
376 return ocfs2_refcount_cow(inode, fe_bh, cpos, 1, cpos+1); in ocfs2_cow_file_pos()
383 struct inode *inode, in ocfs2_orphan_for_truncate() argument
397 status = ocfs2_cow_file_pos(inode, fe_bh, new_i_size); in ocfs2_orphan_for_truncate()
413 status = ocfs2_journal_access_di(handle, INODE_CACHE(inode), fe_bh, in ocfs2_orphan_for_truncate()
423 cluster_bytes = ocfs2_align_bytes_to_clusters(inode->i_sb, new_i_size); in ocfs2_orphan_for_truncate()
424 status = ocfs2_zero_range_for_truncate(inode, handle, new_i_size, in ocfs2_orphan_for_truncate()
431 i_size_write(inode, new_i_size); in ocfs2_orphan_for_truncate()
432 inode->i_ctime = inode->i_mtime = CURRENT_TIME; in ocfs2_orphan_for_truncate()
436 di->i_ctime = di->i_mtime = cpu_to_le64(inode->i_ctime.tv_sec); in ocfs2_orphan_for_truncate()
437 di->i_ctime_nsec = di->i_mtime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); in ocfs2_orphan_for_truncate()
438 ocfs2_update_inode_fsync_trans(handle, inode, 0); in ocfs2_orphan_for_truncate()
448 int ocfs2_truncate_file(struct inode *inode, in ocfs2_truncate_file() argument
454 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_truncate_file()
460 trace_ocfs2_truncate_file((unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_truncate_file()
464 mlog_bug_on_msg(le64_to_cpu(fe->i_size) != i_size_read(inode), in ocfs2_truncate_file()
467 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_truncate_file()
468 i_size_read(inode), in ocfs2_truncate_file()
481 down_write(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_truncate_file()
484 &OCFS2_I(inode)->ip_la_data_resv); in ocfs2_truncate_file()
493 unmap_mapping_range(inode->i_mapping, new_i_size + PAGE_SIZE - 1, 0, 1); in ocfs2_truncate_file()
494 truncate_inode_pages(inode->i_mapping, new_i_size); in ocfs2_truncate_file()
496 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_truncate_file()
497 status = ocfs2_truncate_inline(inode, di_bh, new_i_size, in ocfs2_truncate_file()
498 i_size_read(inode), 1); in ocfs2_truncate_file()
509 status = ocfs2_orphan_for_truncate(osb, inode, di_bh, new_i_size); in ocfs2_truncate_file()
515 status = ocfs2_commit_truncate(osb, inode, di_bh); in ocfs2_truncate_file()
523 up_write(&OCFS2_I(inode)->ip_alloc_sem); in ocfs2_truncate_file()
526 if (!status && OCFS2_I(inode)->ip_clusters == 0) in ocfs2_truncate_file()
527 status = ocfs2_try_remove_refcount_tree(inode, di_bh); in ocfs2_truncate_file()
543 struct inode *inode, in ocfs2_add_inode_data() argument
556 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), fe_bh); in ocfs2_add_inode_data()
564 static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start, in __ocfs2_extend_allocation() argument
577 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in __ocfs2_extend_allocation()
587 status = ocfs2_read_inode_block(inode, &bh); in __ocfs2_extend_allocation()
595 BUG_ON(le32_to_cpu(fe->i_clusters) != OCFS2_I(inode)->ip_clusters); in __ocfs2_extend_allocation()
597 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), bh); in __ocfs2_extend_allocation()
598 status = ocfs2_lock_allocators(inode, &et, clusters_to_add, 0, in __ocfs2_extend_allocation()
616 (unsigned long long)OCFS2_I(inode)->ip_blkno, in __ocfs2_extend_allocation()
617 (unsigned long long)i_size_read(inode), in __ocfs2_extend_allocation()
621 status = dquot_alloc_space_nodirty(inode, in __ocfs2_extend_allocation()
630 status = ocfs2_journal_access_di(handle, INODE_CACHE(inode), bh, in __ocfs2_extend_allocation()
637 prev_clusters = OCFS2_I(inode)->ip_clusters; in __ocfs2_extend_allocation()
640 inode, in __ocfs2_extend_allocation()
654 ocfs2_update_inode_fsync_trans(handle, inode, 1); in __ocfs2_extend_allocation()
657 spin_lock(&OCFS2_I(inode)->ip_lock); in __ocfs2_extend_allocation()
658 clusters_to_add -= (OCFS2_I(inode)->ip_clusters - prev_clusters); in __ocfs2_extend_allocation()
659 spin_unlock(&OCFS2_I(inode)->ip_lock); in __ocfs2_extend_allocation()
661 dquot_free_space(inode, in __ocfs2_extend_allocation()
684 trace_ocfs2_extend_allocation_end(OCFS2_I(inode)->ip_blkno, in __ocfs2_extend_allocation()
687 OCFS2_I(inode)->ip_clusters, in __ocfs2_extend_allocation()
688 (unsigned long long)i_size_read(inode)); in __ocfs2_extend_allocation()
692 dquot_free_space(inode, in __ocfs2_extend_allocation()
716 int ocfs2_extend_allocation(struct inode *inode, u32 logical_start, in ocfs2_extend_allocation() argument
719 return __ocfs2_extend_allocation(inode, logical_start, in ocfs2_extend_allocation()
727 static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode, in ocfs2_zero_start_ordered_transaction() argument
730 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_zero_start_ordered_transaction()
734 if (!ocfs2_should_order_data(inode)) in ocfs2_zero_start_ordered_transaction()
744 ret = ocfs2_jbd2_file_inode(handle, inode); in ocfs2_zero_start_ordered_transaction()
750 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh, in ocfs2_zero_start_ordered_transaction()
754 ocfs2_update_inode_fsync_trans(handle, inode, 1); in ocfs2_zero_start_ordered_transaction()
768 static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from, in ocfs2_write_zero_page() argument
771 struct address_space *mapping = inode->i_mapping; in ocfs2_write_zero_page()
781 BUG_ON(abs_from & (inode->i_blkbits - 1)); in ocfs2_write_zero_page()
783 handle = ocfs2_zero_start_ordered_transaction(inode, di_bh); in ocfs2_write_zero_page()
803 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_write_zero_page()
811 block_end = block_start + (1 << inode->i_blkbits); in ocfs2_write_zero_page()
840 i_size_write(inode, abs_to); in ocfs2_write_zero_page()
841 inode->i_blocks = ocfs2_inode_sector_count(inode); in ocfs2_write_zero_page()
842 di->i_size = cpu_to_le64((u64)i_size_read(inode)); in ocfs2_write_zero_page()
843 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in ocfs2_write_zero_page()
844 di->i_mtime = di->i_ctime = cpu_to_le64(inode->i_mtime.tv_sec); in ocfs2_write_zero_page()
845 di->i_ctime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); in ocfs2_write_zero_page()
849 ocfs2_update_inode_fsync_trans(handle, inode, 1); in ocfs2_write_zero_page()
857 ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); in ocfs2_write_zero_page()
874 static int ocfs2_zero_extend_get_range(struct inode *inode, in ocfs2_zero_extend_get_range() argument
882 zero_start >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; in ocfs2_zero_extend_get_range()
883 u32 last_cpos = ocfs2_clusters_for_bytes(inode->i_sb, zero_end); in ocfs2_zero_extend_get_range()
888 rc = ocfs2_get_clusters(inode, zero_cpos, &p_cpos, in ocfs2_zero_extend_get_range()
910 rc = ocfs2_get_clusters(inode, zero_cpos + zero_clusters, in ocfs2_zero_extend_get_range()
928 rc = ocfs2_refcount_cow(inode, di_bh, zero_cpos, in ocfs2_zero_extend_get_range()
936 *range_start = ocfs2_clusters_to_bytes(inode->i_sb, zero_cpos); in ocfs2_zero_extend_get_range()
937 *range_end = ocfs2_clusters_to_bytes(inode->i_sb, in ocfs2_zero_extend_get_range()
948 static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start, in ocfs2_zero_extend_range() argument
956 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_zero_extend_range()
965 rc = ocfs2_write_zero_page(inode, zero_pos, next_pos, di_bh); in ocfs2_zero_extend_range()
982 int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh, in ocfs2_zero_extend() argument
987 struct super_block *sb = inode->i_sb; in ocfs2_zero_extend()
989 zero_start = ocfs2_align_bytes_to_blocks(sb, i_size_read(inode)); in ocfs2_zero_extend()
990 trace_ocfs2_zero_extend((unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_zero_extend()
992 (unsigned long long)i_size_read(inode)); in ocfs2_zero_extend()
994 ret = ocfs2_zero_extend_get_range(inode, di_bh, zero_start, in ocfs2_zero_extend()
1010 ret = ocfs2_zero_extend_range(inode, range_start, in ocfs2_zero_extend()
1022 int ocfs2_extend_no_holes(struct inode *inode, struct buffer_head *di_bh, in ocfs2_extend_no_holes() argument
1027 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_extend_no_holes()
1036 clusters_to_add = ocfs2_clusters_for_bytes(inode->i_sb, new_i_size); in ocfs2_extend_no_holes()
1043 ret = __ocfs2_extend_allocation(inode, oi->ip_clusters, in ocfs2_extend_no_holes()
1056 ret = ocfs2_zero_extend(inode, di_bh, zero_to); in ocfs2_extend_no_holes()
1064 static int ocfs2_extend_file(struct inode *inode, in ocfs2_extend_file() argument
1069 struct ocfs2_inode_info *oi = OCFS2_I(inode); in ocfs2_extend_file()
1077 if (i_size_read(inode) == new_i_size) in ocfs2_extend_file()
1079 BUG_ON(new_i_size < i_size_read(inode)); in ocfs2_extend_file()
1100 ret = ocfs2_convert_inline_data_to_extents(inode, di_bh); in ocfs2_extend_file()
1108 if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) in ocfs2_extend_file()
1109 ret = ocfs2_zero_extend(inode, di_bh, new_i_size); in ocfs2_extend_file()
1111 ret = ocfs2_extend_no_holes(inode, di_bh, new_i_size, in ocfs2_extend_file()
1122 ret = ocfs2_simple_size_update(inode, di_bh, new_i_size); in ocfs2_extend_file()
1134 struct inode *inode = d_inode(dentry); in ocfs2_setattr() local
1135 struct super_block *sb = inode->i_sb; in ocfs2_setattr()
1142 trace_ocfs2_setattr(inode, dentry, in ocfs2_setattr()
1143 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_setattr()
1150 if (S_ISLNK(inode->i_mode)) in ocfs2_setattr()
1158 status = inode_change_ok(inode, attr); in ocfs2_setattr()
1162 if (is_quota_modification(inode, attr)) { in ocfs2_setattr()
1163 status = dquot_initialize(inode); in ocfs2_setattr()
1167 size_change = S_ISREG(inode->i_mode) && attr->ia_valid & ATTR_SIZE; in ocfs2_setattr()
1169 status = ocfs2_rw_lock(inode, 1); in ocfs2_setattr()
1176 status = ocfs2_inode_lock(inode, &bh, 1); in ocfs2_setattr()
1185 status = inode_newsize_ok(inode, attr->ia_size); in ocfs2_setattr()
1189 inode_dio_wait(inode); in ocfs2_setattr()
1191 if (i_size_read(inode) >= attr->ia_size) { in ocfs2_setattr()
1192 if (ocfs2_should_order_data(inode)) { in ocfs2_setattr()
1193 status = ocfs2_begin_ordered_truncate(inode, in ocfs2_setattr()
1198 status = ocfs2_truncate_file(inode, bh, attr->ia_size); in ocfs2_setattr()
1200 status = ocfs2_extend_file(inode, bh, attr->ia_size); in ocfs2_setattr()
1209 if ((attr->ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) || in ocfs2_setattr()
1210 (attr->ia_valid & ATTR_GID && !gid_eq(attr->ia_gid, inode->i_gid))) { in ocfs2_setattr()
1216 if (attr->ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid) in ocfs2_setattr()
1225 if (attr->ia_valid & ATTR_GID && !gid_eq(attr->ia_gid, inode->i_gid) in ocfs2_setattr()
1241 status = __dquot_transfer(inode, transfer_to); in ocfs2_setattr()
1253 setattr_copy(inode, attr); in ocfs2_setattr()
1254 mark_inode_dirty(inode); in ocfs2_setattr()
1256 status = ocfs2_mark_inode_dirty(handle, inode, bh); in ocfs2_setattr()
1264 ocfs2_inode_unlock(inode, 1); in ocfs2_setattr()
1269 ocfs2_rw_unlock(inode, 1); in ocfs2_setattr()
1277 status = ocfs2_acl_chmod(inode, bh); in ocfs2_setattr()
1282 ocfs2_inode_unlock(inode, 1); in ocfs2_setattr()
1292 struct inode *inode = d_inode(dentry); in ocfs2_getattr() local
1304 generic_fillattr(inode, stat); in ocfs2_getattr()
1313 int ocfs2_permission(struct inode *inode, int mask) in ocfs2_permission() argument
1320 ret = ocfs2_inode_lock(inode, NULL, 0); in ocfs2_permission()
1327 ret = generic_permission(inode, mask); in ocfs2_permission()
1329 ocfs2_inode_unlock(inode, 0); in ocfs2_permission()
1334 static int __ocfs2_write_remove_suid(struct inode *inode, in __ocfs2_write_remove_suid() argument
1339 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in __ocfs2_write_remove_suid()
1343 (unsigned long long)OCFS2_I(inode)->ip_blkno, in __ocfs2_write_remove_suid()
1344 inode->i_mode); in __ocfs2_write_remove_suid()
1353 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), bh, in __ocfs2_write_remove_suid()
1360 inode->i_mode &= ~S_ISUID; in __ocfs2_write_remove_suid()
1361 if ((inode->i_mode & S_ISGID) && (inode->i_mode & S_IXGRP)) in __ocfs2_write_remove_suid()
1362 inode->i_mode &= ~S_ISGID; in __ocfs2_write_remove_suid()
1365 di->i_mode = cpu_to_le16(inode->i_mode); in __ocfs2_write_remove_suid()
1366 ocfs2_update_inode_fsync_trans(handle, inode, 0); in __ocfs2_write_remove_suid()
1380 static int ocfs2_check_range_for_holes(struct inode *inode, loff_t pos, in ocfs2_check_range_for_holes() argument
1386 struct super_block *sb = inode->i_sb; in ocfs2_check_range_for_holes()
1392 ret = ocfs2_get_clusters(inode, cpos, &phys_cpos, &extent_len, in ocfs2_check_range_for_holes()
1414 static int ocfs2_write_remove_suid(struct inode *inode) in ocfs2_write_remove_suid() argument
1419 ret = ocfs2_read_inode_block(inode, &bh); in ocfs2_write_remove_suid()
1425 ret = __ocfs2_write_remove_suid(inode, bh); in ocfs2_write_remove_suid()
1436 static int ocfs2_allocate_unwritten_extents(struct inode *inode, in ocfs2_allocate_unwritten_extents() argument
1444 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_allocate_unwritten_extents()
1445 ret = ocfs2_read_inode_block(inode, &di_bh); in ocfs2_allocate_unwritten_extents()
1458 ret = ocfs2_convert_inline_data_to_extents(inode, di_bh); in ocfs2_allocate_unwritten_extents()
1468 cpos = start >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; in ocfs2_allocate_unwritten_extents()
1469 clusters = ocfs2_clusters_for_bytes(inode->i_sb, start + len); in ocfs2_allocate_unwritten_extents()
1473 ret = ocfs2_get_clusters(inode, cpos, &phys_cpos, in ocfs2_allocate_unwritten_extents()
1495 ret = __ocfs2_extend_allocation(inode, cpos, alloc_size, 1); in ocfs2_allocate_unwritten_extents()
1518 static void ocfs2_truncate_cluster_pages(struct inode *inode, u64 byte_start, in ocfs2_truncate_cluster_pages() argument
1521 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_truncate_cluster_pages()
1523 struct address_space *mapping = inode->i_mapping; in ocfs2_truncate_cluster_pages()
1525 start = (loff_t)ocfs2_align_bytes_to_clusters(inode->i_sb, byte_start); in ocfs2_truncate_cluster_pages()
1535 static int ocfs2_zero_partial_clusters(struct inode *inode, in ocfs2_zero_partial_clusters() argument
1540 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_zero_partial_clusters()
1552 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_zero_partial_clusters()
1580 ret = ocfs2_zero_range_for_truncate(inode, handle, start, tmpend); in ocfs2_zero_partial_clusters()
1595 ret = ocfs2_zero_range_for_truncate(inode, handle, start, end); in ocfs2_zero_partial_clusters()
1599 ocfs2_update_inode_fsync_trans(handle, inode, 1); in ocfs2_zero_partial_clusters()
1630 static void ocfs2_calc_trunc_pos(struct inode *inode, in ocfs2_calc_trunc_pos() argument
1669 ocfs2_clusters_to_blocks(inode->i_sb, coff); in ocfs2_calc_trunc_pos()
1686 static int ocfs2_remove_inode_range(struct inode *inode, in ocfs2_remove_inode_range() argument
1693 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_remove_inode_range()
1695 struct address_space *mapping = inode->i_mapping; in ocfs2_remove_inode_range()
1703 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); in ocfs2_remove_inode_range()
1707 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_remove_inode_range()
1714 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_remove_inode_range()
1715 ret = ocfs2_truncate_inline(inode, di_bh, byte_start, in ocfs2_remove_inode_range()
1738 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_HAS_REFCOUNT_FL) { in ocfs2_remove_inode_range()
1740 ret = ocfs2_cow_file_pos(inode, di_bh, byte_start); in ocfs2_remove_inode_range()
1746 ret = ocfs2_cow_file_pos(inode, di_bh, byte_start + byte_len); in ocfs2_remove_inode_range()
1757 ret = ocfs2_zero_partial_clusters(inode, byte_start, byte_len); in ocfs2_remove_inode_range()
1772 ret = ocfs2_find_path(INODE_CACHE(inode), path, in ocfs2_remove_inode_range()
1789 ret = ocfs2_find_cpos_for_left_leaf(inode->i_sb, in ocfs2_remove_inode_range()
1817 ocfs2_calc_trunc_pos(inode, el, rec, trunc_start, &trunc_cpos, in ocfs2_remove_inode_range()
1823 phys_cpos = ocfs2_blocks_to_clusters(inode->i_sb, blkno); in ocfs2_remove_inode_range()
1825 ret = ocfs2_remove_btree_range(inode, &et, trunc_cpos, in ocfs2_remove_inode_range()
1838 ocfs2_truncate_cluster_pages(inode, byte_start, byte_len); in ocfs2_remove_inode_range()
1851 static int __ocfs2_change_file_space(struct file *file, struct inode *inode, in __ocfs2_change_file_space() argument
1859 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in __ocfs2_change_file_space()
1862 unsigned long long max_off = inode->i_sb->s_maxbytes; in __ocfs2_change_file_space()
1867 mutex_lock(&inode->i_mutex); in __ocfs2_change_file_space()
1872 ret = ocfs2_rw_lock(inode, 1); in __ocfs2_change_file_space()
1878 ret = ocfs2_inode_lock(inode, &di_bh, 1); in __ocfs2_change_file_space()
1884 if (inode->i_flags & (S_IMMUTABLE|S_APPEND)) { in __ocfs2_change_file_space()
1896 sr->l_start += i_size_read(inode); in __ocfs2_change_file_space()
1924 ret = __ocfs2_write_remove_suid(inode, di_bh); in __ocfs2_change_file_space()
1931 down_write(&OCFS2_I(inode)->ip_alloc_sem); in __ocfs2_change_file_space()
1939 ret = ocfs2_allocate_unwritten_extents(inode, sr->l_start, in __ocfs2_change_file_space()
1944 ret = ocfs2_remove_inode_range(inode, di_bh, sr->l_start, in __ocfs2_change_file_space()
1950 up_write(&OCFS2_I(inode)->ip_alloc_sem); in __ocfs2_change_file_space()
1966 if (change_size && i_size_read(inode) < size) in __ocfs2_change_file_space()
1967 i_size_write(inode, size); in __ocfs2_change_file_space()
1969 inode->i_ctime = inode->i_mtime = CURRENT_TIME; in __ocfs2_change_file_space()
1970 ret = ocfs2_mark_inode_dirty(handle, inode, di_bh); in __ocfs2_change_file_space()
1981 ocfs2_inode_unlock(inode, 1); in __ocfs2_change_file_space()
1983 ocfs2_rw_unlock(inode, 1); in __ocfs2_change_file_space()
1986 mutex_unlock(&inode->i_mutex); in __ocfs2_change_file_space()
1993 struct inode *inode = file_inode(file); in ocfs2_change_file_space() local
1994 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_change_file_space()
2004 if (!S_ISREG(inode->i_mode)) in ocfs2_change_file_space()
2013 ret = __ocfs2_change_file_space(file, inode, file->f_pos, cmd, sr, 0); in ocfs2_change_file_space()
2021 struct inode *inode = file_inode(file); in ocfs2_fallocate() local
2022 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_fallocate()
2042 return __ocfs2_change_file_space(NULL, inode, offset, cmd, &sr, in ocfs2_fallocate()
2046 int ocfs2_check_range_for_refcount(struct inode *inode, loff_t pos, in ocfs2_check_range_for_refcount() argument
2052 struct super_block *sb = inode->i_sb; in ocfs2_check_range_for_refcount()
2054 if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb)) || in ocfs2_check_range_for_refcount()
2055 !(OCFS2_I(inode)->ip_dyn_features & OCFS2_HAS_REFCOUNT_FL) || in ocfs2_check_range_for_refcount()
2056 OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) in ocfs2_check_range_for_refcount()
2063 ret = ocfs2_get_clusters(inode, cpos, &phys_cpos, &extent_len, in ocfs2_check_range_for_refcount()
2085 static int ocfs2_is_io_unaligned(struct inode *inode, size_t count, loff_t pos) in ocfs2_is_io_unaligned() argument
2087 int blockmask = inode->i_sb->s_blocksize - 1; in ocfs2_is_io_unaligned()
2095 static int ocfs2_prepare_inode_for_refcount(struct inode *inode, in ocfs2_prepare_inode_for_refcount() argument
2102 u32 cpos = pos >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; in ocfs2_prepare_inode_for_refcount()
2104 ocfs2_clusters_for_bytes(inode->i_sb, pos + count) - cpos; in ocfs2_prepare_inode_for_refcount()
2106 ret = ocfs2_inode_lock(inode, &di_bh, 1); in ocfs2_prepare_inode_for_refcount()
2114 ret = ocfs2_refcount_cow(inode, di_bh, cpos, clusters, UINT_MAX); in ocfs2_prepare_inode_for_refcount()
2131 struct inode *inode = d_inode(dentry); in ocfs2_prepare_inode_for_write() local
2133 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_prepare_inode_for_write()
2142 ret = ocfs2_inode_lock(inode, NULL, meta_level); in ocfs2_prepare_inode_for_write()
2160 ocfs2_inode_unlock(inode, meta_level); in ocfs2_prepare_inode_for_write()
2165 ret = ocfs2_write_remove_suid(inode); in ocfs2_prepare_inode_for_write()
2174 ret = ocfs2_check_range_for_refcount(inode, pos, count); in ocfs2_prepare_inode_for_write()
2176 ocfs2_inode_unlock(inode, meta_level); in ocfs2_prepare_inode_for_write()
2179 ret = ocfs2_prepare_inode_for_refcount(inode, in ocfs2_prepare_inode_for_write()
2206 if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { in ocfs2_prepare_inode_for_write()
2217 if (end > i_size_read(inode) && !full_coherency) { in ocfs2_prepare_inode_for_write()
2225 if (end > i_size_read(inode) && in ocfs2_prepare_inode_for_write()
2237 ret = ocfs2_check_range_for_holes(inode, pos, count); in ocfs2_prepare_inode_for_write()
2253 trace_ocfs2_prepare_inode_for_write(OCFS2_I(inode)->ip_blkno, in ocfs2_prepare_inode_for_write()
2258 ocfs2_inode_unlock(inode, meta_level); in ocfs2_prepare_inode_for_write()
2273 struct inode *inode = file_inode(file); in ocfs2_file_write_iter() local
2274 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_file_write_iter()
2280 i_size_read(inode) ? 1 : 0); in ocfs2_file_write_iter()
2282 trace_ocfs2_file_aio_write(inode, file, file->f_path.dentry, in ocfs2_file_write_iter()
2283 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_file_write_iter()
2294 mutex_lock(&inode->i_mutex); in ocfs2_file_write_iter()
2304 ret = ocfs2_rw_lock(inode, rw_level); in ocfs2_file_write_iter()
2320 ret = ocfs2_inode_lock(inode, NULL, 1); in ocfs2_file_write_iter()
2326 ocfs2_inode_unlock(inode, 1); in ocfs2_file_write_iter()
2347 unaligned_dio = ocfs2_is_io_unaligned(inode, count, iocb->ki_pos); in ocfs2_file_write_iter()
2354 ocfs2_rw_unlock(inode, rw_level); in ocfs2_file_write_iter()
2370 mutex_lock(&OCFS2_I(inode)->ip_unaligned_aio); in ocfs2_file_write_iter()
2400 IS_SYNC(inode) || dropped_dio) { in ocfs2_file_write_iter()
2422 mutex_unlock(&OCFS2_I(inode)->ip_unaligned_aio); in ocfs2_file_write_iter()
2427 ocfs2_rw_unlock(inode, rw_level); in ocfs2_file_write_iter()
2430 mutex_unlock(&inode->i_mutex); in ocfs2_file_write_iter()
2444 struct inode *inode = file_inode(in); in ocfs2_file_splice_read() local
2446 trace_ocfs2_file_splice_read(inode, in, in->f_path.dentry, in ocfs2_file_splice_read()
2447 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_file_splice_read()
2454 ret = ocfs2_inode_lock_atime(inode, in->f_path.mnt, &lock_level); in ocfs2_file_splice_read()
2459 ocfs2_inode_unlock(inode, lock_level); in ocfs2_file_splice_read()
2472 struct inode *inode = file_inode(filp); in ocfs2_file_read_iter() local
2474 trace_ocfs2_file_aio_read(inode, filp, filp->f_path.dentry, in ocfs2_file_read_iter()
2475 (unsigned long long)OCFS2_I(inode)->ip_blkno, in ocfs2_file_read_iter()
2481 if (!inode) { in ocfs2_file_read_iter()
2492 ret = ocfs2_rw_lock(inode, 0); in ocfs2_file_read_iter()
2511 ret = ocfs2_inode_lock_atime(inode, filp->f_path.mnt, &lock_level); in ocfs2_file_read_iter()
2516 ocfs2_inode_unlock(inode, lock_level); in ocfs2_file_read_iter()
2531 ocfs2_rw_unlock(inode, rw_level); in ocfs2_file_read_iter()
2539 struct inode *inode = file->f_mapping->host; in ocfs2_file_llseek() local
2542 mutex_lock(&inode->i_mutex); in ocfs2_file_llseek()
2551 ret = ocfs2_inode_lock(inode, NULL, 0); in ocfs2_file_llseek()
2556 offset += i_size_read(inode); in ocfs2_file_llseek()
2557 ocfs2_inode_unlock(inode, 0); in ocfs2_file_llseek()
2577 offset = vfs_setpos(file, offset, inode->i_sb->s_maxbytes); in ocfs2_file_llseek()
2580 mutex_unlock(&inode->i_mutex); in ocfs2_file_llseek()