linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nikolay Borisov <n.borisov.lkml@gmail.com>
To: dsterba@suse.com
Cc: linux-btrfs@vger.kernel.org, Nikolay Borisov <n.borisov.lkml@gmail.com>
Subject: [PATCH 10/24] btrfs: Make copy_items take btrfs_inode
Date: Thu, 12 Jan 2017 16:00:36 +0200	[thread overview]
Message-ID: <1484229650-24554-11-git-send-email-n.borisov.lkml@gmail.com> (raw)
In-Reply-To: <1484229650-24554-1-git-send-email-n.borisov.lkml@gmail.com>

Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
---
 fs/btrfs/tree-log.c | 40 +++++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 2b44835b4dea..4b0bbe05cdae 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -3612,16 +3612,16 @@ static int log_inode_item(struct btrfs_trans_handle *trans,
 }
 
 static noinline int copy_items(struct btrfs_trans_handle *trans,
-			       struct inode *inode,
+			       struct btrfs_inode *inode,
 			       struct btrfs_path *dst_path,
 			       struct btrfs_path *src_path, u64 *last_extent,
 			       int start_slot, int nr, int inode_only,
 			       u64 logged_isize)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
 	unsigned long src_offset;
 	unsigned long dst_offset;
-	struct btrfs_root *log = BTRFS_I(inode)->root->log_root;
+	struct btrfs_root *log = inode->root->log_root;
 	struct btrfs_file_extent_item *extent;
 	struct btrfs_inode_item *inode_item;
 	struct extent_buffer *src = src_path->nodes[0];
@@ -3632,7 +3632,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 	char *ins_data;
 	int i;
 	struct list_head ordered_sums;
-	int skip_csum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
+	int skip_csum = inode->flags & BTRFS_INODE_NODATASUM;
 	bool has_extents = false;
 	bool need_find_last_extent = true;
 	bool done = false;
