diff options
| author | Rodrigo Vivi <[email protected]> | 2018-07-23 09:13:12 -0700 | 
|---|---|---|
| committer | Rodrigo Vivi <[email protected]> | 2018-07-23 09:13:12 -0700 | 
| commit | c74a7469f97c0f40b46e82ee979f9fb1bb6e847c (patch) | |
| tree | f2690a1a916b73ef94657fbf0e0141ae57701825 /fs/f2fs/namei.c | |
| parent | 6f15a7de86c8cf2dc09fc9e6d07047efa40ef809 (diff) | |
| parent | 500775074f88d9cf5416bed2ca19592812d62c41 (diff) | |
Merge drm/drm-next into drm-intel-next-queued
We need a backmerge to get DP_DPCD_REV_14 before we push other
i915 changes to dinq that could break compilation.
Signed-off-by: Rodrigo Vivi <[email protected]>
Diffstat (limited to 'fs/f2fs/namei.c')
| -rw-r--r-- | fs/f2fs/namei.c | 83 | 
1 files changed, 43 insertions, 40 deletions
| diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index d5098efe577c..231b7f3ea7d3 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -37,7 +37,7 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)  		return ERR_PTR(-ENOMEM);  	f2fs_lock_op(sbi); -	if (!alloc_nid(sbi, &ino)) { +	if (!f2fs_alloc_nid(sbi, &ino)) {  		f2fs_unlock_op(sbi);  		err = -ENOSPC;  		goto fail; @@ -50,10 +50,13 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)  	inode->i_ino = ino;  	inode->i_blocks = 0; -	inode->i_mtime = inode->i_atime = inode->i_ctime = -			F2FS_I(inode)->i_crtime = current_time(inode); +	inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode); +	F2FS_I(inode)->i_crtime = timespec64_to_timespec(inode->i_mtime);  	inode->i_generation = sbi->s_next_generation++; +	if (S_ISDIR(inode->i_mode)) +		F2FS_I(inode)->i_current_depth = 1; +  	err = insert_inode_locked(inode);  	if (err) {  		err = -EINVAL; @@ -61,7 +64,7 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)  	}  	if (f2fs_sb_has_project_quota(sbi->sb) && -		(F2FS_I(dir)->i_flags & FS_PROJINHERIT_FL)) +		(F2FS_I(dir)->i_flags & F2FS_PROJINHERIT_FL))  		F2FS_I(inode)->i_projid = F2FS_I(dir)->i_projid;  	else  		F2FS_I(inode)->i_projid = make_kprojid(&init_user_ns, @@ -116,9 +119,9 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)  		f2fs_mask_flags(mode, F2FS_I(dir)->i_flags & F2FS_FL_INHERITED);  	if (S_ISDIR(inode->i_mode)) -		F2FS_I(inode)->i_flags |= FS_INDEX_FL; +		F2FS_I(inode)->i_flags |= F2FS_INDEX_FL; -	if (F2FS_I(inode)->i_flags & FS_PROJINHERIT_FL) +	if (F2FS_I(inode)->i_flags & F2FS_PROJINHERIT_FL)  		set_inode_flag(inode, FI_PROJ_INHERIT);  	trace_f2fs_new_inode(inode, 0); @@ -193,7 +196,7 @@ static inline void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *  	up_read(&sbi->sb_lock);  } -int update_extension_list(struct f2fs_sb_info *sbi, const char *name, +int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,  							bool hot, bool set)  {  	__u8 (*extlist)[F2FS_EXTENSION_LEN] = sbi->raw_super->extension_list; @@ -292,10 +295,9 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,  		goto out;  	f2fs_unlock_op(sbi); -	alloc_nid_done(sbi, ino); +	f2fs_alloc_nid_done(sbi, ino); -	d_instantiate(dentry, inode); -	unlock_new_inode(inode); +	d_instantiate_new(dentry, inode);  	if (IS_DIRSYNC(dir))  		f2fs_sync_fs(sbi->sb, 1); @@ -303,7 +305,7 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,  	f2fs_balance_fs(sbi, true);  	return 0;  out: -	handle_failed_inode(inode); +	f2fs_handle_failed_inode(inode);  	return err;  } @@ -398,7 +400,7 @@ static int __recover_dot_dentries(struct inode *dir, nid_t pino)  		err = PTR_ERR(page);  		goto out;  	} else { -		err = __f2fs_add_link(dir, &dot, NULL, dir->i_ino, S_IFDIR); +		err = f2fs_do_add_link(dir, &dot, NULL, dir->i_ino, S_IFDIR);  		if (err)  			goto out;  	} @@ -409,7 +411,7 @@ static int __recover_dot_dentries(struct inode *dir, nid_t pino)  	else if (IS_ERR(page))  		err = PTR_ERR(page);  	else -		err = __f2fs_add_link(dir, &dotdot, NULL, pino, S_IFDIR); +		err = f2fs_do_add_link(dir, &dotdot, NULL, pino, S_IFDIR);  out:  	if (!err)  		clear_inode_flag(dir, FI_INLINE_DOTS); @@ -521,7 +523,7 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)  	f2fs_balance_fs(sbi, true);  	f2fs_lock_op(sbi); -	err = acquire_orphan_inode(sbi); +	err = f2fs_acquire_orphan_inode(sbi);  	if (err) {  		f2fs_unlock_op(sbi);  		f2fs_put_page(page, 0); @@ -586,9 +588,9 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,  	f2fs_lock_op(sbi);  	err = f2fs_add_link(dentry, inode);  	if (err) -		goto out_handle_failed_inode; +		goto out_f2fs_handle_failed_inode;  	f2fs_unlock_op(sbi); -	alloc_nid_done(sbi, inode->i_ino); +	f2fs_alloc_nid_done(sbi, inode->i_ino);  	err = fscrypt_encrypt_symlink(inode, symname, len, &disk_link);  	if (err) @@ -597,8 +599,7 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,  	err = page_symlink(inode, disk_link.name, disk_link.len);  err_out: -	d_instantiate(dentry, inode); -	unlock_new_inode(inode); +	d_instantiate_new(dentry, inode);  	/*  	 * Let's flush symlink data in order to avoid broken symlink as much as @@ -622,8 +623,8 @@ err_out:  	f2fs_balance_fs(sbi, true);  	goto out_free_encrypted_link; -out_handle_failed_inode: -	handle_failed_inode(inode); +out_f2fs_handle_failed_inode: +	f2fs_handle_failed_inode(inode);  out_free_encrypted_link:  	if (disk_link.name != (unsigned char *)symname)  		kfree(disk_link.name); @@ -659,10 +660,9 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)  		goto out_fail;  	f2fs_unlock_op(sbi); -	alloc_nid_done(sbi, inode->i_ino); +	f2fs_alloc_nid_done(sbi, inode->i_ino); -	d_instantiate(dentry, inode); -	unlock_new_inode(inode); +	d_instantiate_new(dentry, inode);  	if (IS_DIRSYNC(dir))  		f2fs_sync_fs(sbi->sb, 1); @@ -672,7 +672,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)  out_fail:  	clear_inode_flag(inode, FI_INC_LINK); -	handle_failed_inode(inode); +	f2fs_handle_failed_inode(inode);  	return err;  } @@ -711,10 +711,9 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,  		goto out;  	f2fs_unlock_op(sbi); -	alloc_nid_done(sbi, inode->i_ino); +	f2fs_alloc_nid_done(sbi, inode->i_ino); -	d_instantiate(dentry, inode); -	unlock_new_inode(inode); +	d_instantiate_new(dentry, inode);  	if (IS_DIRSYNC(dir))  		f2fs_sync_fs(sbi->sb, 1); @@ -722,7 +721,7 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,  	f2fs_balance_fs(sbi, true);  	return 0;  out: -	handle_failed_inode(inode); +	f2fs_handle_failed_inode(inode);  	return err;  } @@ -751,7 +750,7 @@ static int __f2fs_tmpfile(struct inode *dir, struct dentry *dentry,  	}  	f2fs_lock_op(sbi); -	err = acquire_orphan_inode(sbi); +	err = f2fs_acquire_orphan_inode(sbi);  	if (err)  		goto out; @@ -763,8 +762,8 @@ static int __f2fs_tmpfile(struct inode *dir, struct dentry *dentry,  	 * add this non-linked tmpfile to orphan list, in this way we could  	 * remove all unused data of tmpfile after abnormal power-off.  	 */ -	add_orphan_inode(inode); -	alloc_nid_done(sbi, inode->i_ino); +	f2fs_add_orphan_inode(inode); +	f2fs_alloc_nid_done(sbi, inode->i_ino);  	if (whiteout) {  		f2fs_i_links_write(inode, false); @@ -780,9 +779,9 @@ static int __f2fs_tmpfile(struct inode *dir, struct dentry *dentry,  	return 0;  release_out: -	release_orphan_inode(sbi); +	f2fs_release_orphan_inode(sbi);  out: -	handle_failed_inode(inode); +	f2fs_handle_failed_inode(inode);  	return err;  } @@ -889,7 +888,7 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,  		f2fs_lock_op(sbi); -		err = acquire_orphan_inode(sbi); +		err = f2fs_acquire_orphan_inode(sbi);  		if (err)  			goto put_out_dir; @@ -903,9 +902,9 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,  		up_write(&F2FS_I(new_inode)->i_sem);  		if (!new_inode->i_nlink) -			add_orphan_inode(new_inode); +			f2fs_add_orphan_inode(new_inode);  		else -			release_orphan_inode(sbi); +			f2fs_release_orphan_inode(sbi);  	} else {  		f2fs_balance_fs(sbi, true); @@ -973,8 +972,12 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,  			f2fs_put_page(old_dir_page, 0);  		f2fs_i_links_write(old_dir, false);  	} -	if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) -		add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO); +	if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) { +		f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO); +		if (S_ISDIR(old_inode->i_mode)) +			f2fs_add_ino_entry(sbi, old_inode->i_ino, +							TRANS_DIR_INO); +	}  	f2fs_unlock_op(sbi); @@ -1125,8 +1128,8 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,  	f2fs_mark_inode_dirty_sync(new_dir, false);  	if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) { -		add_ino_entry(sbi, old_dir->i_ino, TRANS_DIR_INO); -		add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO); +		f2fs_add_ino_entry(sbi, old_dir->i_ino, TRANS_DIR_INO); +		f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO);  	}  	f2fs_unlock_op(sbi); |