Lines Matching refs:inode

41 static int nilfs_iget_test(struct inode *inode, void *opaque);
43 void nilfs_inode_add_blocks(struct inode *inode, int n) in nilfs_inode_add_blocks() argument
45 struct nilfs_root *root = NILFS_I(inode)->i_root; in nilfs_inode_add_blocks()
47 inode_add_bytes(inode, i_blocksize(inode) * n); in nilfs_inode_add_blocks()
52 void nilfs_inode_sub_blocks(struct inode *inode, int n) in nilfs_inode_sub_blocks() argument
54 struct nilfs_root *root = NILFS_I(inode)->i_root; in nilfs_inode_sub_blocks()
56 inode_sub_bytes(inode, i_blocksize(inode) * n); in nilfs_inode_sub_blocks()
74 int nilfs_get_block(struct inode *inode, sector_t blkoff, in nilfs_get_block() argument
77 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_get_block()
78 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in nilfs_get_block()
81 unsigned int maxblocks = bh_result->b_size >> inode->i_blkbits; in nilfs_get_block()
87 map_bh(bh_result, inode->i_sb, blknum); in nilfs_get_block()
89 bh_result->b_size = (ret << inode->i_blkbits); in nilfs_get_block()
97 err = nilfs_transaction_begin(inode->i_sb, &ti, 1); in nilfs_get_block()
110 nilfs_warn(inode->i_sb, in nilfs_get_block()
112 __func__, inode->i_ino, in nilfs_get_block()
116 nilfs_transaction_abort(inode->i_sb); in nilfs_get_block()
119 nilfs_mark_inode_dirty_sync(inode); in nilfs_get_block()
120 nilfs_transaction_commit(inode->i_sb); /* never fails */ in nilfs_get_block()
124 map_bh(bh_result, inode->i_sb, 0); in nilfs_get_block()
162 struct inode *inode = mapping->host; in nilfs_writepages() local
165 if (sb_rdonly(inode->i_sb)) { in nilfs_writepages()
171 err = nilfs_construct_dsync_segment(inode->i_sb, inode, in nilfs_writepages()
180 struct inode *inode = mapping->host; in nilfs_dirty_folio() local
202 nr_dirty = 1 << (folio_shift(folio) - inode->i_blkbits); in nilfs_dirty_folio()
207 nilfs_set_file_dirty(inode, nr_dirty); in nilfs_dirty_folio()
213 struct inode *inode = mapping->host; in nilfs_write_failed() local
215 if (to > inode->i_size) { in nilfs_write_failed()
216 truncate_pagecache(inode, inode->i_size); in nilfs_write_failed()
217 nilfs_truncate(inode); in nilfs_write_failed()
227 struct inode *inode = mapping->host; in nilfs_write_begin() local
228 int err = nilfs_transaction_begin(inode->i_sb, NULL, 1); in nilfs_write_begin()
236 nilfs_transaction_abort(inode->i_sb); in nilfs_write_begin()
246 struct inode *inode = mapping->host; in nilfs_write_end() local
255 nilfs_set_file_dirty(inode, nr_dirty); in nilfs_write_end()
256 err = nilfs_transaction_commit(inode->i_sb); in nilfs_write_end()
263 struct inode *inode = file_inode(iocb->ki_filp); in nilfs_direct_IO() local
269 return blockdev_direct_IO(iocb, inode, iter, nilfs_get_block); in nilfs_direct_IO()
289 static int nilfs_insert_inode_locked(struct inode *inode, in nilfs_insert_inode_locked() argument
297 return insert_inode_locked4(inode, ino, nilfs_iget_test, &args); in nilfs_insert_inode_locked()
300 struct inode *nilfs_new_inode(struct inode *dir, umode_t mode) in nilfs_new_inode()
303 struct inode *inode; in nilfs_new_inode() local
310 inode = new_inode(sb); in nilfs_new_inode()
311 if (unlikely(!inode)) in nilfs_new_inode()
314 mapping_set_gfp_mask(inode->i_mapping, in nilfs_new_inode()
315 mapping_gfp_constraint(inode->i_mapping, ~__GFP_FS)); in nilfs_new_inode()
318 ii = NILFS_I(inode); in nilfs_new_inode()
330 inode_init_owner(&nop_mnt_idmap, inode, dir, mode); in nilfs_new_inode()
331 inode->i_ino = ino; in nilfs_new_inode()
332 simple_inode_init_ts(inode); in nilfs_new_inode()
349 nilfs_set_inode_flags(inode); in nilfs_new_inode()
350 inode->i_generation = get_random_u32(); in nilfs_new_inode()
351 if (nilfs_insert_inode_locked(inode, root, ino) < 0) { in nilfs_new_inode()
356 err = nilfs_init_acl(inode, dir); in nilfs_new_inode()
364 return inode; in nilfs_new_inode()
367 clear_nlink(inode); in nilfs_new_inode()
368 if (inode->i_state & I_NEW) in nilfs_new_inode()
369 unlock_new_inode(inode); in nilfs_new_inode()
370 iput(inode); /* in nilfs_new_inode()
377 make_bad_inode(inode); in nilfs_new_inode()
378 iput(inode); in nilfs_new_inode()
383 void nilfs_set_inode_flags(struct inode *inode) in nilfs_set_inode_flags() argument
385 unsigned int flags = NILFS_I(inode)->i_flags; in nilfs_set_inode_flags()
398 inode_set_flags(inode, new_fl, S_SYNC | S_APPEND | S_IMMUTABLE | in nilfs_set_inode_flags()
402 int nilfs_read_inode_common(struct inode *inode, in nilfs_read_inode_common() argument
405 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_read_inode_common()
408 inode->i_mode = le16_to_cpu(raw_inode->i_mode); in nilfs_read_inode_common()
409 i_uid_write(inode, le32_to_cpu(raw_inode->i_uid)); in nilfs_read_inode_common()
410 i_gid_write(inode, le32_to_cpu(raw_inode->i_gid)); in nilfs_read_inode_common()
411 set_nlink(inode, le16_to_cpu(raw_inode->i_links_count)); in nilfs_read_inode_common()
412 inode->i_size = le64_to_cpu(raw_inode->i_size); in nilfs_read_inode_common()
413 inode_set_atime(inode, le64_to_cpu(raw_inode->i_mtime), in nilfs_read_inode_common()
415 inode_set_ctime(inode, le64_to_cpu(raw_inode->i_ctime), in nilfs_read_inode_common()
417 inode_set_mtime(inode, le64_to_cpu(raw_inode->i_mtime), in nilfs_read_inode_common()
419 if (nilfs_is_metadata_file_inode(inode) && !S_ISREG(inode->i_mode)) in nilfs_read_inode_common()
421 if (inode->i_nlink == 0) in nilfs_read_inode_common()
424 inode->i_blocks = le64_to_cpu(raw_inode->i_blocks); in nilfs_read_inode_common()
428 ii->i_dir_acl = S_ISREG(inode->i_mode) ? in nilfs_read_inode_common()
432 inode->i_generation = le32_to_cpu(raw_inode->i_generation); in nilfs_read_inode_common()
434 if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || in nilfs_read_inode_common()
435 S_ISLNK(inode->i_mode)) { in nilfs_read_inode_common()
447 struct inode *inode) in __nilfs_read_inode() argument
461 err = nilfs_read_inode_common(inode, raw_inode); in __nilfs_read_inode()
465 if (S_ISREG(inode->i_mode)) { in __nilfs_read_inode()
466 inode->i_op = &nilfs_file_inode_operations; in __nilfs_read_inode()
467 inode->i_fop = &nilfs_file_operations; in __nilfs_read_inode()
468 inode->i_mapping->a_ops = &nilfs_aops; in __nilfs_read_inode()
469 } else if (S_ISDIR(inode->i_mode)) { in __nilfs_read_inode()
470 inode->i_op = &nilfs_dir_inode_operations; in __nilfs_read_inode()
471 inode->i_fop = &nilfs_dir_operations; in __nilfs_read_inode()
472 inode->i_mapping->a_ops = &nilfs_aops; in __nilfs_read_inode()
473 } else if (S_ISLNK(inode->i_mode)) { in __nilfs_read_inode()
474 inode->i_op = &nilfs_symlink_inode_operations; in __nilfs_read_inode()
475 inode_nohighmem(inode); in __nilfs_read_inode()
476 inode->i_mapping->a_ops = &nilfs_aops; in __nilfs_read_inode()
477 } else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || in __nilfs_read_inode()
478 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { in __nilfs_read_inode()
479 inode->i_op = &nilfs_special_inode_operations; in __nilfs_read_inode()
481 inode, inode->i_mode, in __nilfs_read_inode()
486 inode->i_mode, ino); in __nilfs_read_inode()
493 nilfs_set_inode_flags(inode); in __nilfs_read_inode()
494 mapping_set_gfp_mask(inode->i_mapping, in __nilfs_read_inode()
495 mapping_gfp_constraint(inode->i_mapping, ~__GFP_FS)); in __nilfs_read_inode()
507 static int nilfs_iget_test(struct inode *inode, void *opaque) in nilfs_iget_test() argument
512 if (args->ino != inode->i_ino || args->root != NILFS_I(inode)->i_root) in nilfs_iget_test()
515 ii = NILFS_I(inode); in nilfs_iget_test()
522 static int nilfs_iget_set(struct inode *inode, void *opaque) in nilfs_iget_set() argument
526 inode->i_ino = args->ino; in nilfs_iget_set()
527 NILFS_I(inode)->i_cno = args->cno; in nilfs_iget_set()
528 NILFS_I(inode)->i_root = args->root; in nilfs_iget_set()
529 NILFS_I(inode)->i_type = args->type; in nilfs_iget_set()
535 struct inode *nilfs_ilookup(struct super_block *sb, struct nilfs_root *root, in nilfs_ilookup()
545 struct inode *nilfs_iget_locked(struct super_block *sb, struct nilfs_root *root, in nilfs_iget_locked()
555 struct inode *nilfs_iget(struct super_block *sb, struct nilfs_root *root, in nilfs_iget()
558 struct inode *inode; in nilfs_iget() local
561 inode = nilfs_iget_locked(sb, root, ino); in nilfs_iget()
562 if (unlikely(!inode)) in nilfs_iget()
565 if (!(inode->i_state & I_NEW)) { in nilfs_iget()
566 if (!inode->i_nlink) { in nilfs_iget()
567 iput(inode); in nilfs_iget()
570 return inode; in nilfs_iget()
573 err = __nilfs_read_inode(sb, root, ino, inode); in nilfs_iget()
575 iget_failed(inode); in nilfs_iget()
578 unlock_new_inode(inode); in nilfs_iget()
579 return inode; in nilfs_iget()
582 struct inode *nilfs_iget_for_gc(struct super_block *sb, unsigned long ino, in nilfs_iget_for_gc()
588 struct inode *inode; in nilfs_iget_for_gc() local
591 inode = iget5_locked(sb, ino, nilfs_iget_test, nilfs_iget_set, &args); in nilfs_iget_for_gc()
592 if (unlikely(!inode)) in nilfs_iget_for_gc()
594 if (!(inode->i_state & I_NEW)) in nilfs_iget_for_gc()
595 return inode; in nilfs_iget_for_gc()
597 err = nilfs_init_gcinode(inode); in nilfs_iget_for_gc()
599 iget_failed(inode); in nilfs_iget_for_gc()
602 unlock_new_inode(inode); in nilfs_iget_for_gc()
603 return inode; in nilfs_iget_for_gc()
616 int nilfs_attach_btree_node_cache(struct inode *inode) in nilfs_attach_btree_node_cache() argument
618 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_attach_btree_node_cache()
619 struct inode *btnc_inode; in nilfs_attach_btree_node_cache()
625 args.ino = inode->i_ino; in nilfs_attach_btree_node_cache()
630 btnc_inode = iget5_locked(inode->i_sb, inode->i_ino, nilfs_iget_test, in nilfs_attach_btree_node_cache()
638 NILFS_I(btnc_inode)->i_assoc_inode = inode; in nilfs_attach_btree_node_cache()
652 void nilfs_detach_btree_node_cache(struct inode *inode) in nilfs_detach_btree_node_cache() argument
654 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_detach_btree_node_cache()
655 struct inode *btnc_inode = ii->i_assoc_inode; in nilfs_detach_btree_node_cache()
676 struct inode *nilfs_iget_for_shadow(struct inode *inode) in nilfs_iget_for_shadow() argument
679 .ino = inode->i_ino, .root = NULL, .cno = 0, in nilfs_iget_for_shadow()
682 struct inode *s_inode; in nilfs_iget_for_shadow()
685 s_inode = iget5_locked(inode->i_sb, inode->i_ino, nilfs_iget_test, in nilfs_iget_for_shadow()
690 return inode; in nilfs_iget_for_shadow()
716 void nilfs_write_inode_common(struct inode *inode, in nilfs_write_inode_common() argument
719 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_write_inode_common()
721 raw_inode->i_mode = cpu_to_le16(inode->i_mode); in nilfs_write_inode_common()
722 raw_inode->i_uid = cpu_to_le32(i_uid_read(inode)); in nilfs_write_inode_common()
723 raw_inode->i_gid = cpu_to_le32(i_gid_read(inode)); in nilfs_write_inode_common()
724 raw_inode->i_links_count = cpu_to_le16(inode->i_nlink); in nilfs_write_inode_common()
725 raw_inode->i_size = cpu_to_le64(inode->i_size); in nilfs_write_inode_common()
726 raw_inode->i_ctime = cpu_to_le64(inode_get_ctime_sec(inode)); in nilfs_write_inode_common()
727 raw_inode->i_mtime = cpu_to_le64(inode_get_mtime_sec(inode)); in nilfs_write_inode_common()
728 raw_inode->i_ctime_nsec = cpu_to_le32(inode_get_ctime_nsec(inode)); in nilfs_write_inode_common()
729 raw_inode->i_mtime_nsec = cpu_to_le32(inode_get_mtime_nsec(inode)); in nilfs_write_inode_common()
730 raw_inode->i_blocks = cpu_to_le64(inode->i_blocks); in nilfs_write_inode_common()
733 raw_inode->i_generation = cpu_to_le32(inode->i_generation); in nilfs_write_inode_common()
741 void nilfs_update_inode(struct inode *inode, struct buffer_head *ibh, int flags) in nilfs_update_inode() argument
743 ino_t ino = inode->i_ino; in nilfs_update_inode()
744 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_update_inode()
745 struct inode *ifile = ii->i_root->ifile; in nilfs_update_inode()
755 nilfs_write_inode_common(inode, raw_inode); in nilfs_update_inode()
757 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in nilfs_update_inode()
759 cpu_to_le64(huge_encode_dev(inode->i_rdev)); in nilfs_update_inode()
796 void nilfs_truncate(struct inode *inode) in nilfs_truncate() argument
801 struct super_block *sb = inode->i_sb; in nilfs_truncate()
802 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_truncate()
806 if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) in nilfs_truncate()
810 blkoff = (inode->i_size + blocksize - 1) >> sb->s_blocksize_bits; in nilfs_truncate()
813 block_truncate_page(inode->i_mapping, inode->i_size, nilfs_get_block); in nilfs_truncate()
817 inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); in nilfs_truncate()
818 if (IS_SYNC(inode)) in nilfs_truncate()
821 nilfs_mark_inode_dirty(inode); in nilfs_truncate()
822 nilfs_set_file_dirty(inode, 0); in nilfs_truncate()
830 static void nilfs_clear_inode(struct inode *inode) in nilfs_clear_inode() argument
832 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_clear_inode()
841 if (nilfs_is_metadata_file_inode(inode)) in nilfs_clear_inode()
842 nilfs_mdt_clear(inode); in nilfs_clear_inode()
848 nilfs_detach_btree_node_cache(inode); in nilfs_clear_inode()
850 if (ii->i_root && inode->i_ino == NILFS_ROOT_INO) in nilfs_clear_inode()
854 void nilfs_evict_inode(struct inode *inode) in nilfs_evict_inode() argument
857 struct super_block *sb = inode->i_sb; in nilfs_evict_inode()
858 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_evict_inode()
862 if (inode->i_nlink || !ii->i_root || unlikely(is_bad_inode(inode))) { in nilfs_evict_inode()
863 truncate_inode_pages_final(&inode->i_data); in nilfs_evict_inode()
864 clear_inode(inode); in nilfs_evict_inode()
865 nilfs_clear_inode(inode); in nilfs_evict_inode()
870 truncate_inode_pages_final(&inode->i_data); in nilfs_evict_inode()
883 clear_inode(inode); in nilfs_evict_inode()
884 nilfs_clear_inode(inode); in nilfs_evict_inode()
891 nilfs_mark_inode_dirty(inode); in nilfs_evict_inode()
892 clear_inode(inode); in nilfs_evict_inode()
894 ret = nilfs_ifile_delete_inode(ii->i_root->ifile, inode->i_ino); in nilfs_evict_inode()
898 nilfs_clear_inode(inode); in nilfs_evict_inode()
900 if (IS_SYNC(inode)) in nilfs_evict_inode()
913 struct inode *inode = d_inode(dentry); in nilfs_setattr() local
914 struct super_block *sb = inode->i_sb; in nilfs_setattr()
926 iattr->ia_size != i_size_read(inode)) { in nilfs_setattr()
927 inode_dio_wait(inode); in nilfs_setattr()
928 truncate_setsize(inode, iattr->ia_size); in nilfs_setattr()
929 nilfs_truncate(inode); in nilfs_setattr()
932 setattr_copy(&nop_mnt_idmap, inode, iattr); in nilfs_setattr()
933 mark_inode_dirty(inode); in nilfs_setattr()
936 err = nilfs_acl_chmod(inode); in nilfs_setattr()
948 int nilfs_permission(struct mnt_idmap *idmap, struct inode *inode, in nilfs_permission() argument
951 struct nilfs_root *root = NILFS_I(inode)->i_root; in nilfs_permission()
957 return generic_permission(&nop_mnt_idmap, inode, mask); in nilfs_permission()
960 int nilfs_load_inode_block(struct inode *inode, struct buffer_head **pbh) in nilfs_load_inode_block() argument
962 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in nilfs_load_inode_block()
963 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_load_inode_block()
970 inode->i_ino, pbh); in nilfs_load_inode_block()
991 int nilfs_inode_dirty(struct inode *inode) in nilfs_inode_dirty() argument
993 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_inode_dirty()
994 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in nilfs_inode_dirty()
1006 int nilfs_set_file_dirty(struct inode *inode, unsigned int nr_dirty) in nilfs_set_file_dirty() argument
1008 struct nilfs_inode_info *ii = NILFS_I(inode); in nilfs_set_file_dirty()
1009 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in nilfs_set_file_dirty()
1023 if (list_empty(&ii->i_dirty) && igrab(inode) == NULL) { in nilfs_set_file_dirty()
1028 nilfs_warn(inode->i_sb, in nilfs_set_file_dirty()
1030 inode->i_ino); in nilfs_set_file_dirty()
1044 int __nilfs_mark_inode_dirty(struct inode *inode, int flags) in __nilfs_mark_inode_dirty() argument
1046 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in __nilfs_mark_inode_dirty()
1057 err = nilfs_load_inode_block(inode, &ibh); in __nilfs_mark_inode_dirty()
1059 nilfs_warn(inode->i_sb, in __nilfs_mark_inode_dirty()
1061 inode->i_ino, err); in __nilfs_mark_inode_dirty()
1064 nilfs_update_inode(inode, ibh, flags); in __nilfs_mark_inode_dirty()
1066 nilfs_mdt_mark_dirty(NILFS_I(inode)->i_root->ifile); in __nilfs_mark_inode_dirty()
1082 void nilfs_dirty_inode(struct inode *inode, int flags) in nilfs_dirty_inode() argument
1085 struct nilfs_mdt_info *mdi = NILFS_MDT(inode); in nilfs_dirty_inode()
1087 if (is_bad_inode(inode)) { in nilfs_dirty_inode()
1088 nilfs_warn(inode->i_sb, in nilfs_dirty_inode()
1094 nilfs_mdt_mark_dirty(inode); in nilfs_dirty_inode()
1097 nilfs_transaction_begin(inode->i_sb, &ti, 0); in nilfs_dirty_inode()
1098 __nilfs_mark_inode_dirty(inode, flags); in nilfs_dirty_inode()
1099 nilfs_transaction_commit(inode->i_sb); /* never fails */ in nilfs_dirty_inode()
1102 int nilfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, in nilfs_fiemap() argument
1105 struct the_nilfs *nilfs = inode->i_sb->s_fs_info; in nilfs_fiemap()
1112 unsigned int blkbits = inode->i_blkbits; in nilfs_fiemap()
1115 ret = fiemap_prep(inode, fieinfo, start, &len, 0); in nilfs_fiemap()
1119 inode_lock(inode); in nilfs_fiemap()
1121 isize = i_size_read(inode); in nilfs_fiemap()
1126 delalloc_blklen = nilfs_find_uncommitted_extent(inode, blkoff, in nilfs_fiemap()
1151 inode, blkoff, &delalloc_blkoff); in nilfs_fiemap()
1167 NILFS_I(inode)->i_bmap, blkoff, &blkphy, maxblocks); in nilfs_fiemap()
1229 inode_unlock(inode); in nilfs_fiemap()