@@ -3674,7 +3674,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 						    dst_path->slots[0],
 						    struct btrfs_inode_item);
 			fill_inode_item(trans, dst_path->nodes[0], inode_item,
-					inode, inode_only == LOG_INODE_EXISTS,
+					&inode->vfs_inode, inode_only == LOG_INODE_EXISTS,
 					logged_isize);
 		} else {
 			copy_extent_buffer(dst_path->nodes[0], src, dst_offset,
@@ -3782,7 +3782,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 	if (need_find_last_extent) {
 		u64 len;
 
-		ret = btrfs_prev_leaf(BTRFS_I(inode)->root, src_path);
+		ret = btrfs_prev_leaf(inode->root, src_path);
 		if (ret < 0)
 			return ret;
 		if (ret)
@@ -3791,7 +3791,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 			src_path->slots[0]--;
 		src = src_path->nodes[0];
 		btrfs_item_key_to_cpu(src, &key, src_path->slots[0]);
-		if (key.objectid != btrfs_ino(BTRFS_I(inode)) ||
+		if (key.objectid != btrfs_ino(inode) ||
 		    key.type != BTRFS_EXTENT_DATA_KEY)
 			goto fill_holes;
 		extent = btrfs_item_ptr(src, src_path->slots[0],
@@ -3824,8 +3824,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 	if (need_find_last_extent) {
 		/* btrfs_prev_leaf could return 1 without releasing the path */
 		btrfs_release_path(src_path);
-		ret = btrfs_search_slot(NULL, BTRFS_I(inode)->root, &first_key,
-					src_path, 0, 0);
+		ret = btrfs_search_slot(NULL, inode->root, &first_key, src_path, 0, 0);
 		if (ret < 0)
 			return ret;
 		ASSERT(ret == 0);
@@ -3845,7 +3844,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 		u64 extent_end;
 
 		if (i >= btrfs_header_nritems(src_path->nodes[0])) {
-			ret = btrfs_next_leaf(BTRFS_I(inode)->root, src_path);
+			ret = btrfs_next_leaf(inode->root, src_path);
 			if (ret < 0)
 				return ret;
 			ASSERT(ret == 0);
@@ -3856,7 +3855,7 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 		btrfs_item_key_to_cpu(src, &key, i);
 		if (!btrfs_comp_cpu_keys(&key, &last_key))
 			done = true;
-		if (key.objectid != btrfs_ino(BTRFS_I(inode)) ||
+		if (key.objectid != btrfs_ino(inode) ||
 		    key.type != BTRFS_EXTENT_DATA_KEY) {
 			i++;
 			continue;
@@ -3879,9 +3878,8 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,
 		}
 		offset = *last_extent;
 		len = key.offset - *last_extent;
-		ret = btrfs_insert_file_extent(trans, log, btrfs_ino(BTRFS_I(inode)),
-					       offset, 0, 0, len, 0, len, 0,
-					       0, 0);
+		ret = btrfs_insert_file_extent(trans, log, btrfs_ino(inode),
+					       offset, 0, 0, len, 0, len, 0, 0, 0);
 		if (ret)
 			break;
 		*last_extent = extent_end;
@@ -4305,7 +4303,7 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans,
 			if (ins_nr > 0) {
 				u64 last_extent = 0;
 
-				ret = copy_items(trans, inode, dst_path, path,
+				ret = copy_items(trans, BTRFS_I(inode), dst_path, path,
 						 &last_extent, start_slot,
 						 ins_nr, 1, 0);
 				/* can't be 1, extent items aren't processed */
@@ -4335,7 +4333,7 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans,
 	if (ins_nr > 0) {
 		u64 last_extent = 0;
 
-		ret = copy_items(trans, inode, dst_path, path,
+		ret = copy_items(trans, BTRFS_I(inode), dst_path, path,
 				 &last_extent, start_slot,
 				 ins_nr, 1, 0);
 		/* can't be 1, extent items aren't processed */
@@ -4777,7 +4775,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 					ins_nr = 1;
 					ins_start_slot = path->slots[0];
 				}
-				ret = copy_items(trans, inode, dst_path, path,
+				ret = copy_items(trans, BTRFS_I(inode), dst_path, path,
 						 &last_extent, ins_start_slot,
 						 ins_nr, inode_only,
 						 logged_isize);
@@ -4830,7 +4828,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 		if (min_key.type == BTRFS_XATTR_ITEM_KEY) {
 			if (ins_nr == 0)
 				goto next_slot;
-			ret = copy_items(trans, inode, dst_path, path,
+			ret = copy_items(trans, BTRFS_I(inode), dst_path, path,
 					 &last_extent, ins_start_slot,
 					 ins_nr, inode_only, logged_isize);
 			if (ret < 0) {
@@ -4855,7 +4853,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 			goto next_slot;
 		}
 
-		ret = copy_items(trans, inode, dst_path, path, &last_extent,
+		ret = copy_items(trans, BTRFS_I(inode), dst_path, path, &last_extent,
 				 ins_start_slot, ins_nr, inode_only,
 				 logged_isize);
 		if (ret < 0) {
@@ -4879,7 +4877,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 			goto again;
 		}
 		if (ins_nr) {
-			ret = copy_items(trans, inode, dst_path, path,
+			ret = copy_items(trans, BTRFS_I(inode), dst_path, path,
 					 &last_extent, ins_start_slot,
 					 ins_nr, inode_only, logged_isize);
 			if (ret < 0) {
@@ -4901,7 +4899,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
 		}
 	}
 	if (ins_nr) {
-		ret = copy_items(trans, inode, dst_path, path, &last_extent,
+		ret = copy_items(trans, BTRFS_I(inode), dst_path, path, &last_extent,
 				 ins_start_slot, ins_nr, inode_only,
 				 logged_isize);
 		if (ret < 0) {
-- 
2.7.4


  parent reply	other threads:[~2017-01-12 14:01 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-12 14:00 [PATCH 00/24] tree-log inode vs btrfs_inode cleanups Nikolay Borisov
2017-01-12 14:00 ` [PATCH 01/24] btrfs: Make btrfs_must_commit_transaction take btrfs_inode Nikolay Borisov
2017-01-12 14:00 ` [PATCH 02/24] btrfs: Make btrfs_record_unlink_dir " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 03/24] btrfs: Make btrfs_record_snapshot_destroy " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 04/24] btrfs: Make btrfs_inode_in_log " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 05/24] btrfs: Make btrfs_log_new_name " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 06/24] btrfs: Make btrfs_del_dir_entries_in_log " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 07/24] btrfs: Make btrfs_del_inode_ref " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 08/24] btrfs: Make logged_inode_size " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 09/24] btrfs: Make btrfs_check_ref_name_override " Nikolay Borisov
2017-01-12 14:00 ` Nikolay Borisov [this message]
2017-01-12 14:00 ` [PATCH 11/24] btrfs: Make btrfs_log_all_xattrs " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 12/24] btrfs: Make btrfs_log_trailing_hole " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 13/24] btrfs: Make btrfs_get_logged_extents " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 14/24] btrfs: Make btrfs_log_changed_extents " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 15/24] btrfs: Make log_dir_items " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 16/24] btrfs: Make log_directory_changes " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 17/24] btrfs: Make log_new_dir_dentries " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 18/24] btrfs: Make btrfs_unlink_inode " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 19/24] btrfs: Make drop_one_dir_item " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 20/24] btrfs: Make __add_inode_ref " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 21/24] btrfs: Make log_inode_item " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 22/24] btrfs: Make btrfs_log_inode " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 23/24] btrfs: Make count_inode_extrefs " Nikolay Borisov
2017-01-12 14:00 ` [PATCH 24/24] btrfs: Make count_inode_refs " Nikolay Borisov
2017-01-17 16:15 ` [PATCH 00/24] tree-log inode vs btrfs_inode cleanups David Sterba
2017-01-17 22:31   ` [PATCHv2 " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 01/24] btrfs: Make btrfs_must_commit_transaction take btrfs_inode Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 02/24] btrfs: Make btrfs_record_unlink_dir " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 03/24] btrfs: Make btrfs_record_snapshot_destroy " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 04/24] btrfs: Make btrfs_inode_in_log " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 05/24] btrfs: Make btrfs_log_new_name " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 06/24] btrfs: Make btrfs_del_dir_entries_in_log " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 07/24] btrfs: Make btrfs_del_inode_ref " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 08/24] btrfs: Make logged_inode_size " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 09/24] btrfs: Make btrfs_check_ref_name_override " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 10/24] btrfs: Make copy_items " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 11/24] btrfs: Make btrfs_log_all_xattrs " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 12/24] btrfs: Make btrfs_log_trailing_hole " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 13/24] btrfs: Make btrfs_get_logged_extents " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 14/24] btrfs: Make btrfs_log_changed_extents " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 15/24] btrfs: Make log_dir_items " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 16/24] btrfs: Make log_directory_changes " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 17/24] btrfs: Make log_new_dir_dentries " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 18/24] btrfs: Make btrfs_unlink_inode " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 19/24] btrfs: Make drop_one_dir_item " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 20/24] btrfs: Make __add_inode_ref " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 21/24] btrfs: Make log_inode_item " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 22/24] btrfs: Make btrfs_log_inode " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 23/24] btrfs: Make count_inode_extrefs " Nikolay Borisov
2017-01-17 22:31     ` [PATCHv2 24/24] btrfs: Make count_inode_refs " Nikolay Borisov
2017-01-19 18:21     ` [PATCHv2 00/24] tree-log inode vs btrfs_inode cleanups David Sterba
2017-01-20  7:22       ` Nikolay Borisov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1484229650-24554-11-git-send-email-n.borisov.lkml@gmail.com \
    --to=n.borisov.lkml@gmail.com \
    --cc=dsterba@suse.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).