diff options
author | Nikolay Borisov <n.borisov.lkml@gmail.com> | 2017-01-17 17:31:31 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-02-14 09:50:54 -0500 |
commit | 9ca5fbfbb92e91933510f0903b2492e5e7b45464 (patch) | |
tree | 0122a6e124b56a00c227c2ec266efec79717670a | |
parent | 0f8939b8ac8623760c078d41282526de143ee623 (diff) |
btrfs: Make btrfs_log_new_name take btrfs_inode
Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | fs/btrfs/inode.c | 8 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 18 | ||||
-rw-r--r-- | fs/btrfs/tree-log.h | 2 |
3 files changed, 13 insertions, 15 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 45134a1519a6..fe8da3974ff8 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -6597,7 +6597,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, | |||
6597 | goto fail; | 6597 | goto fail; |
6598 | } | 6598 | } |
6599 | d_instantiate(dentry, inode); | 6599 | d_instantiate(dentry, inode); |
6600 | btrfs_log_new_name(trans, inode, NULL, parent); | 6600 | btrfs_log_new_name(trans, BTRFS_I(inode), NULL, parent); |
6601 | } | 6601 | } |
6602 | 6602 | ||
6603 | btrfs_balance_delayed_items(fs_info); | 6603 | btrfs_balance_delayed_items(fs_info); |
@@ -9654,13 +9654,13 @@ static int btrfs_rename_exchange(struct inode *old_dir, | |||
9654 | 9654 | ||
9655 | if (root_log_pinned) { | 9655 | if (root_log_pinned) { |
9656 | parent = new_dentry->d_parent; | 9656 | parent = new_dentry->d_parent; |
9657 | btrfs_log_new_name(trans, old_inode, old_dir, parent); | 9657 | btrfs_log_new_name(trans, BTRFS_I(old_inode), BTRFS_I(old_dir), parent); |
9658 | btrfs_end_log_trans(root); | 9658 | btrfs_end_log_trans(root); |
9659 | root_log_pinned = false; | 9659 | root_log_pinned = false; |
9660 | } | 9660 | } |
9661 | if (dest_log_pinned) { | 9661 | if (dest_log_pinned) { |
9662 | parent = old_dentry->d_parent; | 9662 | parent = old_dentry->d_parent; |
9663 | btrfs_log_new_name(trans, new_inode, new_dir, parent); | 9663 | btrfs_log_new_name(trans, BTRFS_I(new_inode), BTRFS_I(new_dir), parent); |
9664 | btrfs_end_log_trans(dest); | 9664 | btrfs_end_log_trans(dest); |
9665 | dest_log_pinned = false; | 9665 | dest_log_pinned = false; |
9666 | } | 9666 | } |
@@ -9926,7 +9926,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9926 | if (log_pinned) { | 9926 | if (log_pinned) { |
9927 | struct dentry *parent = new_dentry->d_parent; | 9927 | struct dentry *parent = new_dentry->d_parent; |
9928 | 9928 | ||
9929 | btrfs_log_new_name(trans, old_inode, old_dir, parent); | 9929 | btrfs_log_new_name(trans, BTRFS_I(old_inode), BTRFS_I(old_dir), parent); |
9930 | btrfs_end_log_trans(root); | 9930 | btrfs_end_log_trans(root); |
9931 | log_pinned = false; | 9931 | log_pinned = false; |
9932 | } | 9932 | } |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 37adad5dabd6..df822908f2be 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -5809,30 +5809,28 @@ void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans, | |||
5809 | * full transaction commit is required. | 5809 | * full transaction commit is required. |
5810 | */ | 5810 | */ |
5811 | int btrfs_log_new_name(struct btrfs_trans_handle *trans, | 5811 | int btrfs_log_new_name(struct btrfs_trans_handle *trans, |
5812 | struct inode *inode, struct inode *old_dir, | 5812 | struct btrfs_inode *inode, struct btrfs_inode *old_dir, |
5813 | struct dentry *parent) | 5813 | struct dentry *parent) |
5814 | { | 5814 | { |
5815 | struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); | 5815 | struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb); |
5816 | struct btrfs_root * root = BTRFS_I(inode)->root; | 5816 | struct btrfs_root * root = inode->root; |
5817 | 5817 | ||
5818 | /* | 5818 | /* |
5819 | * this will force the logging code to walk the dentry chain | 5819 | * this will force the logging code to walk the dentry chain |
5820 | * up for the file | 5820 | * up for the file |
5821 | */ | 5821 | */ |
5822 | if (S_ISREG(inode->i_mode)) | 5822 | if (S_ISREG(inode->vfs_inode.i_mode)) |
5823 | BTRFS_I(inode)->last_unlink_trans = trans->transid; | 5823 | inode->last_unlink_trans = trans->transid; |
5824 | 5824 | ||
5825 | /* | 5825 | /* |
5826 | * if this inode hasn't been logged and directory we're renaming it | 5826 | * if this inode hasn't been logged and directory we're renaming it |
5827 | * from hasn't been logged, we don't need to log it | 5827 | * from hasn't been logged, we don't need to log it |
5828 | */ | 5828 | */ |
5829 | if (BTRFS_I(inode)->logged_trans <= | 5829 | if (inode->logged_trans <= fs_info->last_trans_committed && |
5830 | fs_info->last_trans_committed && | 5830 | (!old_dir || old_dir->logged_trans <= fs_info->last_trans_committed)) |
5831 | (!old_dir || BTRFS_I(old_dir)->logged_trans <= | ||
5832 | fs_info->last_trans_committed)) | ||
5833 | return 0; | 5831 | return 0; |
5834 | 5832 | ||
5835 | return btrfs_log_inode_parent(trans, root, inode, parent, 0, | 5833 | return btrfs_log_inode_parent(trans, root, &inode->vfs_inode, parent, 0, |
5836 | LLONG_MAX, 1, NULL); | 5834 | LLONG_MAX, 1, NULL); |
5837 | } | 5835 | } |
5838 | 5836 | ||
diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h index 9b5bf904d511..7f34d2d77865 100644 --- a/fs/btrfs/tree-log.h +++ b/fs/btrfs/tree-log.h | |||
@@ -85,6 +85,6 @@ void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans, | |||
85 | void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans, | 85 | void btrfs_record_snapshot_destroy(struct btrfs_trans_handle *trans, |
86 | struct btrfs_inode *dir); | 86 | struct btrfs_inode *dir); |
87 | int btrfs_log_new_name(struct btrfs_trans_handle *trans, | 87 | int btrfs_log_new_name(struct btrfs_trans_handle *trans, |
88 | struct inode *inode, struct inode *old_dir, | 88 | struct btrfs_inode *inode, struct btrfs_inode *old_dir, |
89 | struct dentry *parent); | 89 | struct dentry *parent); |
90 | #endif | 90 | #endif |