Lines Matching refs:inode

44 static u64 ufs_frag_map(struct inode *inode, sector_t frag, bool needs_lock);
46 static int ufs_block_to_path(struct inode *inode, sector_t i_block, sector_t offsets[4]) in ufs_block_to_path() argument
48 struct ufs_sb_private_info *uspi = UFS_SB(inode->i_sb)->s_uspi; in ufs_block_to_path()
73 ufs_warning(inode->i_sb, "ufs_block_to_path", "block > big"); in ufs_block_to_path()
83 static u64 ufs_frag_map(struct inode *inode, sector_t frag, bool needs_lock) in ufs_frag_map() argument
85 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs_frag_map()
86 struct super_block *sb = inode->i_sb; in ufs_frag_map()
91 int depth = ufs_block_to_path(inode, frag >> uspi->s_fpbshift, offsets); in ufs_frag_map()
173 ufs_inode_getfrag(struct inode *inode, u64 fragment, in ufs_inode_getfrag() argument
177 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs_inode_getfrag()
178 struct super_block *sb = inode->i_sb; in ufs_inode_getfrag()
186 "metadata %d\n", inode->i_ino, (unsigned long long)fragment, in ufs_inode_getfrag()
231 tmp = ufs_new_fragments(inode, p2, lastfrag, in ufs_inode_getfrag()
249 tmp = ufs_new_fragments (inode, p, fragment - blockoff, in ufs_inode_getfrag()
257 tmp = ufs_new_fragments(inode, p, fragment - in ufs_inode_getfrag()
272 tmp = ufs_new_fragments(inode, p, fragment - blockoff, in ufs_inode_getfrag()
293 inode->i_ctime = CURRENT_TIME_SEC; in ufs_inode_getfrag()
294 if (IS_SYNC(inode)) in ufs_inode_getfrag()
295 ufs_sync_inode (inode); in ufs_inode_getfrag()
296 mark_inode_dirty(inode); in ufs_inode_getfrag()
330 ufs_inode_getblock(struct inode *inode, struct buffer_head *bh, in ufs_inode_getblock() argument
334 struct super_block *sb = inode->i_sb; in ufs_inode_getblock()
345 inode->i_ino, (unsigned long long)fragment, in ufs_inode_getblock()
382 tmp = ufs_new_fragments(inode, p, ufs_blknum(new_fragment), goal, in ufs_inode_getblock()
399 if (IS_SYNC(inode)) in ufs_inode_getblock()
401 inode->i_ctime = CURRENT_TIME_SEC; in ufs_inode_getblock()
402 mark_inode_dirty(inode); in ufs_inode_getblock()
415 int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buffer_head *bh_result, int cr… in ufs_getfrag_block() argument
417 struct super_block * sb = inode->i_sb; in ufs_getfrag_block()
427 phys64 = ufs_frag_map(inode, fragment, needs_lock); in ufs_getfrag_block()
444 UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment); in ufs_getfrag_block()
458 ufs_inode_getfrag(inode, x, fragment, 1, &err, &phys, &new,\ in ufs_getfrag_block()
461 ufs_inode_getfrag(inode, x, fragment, uspi->s_fpb, &err, NULL, NULL,\ in ufs_getfrag_block()
464 ufs_inode_getblock(inode, bh, x, fragment, \ in ufs_getfrag_block()
467 ufs_inode_getblock(inode, bh, x, fragment, \ in ufs_getfrag_block()
531 struct inode *inode = mapping->host; in ufs_write_failed() local
533 if (to > inode->i_size) in ufs_write_failed()
534 truncate_pagecache(inode, inode->i_size); in ufs_write_failed()
564 static void ufs_set_inode_ops(struct inode *inode) in ufs_set_inode_ops() argument
566 if (S_ISREG(inode->i_mode)) { in ufs_set_inode_ops()
567 inode->i_op = &ufs_file_inode_operations; in ufs_set_inode_ops()
568 inode->i_fop = &ufs_file_operations; in ufs_set_inode_ops()
569 inode->i_mapping->a_ops = &ufs_aops; in ufs_set_inode_ops()
570 } else if (S_ISDIR(inode->i_mode)) { in ufs_set_inode_ops()
571 inode->i_op = &ufs_dir_inode_operations; in ufs_set_inode_ops()
572 inode->i_fop = &ufs_dir_operations; in ufs_set_inode_ops()
573 inode->i_mapping->a_ops = &ufs_aops; in ufs_set_inode_ops()
574 } else if (S_ISLNK(inode->i_mode)) { in ufs_set_inode_ops()
575 if (!inode->i_blocks) in ufs_set_inode_ops()
576 inode->i_op = &ufs_fast_symlink_inode_operations; in ufs_set_inode_ops()
578 inode->i_op = &ufs_symlink_inode_operations; in ufs_set_inode_ops()
579 inode->i_mapping->a_ops = &ufs_aops; in ufs_set_inode_ops()
582 init_special_inode(inode, inode->i_mode, in ufs_set_inode_ops()
583 ufs_get_inode_dev(inode->i_sb, UFS_I(inode))); in ufs_set_inode_ops()
586 static int ufs1_read_inode(struct inode *inode, struct ufs_inode *ufs_inode) in ufs1_read_inode() argument
588 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs1_read_inode()
589 struct super_block *sb = inode->i_sb; in ufs1_read_inode()
595 inode->i_mode = mode = fs16_to_cpu(sb, ufs_inode->ui_mode); in ufs1_read_inode()
596 set_nlink(inode, fs16_to_cpu(sb, ufs_inode->ui_nlink)); in ufs1_read_inode()
597 if (inode->i_nlink == 0) { in ufs1_read_inode()
598 ufs_error (sb, "ufs_read_inode", "inode %lu has zero nlink\n", inode->i_ino); in ufs1_read_inode()
605 i_uid_write(inode, ufs_get_inode_uid(sb, ufs_inode)); in ufs1_read_inode()
606 i_gid_write(inode, ufs_get_inode_gid(sb, ufs_inode)); in ufs1_read_inode()
608 inode->i_size = fs64_to_cpu(sb, ufs_inode->ui_size); in ufs1_read_inode()
609 inode->i_atime.tv_sec = fs32_to_cpu(sb, ufs_inode->ui_atime.tv_sec); in ufs1_read_inode()
610 inode->i_ctime.tv_sec = fs32_to_cpu(sb, ufs_inode->ui_ctime.tv_sec); in ufs1_read_inode()
611 inode->i_mtime.tv_sec = fs32_to_cpu(sb, ufs_inode->ui_mtime.tv_sec); in ufs1_read_inode()
612 inode->i_mtime.tv_nsec = 0; in ufs1_read_inode()
613 inode->i_atime.tv_nsec = 0; in ufs1_read_inode()
614 inode->i_ctime.tv_nsec = 0; in ufs1_read_inode()
615 inode->i_blocks = fs32_to_cpu(sb, ufs_inode->ui_blocks); in ufs1_read_inode()
616 inode->i_generation = fs32_to_cpu(sb, ufs_inode->ui_gen); in ufs1_read_inode()
622 if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { in ufs1_read_inode()
633 static int ufs2_read_inode(struct inode *inode, struct ufs2_inode *ufs2_inode) in ufs2_read_inode() argument
635 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs2_read_inode()
636 struct super_block *sb = inode->i_sb; in ufs2_read_inode()
639 UFSD("Reading ufs2 inode, ino %lu\n", inode->i_ino); in ufs2_read_inode()
643 inode->i_mode = mode = fs16_to_cpu(sb, ufs2_inode->ui_mode); in ufs2_read_inode()
644 set_nlink(inode, fs16_to_cpu(sb, ufs2_inode->ui_nlink)); in ufs2_read_inode()
645 if (inode->i_nlink == 0) { in ufs2_read_inode()
646 ufs_error (sb, "ufs_read_inode", "inode %lu has zero nlink\n", inode->i_ino); in ufs2_read_inode()
653 i_uid_write(inode, fs32_to_cpu(sb, ufs2_inode->ui_uid)); in ufs2_read_inode()
654 i_gid_write(inode, fs32_to_cpu(sb, ufs2_inode->ui_gid)); in ufs2_read_inode()
656 inode->i_size = fs64_to_cpu(sb, ufs2_inode->ui_size); in ufs2_read_inode()
657 inode->i_atime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_atime); in ufs2_read_inode()
658 inode->i_ctime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_ctime); in ufs2_read_inode()
659 inode->i_mtime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_mtime); in ufs2_read_inode()
660 inode->i_atime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_atimensec); in ufs2_read_inode()
661 inode->i_ctime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_ctimensec); in ufs2_read_inode()
662 inode->i_mtime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_mtimensec); in ufs2_read_inode()
663 inode->i_blocks = fs64_to_cpu(sb, ufs2_inode->ui_blocks); in ufs2_read_inode()
664 inode->i_generation = fs32_to_cpu(sb, ufs2_inode->ui_gen); in ufs2_read_inode()
671 if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { in ufs2_read_inode()
682 struct inode *ufs_iget(struct super_block *sb, unsigned long ino) in ufs_iget()
687 struct inode *inode; in ufs_iget() local
698 inode = iget_locked(sb, ino); in ufs_iget()
699 if (!inode) in ufs_iget()
701 if (!(inode->i_state & I_NEW)) in ufs_iget()
702 return inode; in ufs_iget()
704 ufsi = UFS_I(inode); in ufs_iget()
706 bh = sb_bread(sb, uspi->s_sbbase + ufs_inotofsba(inode->i_ino)); in ufs_iget()
709 inode->i_ino); in ufs_iget()
715 err = ufs2_read_inode(inode, in ufs_iget()
716 ufs2_inode + ufs_inotofsbo(inode->i_ino)); in ufs_iget()
720 err = ufs1_read_inode(inode, in ufs_iget()
721 ufs_inode + ufs_inotofsbo(inode->i_ino)); in ufs_iget()
726 inode->i_version++; in ufs_iget()
728 (inode->i_size + uspi->s_fsize - 1) >> uspi->s_fshift; in ufs_iget()
732 ufs_set_inode_ops(inode); in ufs_iget()
737 unlock_new_inode(inode); in ufs_iget()
738 return inode; in ufs_iget()
741 iget_failed(inode); in ufs_iget()
745 static void ufs1_update_inode(struct inode *inode, struct ufs_inode *ufs_inode) in ufs1_update_inode() argument
747 struct super_block *sb = inode->i_sb; in ufs1_update_inode()
748 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs1_update_inode()
750 ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); in ufs1_update_inode()
751 ufs_inode->ui_nlink = cpu_to_fs16(sb, inode->i_nlink); in ufs1_update_inode()
753 ufs_set_inode_uid(sb, ufs_inode, i_uid_read(inode)); in ufs1_update_inode()
754 ufs_set_inode_gid(sb, ufs_inode, i_gid_read(inode)); in ufs1_update_inode()
756 ufs_inode->ui_size = cpu_to_fs64(sb, inode->i_size); in ufs1_update_inode()
757 ufs_inode->ui_atime.tv_sec = cpu_to_fs32(sb, inode->i_atime.tv_sec); in ufs1_update_inode()
759 ufs_inode->ui_ctime.tv_sec = cpu_to_fs32(sb, inode->i_ctime.tv_sec); in ufs1_update_inode()
761 ufs_inode->ui_mtime.tv_sec = cpu_to_fs32(sb, inode->i_mtime.tv_sec); in ufs1_update_inode()
763 ufs_inode->ui_blocks = cpu_to_fs32(sb, inode->i_blocks); in ufs1_update_inode()
765 ufs_inode->ui_gen = cpu_to_fs32(sb, inode->i_generation); in ufs1_update_inode()
772 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) { in ufs1_update_inode()
775 } else if (inode->i_blocks) { in ufs1_update_inode()
784 if (!inode->i_nlink) in ufs1_update_inode()
788 static void ufs2_update_inode(struct inode *inode, struct ufs2_inode *ufs_inode) in ufs2_update_inode() argument
790 struct super_block *sb = inode->i_sb; in ufs2_update_inode()
791 struct ufs_inode_info *ufsi = UFS_I(inode); in ufs2_update_inode()
794 ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); in ufs2_update_inode()
795 ufs_inode->ui_nlink = cpu_to_fs16(sb, inode->i_nlink); in ufs2_update_inode()
797 ufs_inode->ui_uid = cpu_to_fs32(sb, i_uid_read(inode)); in ufs2_update_inode()
798 ufs_inode->ui_gid = cpu_to_fs32(sb, i_gid_read(inode)); in ufs2_update_inode()
800 ufs_inode->ui_size = cpu_to_fs64(sb, inode->i_size); in ufs2_update_inode()
801 ufs_inode->ui_atime = cpu_to_fs64(sb, inode->i_atime.tv_sec); in ufs2_update_inode()
802 ufs_inode->ui_atimensec = cpu_to_fs32(sb, inode->i_atime.tv_nsec); in ufs2_update_inode()
803 ufs_inode->ui_ctime = cpu_to_fs64(sb, inode->i_ctime.tv_sec); in ufs2_update_inode()
804 ufs_inode->ui_ctimensec = cpu_to_fs32(sb, inode->i_ctime.tv_nsec); in ufs2_update_inode()
805 ufs_inode->ui_mtime = cpu_to_fs64(sb, inode->i_mtime.tv_sec); in ufs2_update_inode()
806 ufs_inode->ui_mtimensec = cpu_to_fs32(sb, inode->i_mtime.tv_nsec); in ufs2_update_inode()
808 ufs_inode->ui_blocks = cpu_to_fs64(sb, inode->i_blocks); in ufs2_update_inode()
810 ufs_inode->ui_gen = cpu_to_fs32(sb, inode->i_generation); in ufs2_update_inode()
812 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) { in ufs2_update_inode()
815 } else if (inode->i_blocks) { in ufs2_update_inode()
823 if (!inode->i_nlink) in ufs2_update_inode()
828 static int ufs_update_inode(struct inode * inode, int do_sync) in ufs_update_inode() argument
830 struct super_block *sb = inode->i_sb; in ufs_update_inode()
834 UFSD("ENTER, ino %lu\n", inode->i_ino); in ufs_update_inode()
836 if (inode->i_ino < UFS_ROOTINO || in ufs_update_inode()
837 inode->i_ino > (uspi->s_ncg * uspi->s_ipg)) { in ufs_update_inode()
838 ufs_warning (sb, "ufs_read_inode", "bad inode number (%lu)\n", inode->i_ino); in ufs_update_inode()
842 bh = sb_bread(sb, ufs_inotofsba(inode->i_ino)); in ufs_update_inode()
844 ufs_warning (sb, "ufs_read_inode", "unable to read inode %lu\n", inode->i_ino); in ufs_update_inode()
850 ufs2_update_inode(inode, in ufs_update_inode()
851 ufs2_inode + ufs_inotofsbo(inode->i_ino)); in ufs_update_inode()
855 ufs1_update_inode(inode, ufs_inode + ufs_inotofsbo(inode->i_ino)); in ufs_update_inode()
867 int ufs_write_inode(struct inode *inode, struct writeback_control *wbc) in ufs_write_inode() argument
870 lock_ufs(inode->i_sb); in ufs_write_inode()
871 ret = ufs_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL); in ufs_write_inode()
872 unlock_ufs(inode->i_sb); in ufs_write_inode()
876 int ufs_sync_inode (struct inode *inode) in ufs_sync_inode() argument
878 return ufs_update_inode (inode, 1); in ufs_sync_inode()
881 void ufs_evict_inode(struct inode * inode) in ufs_evict_inode() argument
885 if (!inode->i_nlink && !is_bad_inode(inode)) in ufs_evict_inode()
888 truncate_inode_pages_final(&inode->i_data); in ufs_evict_inode()
892 lock_ufs(inode->i_sb); in ufs_evict_inode()
893 mark_inode_dirty(inode); in ufs_evict_inode()
894 ufs_update_inode(inode, IS_SYNC(inode)); in ufs_evict_inode()
895 old_i_size = inode->i_size; in ufs_evict_inode()
896 inode->i_size = 0; in ufs_evict_inode()
897 if (inode->i_blocks && ufs_truncate(inode, old_i_size)) in ufs_evict_inode()
898 ufs_warning(inode->i_sb, __func__, "ufs_truncate failed\n"); in ufs_evict_inode()
899 unlock_ufs(inode->i_sb); in ufs_evict_inode()
902 invalidate_inode_buffers(inode); in ufs_evict_inode()
903 clear_inode(inode); in ufs_evict_inode()
906 lock_ufs(inode->i_sb); in ufs_evict_inode()
907 ufs_free_inode(inode); in ufs_evict_inode()
908 unlock_ufs(inode->i_sb); in ufs_evict_inode()