Lines Matching refs:inode
139 static void set_compress_new_inode(struct f2fs_sb_info *sbi, struct inode *dir,
140 struct inode *inode, const unsigned char *name)
153 if (S_ISDIR(inode->i_mode))
179 set_compress_context(inode);
186 F2FS_I(inode)->i_flags |= F2FS_NOCOMP_FL;
187 f2fs_mark_inode_dirty_sync(inode, true);
189 set_compress_context(inode);
196 static void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *inode,
214 file_set_cold(inode);
216 file_set_hot(inode);
219 static struct inode *f2fs_new_inode(struct mnt_idmap *idmap,
220 struct inode *dir, umode_t mode,
225 struct inode *inode;
231 inode = new_inode(dir->i_sb);
232 if (!inode)
242 inode_init_owner(idmap, inode, dir, mode);
244 inode->i_ino = ino;
245 inode->i_blocks = 0;
246 inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
247 F2FS_I(inode)->i_crtime = inode->i_mtime;
248 inode->i_generation = get_random_u32();
250 if (S_ISDIR(inode->i_mode))
251 F2FS_I(inode)->i_current_depth = 1;
253 err = insert_inode_locked(inode);
261 F2FS_I(inode)->i_projid = F2FS_I(dir)->i_projid;
263 F2FS_I(inode)->i_projid = make_kprojid(&init_user_ns,
266 err = fscrypt_prepare_new_inode(dir, inode, &encrypt);
270 err = f2fs_dquot_initialize(inode);
274 set_inode_flag(inode, FI_NEW_INODE);
277 f2fs_set_encrypted_inode(inode);
280 set_inode_flag(inode, FI_EXTRA_ATTR);
281 F2FS_I(inode)->i_extra_isize = F2FS_TOTAL_EXTRA_ATTR_SIZE;
285 set_inode_flag(inode, FI_INLINE_XATTR);
287 if (f2fs_may_inline_dentry(inode))
288 set_inode_flag(inode, FI_INLINE_DENTRY);
291 f2fs_bug_on(sbi, !f2fs_has_extra_attr(inode));
292 if (f2fs_has_inline_xattr(inode))
295 } else if (f2fs_has_inline_xattr(inode) ||
296 f2fs_has_inline_dentry(inode)) {
299 F2FS_I(inode)->i_inline_xattr_size = xattr_size;
301 F2FS_I(inode)->i_flags =
304 if (S_ISDIR(inode->i_mode))
305 F2FS_I(inode)->i_flags |= F2FS_INDEX_FL;
307 if (F2FS_I(inode)->i_flags & F2FS_PROJINHERIT_FL)
308 set_inode_flag(inode, FI_PROJ_INHERIT);
311 set_compress_new_inode(sbi, dir, inode, name);
314 if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode))
315 set_inode_flag(inode, FI_INLINE_DATA);
318 set_file_temperature(sbi, inode, name);
320 stat_inc_inline_xattr(inode);
321 stat_inc_inline_inode(inode);
322 stat_inc_inline_dir(inode);
324 f2fs_set_inode_flags(inode);
326 f2fs_init_extent_tree(inode);
328 trace_f2fs_new_inode(inode, 0);
329 return inode;
332 trace_f2fs_new_inode(inode, err);
333 make_bad_inode(inode);
335 set_inode_flag(inode, FI_FREE_NID);
336 iput(inode);
339 trace_f2fs_new_inode(inode, err);
340 dquot_drop(inode);
341 inode->i_flags |= S_NOQUOTA;
343 set_inode_flag(inode, FI_FREE_NID);
344 clear_nlink(inode);
345 unlock_new_inode(inode);
346 iput(inode);
350 static int f2fs_create(struct mnt_idmap *idmap, struct inode *dir,
354 struct inode *inode;
367 inode = f2fs_new_inode(idmap, dir, mode, dentry->d_name.name);
368 if (IS_ERR(inode))
369 return PTR_ERR(inode);
371 inode->i_op = &f2fs_file_inode_operations;
372 inode->i_fop = &f2fs_file_operations;
373 inode->i_mapping->a_ops = &f2fs_dblock_aops;
374 ino = inode->i_ino;
377 err = f2fs_add_link(dentry, inode);
384 d_instantiate_new(dentry, inode);
392 f2fs_handle_failed_inode(inode);
396 static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
399 struct inode *inode = d_inode(old_dentry);
423 inode_set_ctime_current(inode);
424 ihold(inode);
426 set_inode_flag(inode, FI_INC_LINK);
428 err = f2fs_add_link(dentry, inode);
433 d_instantiate(dentry, inode);
439 clear_inode_flag(inode, FI_INC_LINK);
440 iput(inode);
458 static int __recover_dot_dentries(struct inode *dir, nid_t pino)
468 f2fs_info(sbi, "skip recovering inline_dots inode (ino:%lu, pino:%u) in readonly mountpoint",
474 f2fs_err(sbi, "inconsistent inode status, skip recovering inline_dots inode (ino:%lu, i_mode:%u, pino:%u)",
515 static struct dentry *f2fs_lookup(struct inode *dir, struct dentry *dentry,
518 struct inode *inode = NULL;
555 inode = f2fs_iget(dir->i_sb, ino);
556 if (IS_ERR(inode)) {
557 err = PTR_ERR(inode);
567 if (f2fs_has_inline_dots(inode)) {
568 err = __recover_dot_dentries(inode, dir->i_ino);
573 (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)) &&
574 !fscrypt_has_permitted_context(dir, inode)) {
575 f2fs_warn(F2FS_I_SB(inode), "Inconsistent encryption contexts: %lu/%lu",
576 dir->i_ino, inode->i_ino);
582 if (!inode && IS_CASEFOLDED(dir)) {
592 new = d_splice_alias(inode, dentry);
597 iput(inode);
603 static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
606 struct inode *inode = d_inode(dentry);
621 err = f2fs_dquot_initialize(inode);
641 f2fs_delete_entry(de, page, dir, inode);
657 trace_f2fs_unlink_exit(inode, err);
662 struct inode *inode,
665 const char *link = page_get_link(dentry, inode, done);
676 static int f2fs_symlink(struct mnt_idmap *idmap, struct inode *dir,
680 struct inode *inode;
699 inode = f2fs_new_inode(idmap, dir, S_IFLNK | S_IRWXUGO, NULL);
700 if (IS_ERR(inode))
701 return PTR_ERR(inode);
703 if (IS_ENCRYPTED(inode))
704 inode->i_op = &f2fs_encrypted_symlink_inode_operations;
706 inode->i_op = &f2fs_symlink_inode_operations;
707 inode_nohighmem(inode);
708 inode->i_mapping->a_ops = &f2fs_dblock_aops;
711 err = f2fs_add_link(dentry, inode);
715 f2fs_alloc_nid_done(sbi, inode->i_ino);
717 err = fscrypt_encrypt_symlink(inode, symname, len, &disk_link);
721 err = page_symlink(inode, disk_link.name, disk_link.len);
724 d_instantiate_new(dentry, inode);
736 filemap_write_and_wait_range(inode->i_mapping, 0,
749 f2fs_handle_failed_inode(inode);
756 static int f2fs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
760 struct inode *inode;
770 inode = f2fs_new_inode(idmap, dir, S_IFDIR | mode, NULL);
771 if (IS_ERR(inode))
772 return PTR_ERR(inode);
774 inode->i_op = &f2fs_dir_inode_operations;
775 inode->i_fop = &f2fs_dir_operations;
776 inode->i_mapping->a_ops = &f2fs_dblock_aops;
777 mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS);
779 set_inode_flag(inode, FI_INC_LINK);
781 err = f2fs_add_link(dentry, inode);
786 f2fs_alloc_nid_done(sbi, inode->i_ino);
788 d_instantiate_new(dentry, inode);
797 clear_inode_flag(inode, FI_INC_LINK);
798 f2fs_handle_failed_inode(inode);
802 static int f2fs_rmdir(struct inode *dir, struct dentry *dentry)
804 struct inode *inode = d_inode(dentry);
806 if (f2fs_empty_dir(inode))
811 static int f2fs_mknod(struct mnt_idmap *idmap, struct inode *dir,
815 struct inode *inode;
827 inode = f2fs_new_inode(idmap, dir, mode, NULL);
828 if (IS_ERR(inode))
829 return PTR_ERR(inode);
831 init_special_inode(inode, inode->i_mode, rdev);
832 inode->i_op = &f2fs_special_inode_operations;
835 err = f2fs_add_link(dentry, inode);
840 f2fs_alloc_nid_done(sbi, inode->i_ino);
842 d_instantiate_new(dentry, inode);
850 f2fs_handle_failed_inode(inode);
854 static int __f2fs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
856 struct inode **new_inode, struct f2fs_filename *fname)
859 struct inode *inode;
866 inode = f2fs_new_inode(idmap, dir, mode, NULL);
867 if (IS_ERR(inode))
868 return PTR_ERR(inode);
871 init_special_inode(inode, inode->i_mode, WHITEOUT_DEV);
872 inode->i_op = &f2fs_special_inode_operations;
874 inode->i_op = &f2fs_file_inode_operations;
875 inode->i_fop = &f2fs_file_operations;
876 inode->i_mapping->a_ops = &f2fs_dblock_aops;
884 err = f2fs_do_tmpfile(inode, dir, fname);
892 f2fs_add_orphan_inode(inode);
893 f2fs_alloc_nid_done(sbi, inode->i_ino);
896 f2fs_i_links_write(inode, false);
898 spin_lock(&inode->i_lock);
899 inode->i_state |= I_LINKABLE;
900 spin_unlock(&inode->i_lock);
903 d_tmpfile(file, inode);
905 f2fs_i_links_write(inode, false);
909 unlock_new_inode(inode);
912 *new_inode = inode;
920 f2fs_handle_failed_inode(inode);
924 static int f2fs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
941 struct inode *dir, struct inode **whiteout,
948 int f2fs_get_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
949 struct inode **new_inode)
955 static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
956 struct dentry *old_dentry, struct inode *new_dir,
960 struct inode *old_inode = d_inode(old_dentry);
961 struct inode *new_inode = d_inode(new_dentry);
962 struct inode *whiteout = NULL;
1153 static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
1154 struct inode *new_dir, struct dentry *new_dentry)
1157 struct inode *old_inode = d_inode(old_dentry);
1158 struct inode *new_inode = d_inode(new_dentry);
1252 /* update directory entry info of old dir inode */
1271 /* update directory entry info of new dir inode */
1319 struct inode *old_dir, struct dentry *old_dentry,
1320 struct inode *new_dir, struct dentry *new_dentry,
1346 struct inode *inode,
1355 page = read_mapping_page(inode->i_mapping, 0, NULL);
1359 target = fscrypt_get_symlink(inode, page_address(page),
1360 inode->i_sb->s_blocksize, done);