diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/dir.c | 8 | ||||
-rw-r--r-- | fs/f2fs/f2fs.h | 5 | ||||
-rw-r--r-- | fs/f2fs/inode.c | 8 | ||||
-rw-r--r-- | fs/f2fs/node.c | 30 | ||||
-rw-r--r-- | fs/f2fs/recovery.c | 6 |
5 files changed, 28 insertions, 29 deletions
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index f0b463049444..6da77e5c753b 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c | |||
@@ -261,12 +261,12 @@ void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, | |||
261 | 261 | ||
262 | static void init_dent_inode(const struct qstr *name, struct page *ipage) | 262 | static void init_dent_inode(const struct qstr *name, struct page *ipage) |
263 | { | 263 | { |
264 | struct f2fs_node *rn; | 264 | struct f2fs_inode *ri; |
265 | 265 | ||
266 | /* copy name info. to this inode page */ | 266 | /* copy name info. to this inode page */ |
267 | rn = F2FS_NODE(ipage); | 267 | ri = F2FS_INODE(ipage); |
268 | rn->i.i_namelen = cpu_to_le32(name->len); | 268 | ri->i_namelen = cpu_to_le32(name->len); |
269 | memcpy(rn->i.i_name, name->name, name->len); | 269 | memcpy(ri->i_name, name->name, name->len); |
270 | set_page_dirty(ipage); | 270 | set_page_dirty(ipage); |
271 | } | 271 | } |
272 | 272 | ||
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index ba91186823dd..1a06f0aaa7d9 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h | |||
@@ -498,6 +498,11 @@ static inline struct f2fs_node *F2FS_NODE(struct page *page) | |||
498 | return (struct f2fs_node *)page_address(page); | 498 | return (struct f2fs_node *)page_address(page); |
499 | } | 499 | } |
500 | 500 | ||
501 | static inline struct f2fs_inode *F2FS_INODE(struct page *page) | ||
502 | { | ||
503 | return &((struct f2fs_node *)page_address(page))->i; | ||
504 | } | ||
505 | |||
501 | static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) | 506 | static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) |
502 | { | 507 | { |
503 | return (struct f2fs_nm_info *)(sbi->nm_info); | 508 | return (struct f2fs_nm_info *)(sbi->nm_info); |
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index d0eaa9faeca0..a91f45177cd9 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c | |||
@@ -67,7 +67,6 @@ static int do_read_inode(struct inode *inode) | |||
67 | struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); | 67 | struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); |
68 | struct f2fs_inode_info *fi = F2FS_I(inode); | 68 | struct f2fs_inode_info *fi = F2FS_I(inode); |
69 | struct page *node_page; | 69 | struct page *node_page; |
70 | struct f2fs_node *rn; | ||
71 | struct f2fs_inode *ri; | 70 | struct f2fs_inode *ri; |
72 | 71 | ||
73 | /* Check if ino is within scope */ | 72 | /* Check if ino is within scope */ |
@@ -81,8 +80,7 @@ static int do_read_inode(struct inode *inode) | |||
81 | if (IS_ERR(node_page)) | 80 | if (IS_ERR(node_page)) |
82 | return PTR_ERR(node_page); | 81 | return PTR_ERR(node_page); |
83 | 82 | ||
84 | rn = F2FS_NODE(node_page); | 83 | ri = F2FS_INODE(node_page); |
85 | ri = &(rn->i); | ||
86 | 84 | ||
87 | inode->i_mode = le16_to_cpu(ri->i_mode); | 85 | inode->i_mode = le16_to_cpu(ri->i_mode); |
88 | i_uid_write(inode, le32_to_cpu(ri->i_uid)); | 86 | i_uid_write(inode, le32_to_cpu(ri->i_uid)); |
@@ -175,13 +173,11 @@ bad_inode: | |||
175 | 173 | ||
176 | void update_inode(struct inode *inode, struct page *node_page) | 174 | void update_inode(struct inode *inode, struct page *node_page) |
177 | { | 175 | { |
178 | struct f2fs_node *rn; | ||
179 | struct f2fs_inode *ri; | 176 | struct f2fs_inode *ri; |
180 | 177 | ||
181 | f2fs_wait_on_page_writeback(node_page, NODE, false); | 178 | f2fs_wait_on_page_writeback(node_page, NODE, false); |
182 | 179 | ||
183 | rn = F2FS_NODE(node_page); | 180 | ri = F2FS_INODE(node_page); |
184 | ri = &(rn->i); | ||
185 | 181 | ||
186 | ri->i_mode = cpu_to_le16(inode->i_mode); | 182 | ri->i_mode = cpu_to_le16(inode->i_mode); |
187 | ri->i_advise = F2FS_I(inode)->i_advise; | 183 | ri->i_advise = F2FS_I(inode)->i_advise; |
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index e8fe52d6073c..9405a17a671e 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c | |||
@@ -684,7 +684,7 @@ int truncate_inode_blocks(struct inode *inode, pgoff_t from) | |||
684 | int err = 0, cont = 1; | 684 | int err = 0, cont = 1; |
685 | int level, offset[4], noffset[4]; | 685 | int level, offset[4], noffset[4]; |
686 | unsigned int nofs = 0; | 686 | unsigned int nofs = 0; |
687 | struct f2fs_node *rn; | 687 | struct f2fs_inode *ri; |
688 | struct dnode_of_data dn; | 688 | struct dnode_of_data dn; |
689 | struct page *page; | 689 | struct page *page; |
690 | 690 | ||
@@ -701,7 +701,7 @@ restart: | |||
701 | set_new_dnode(&dn, inode, page, NULL, 0); | 701 | set_new_dnode(&dn, inode, page, NULL, 0); |
702 | unlock_page(page); | 702 | unlock_page(page); |
703 | 703 | ||
704 | rn = F2FS_NODE(page); | 704 | ri = F2FS_INODE(page); |
705 | switch (level) { | 705 | switch (level) { |
706 | case 0: | 706 | case 0: |
707 | case 1: | 707 | case 1: |
@@ -711,7 +711,7 @@ restart: | |||
711 | nofs = noffset[1]; | 711 | nofs = noffset[1]; |
712 | if (!offset[level - 1]) | 712 | if (!offset[level - 1]) |
713 | goto skip_partial; | 713 | goto skip_partial; |
714 | err = truncate_partial_nodes(&dn, &rn->i, offset, level); | 714 | err = truncate_partial_nodes(&dn, ri, offset, level); |
715 | if (err < 0 && err != -ENOENT) | 715 | if (err < 0 && err != -ENOENT) |
716 | goto fail; | 716 | goto fail; |
717 | nofs += 1 + NIDS_PER_BLOCK; | 717 | nofs += 1 + NIDS_PER_BLOCK; |
@@ -720,7 +720,7 @@ restart: | |||
720 | nofs = 5 + 2 * NIDS_PER_BLOCK; | 720 | nofs = 5 + 2 * NIDS_PER_BLOCK; |
721 | if (!offset[level - 1]) | 721 | if (!offset[level - 1]) |
722 | goto skip_partial; | 722 | goto skip_partial; |
723 | err = truncate_partial_nodes(&dn, &rn->i, offset, level); | 723 | err = truncate_partial_nodes(&dn, ri, offset, level); |
724 | if (err < 0 && err != -ENOENT) | 724 | if (err < 0 && err != -ENOENT) |
725 | goto fail; | 725 | goto fail; |
726 | break; | 726 | break; |
@@ -730,7 +730,7 @@ restart: | |||
730 | 730 | ||
731 | skip_partial: | 731 | skip_partial: |
732 | while (cont) { | 732 | while (cont) { |
733 | dn.nid = le32_to_cpu(rn->i.i_nid[offset[0] - NODE_DIR1_BLOCK]); | 733 | dn.nid = le32_to_cpu(ri->i_nid[offset[0] - NODE_DIR1_BLOCK]); |
734 | switch (offset[0]) { | 734 | switch (offset[0]) { |
735 | case NODE_DIR1_BLOCK: | 735 | case NODE_DIR1_BLOCK: |
736 | case NODE_DIR2_BLOCK: | 736 | case NODE_DIR2_BLOCK: |
@@ -753,14 +753,14 @@ skip_partial: | |||
753 | if (err < 0 && err != -ENOENT) | 753 | if (err < 0 && err != -ENOENT) |
754 | goto fail; | 754 | goto fail; |
755 | if (offset[1] == 0 && | 755 | if (offset[1] == 0 && |
756 | rn->i.i_nid[offset[0] - NODE_DIR1_BLOCK]) { | 756 | ri->i_nid[offset[0] - NODE_DIR1_BLOCK]) { |
757 | lock_page(page); | 757 | lock_page(page); |
758 | if (unlikely(page->mapping != node_mapping)) { | 758 | if (unlikely(page->mapping != node_mapping)) { |
759 | f2fs_put_page(page, 1); | 759 | f2fs_put_page(page, 1); |
760 | goto restart; | 760 | goto restart; |
761 | } | 761 | } |
762 | wait_on_page_writeback(page); | 762 | wait_on_page_writeback(page); |
763 | rn->i.i_nid[offset[0] - NODE_DIR1_BLOCK] = 0; | 763 | ri->i_nid[offset[0] - NODE_DIR1_BLOCK] = 0; |
764 | set_page_dirty(page); | 764 | set_page_dirty(page); |
765 | unlock_page(page); | 765 | unlock_page(page); |
766 | } | 766 | } |
@@ -1533,7 +1533,7 @@ void recover_node_page(struct f2fs_sb_info *sbi, struct page *page, | |||
1533 | int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) | 1533 | int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) |
1534 | { | 1534 | { |
1535 | struct address_space *mapping = sbi->node_inode->i_mapping; | 1535 | struct address_space *mapping = sbi->node_inode->i_mapping; |
1536 | struct f2fs_node *src, *dst; | 1536 | struct f2fs_inode *src, *dst; |
1537 | nid_t ino = ino_of_node(page); | 1537 | nid_t ino = ino_of_node(page); |
1538 | struct node_info old_ni, new_ni; | 1538 | struct node_info old_ni, new_ni; |
1539 | struct page *ipage; | 1539 | struct page *ipage; |
@@ -1549,14 +1549,14 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) | |||
1549 | SetPageUptodate(ipage); | 1549 | SetPageUptodate(ipage); |
1550 | fill_node_footer(ipage, ino, ino, 0, true); | 1550 | fill_node_footer(ipage, ino, ino, 0, true); |
1551 | 1551 | ||
1552 | src = F2FS_NODE(page); | 1552 | src = F2FS_INODE(page); |
1553 | dst = F2FS_NODE(ipage); | 1553 | dst = F2FS_INODE(ipage); |
1554 | 1554 | ||
1555 | memcpy(dst, src, (unsigned long)&src->i.i_ext - (unsigned long)&src->i); | 1555 | memcpy(dst, src, (unsigned long)&src->i_ext - (unsigned long)src); |
1556 | dst->i.i_size = 0; | 1556 | dst->i_size = 0; |
1557 | dst->i.i_blocks = cpu_to_le64(1); | 1557 | dst->i_blocks = cpu_to_le64(1); |
1558 | dst->i.i_links = cpu_to_le32(1); | 1558 | dst->i_links = cpu_to_le32(1); |
1559 | dst->i.i_xattr_nid = 0; | 1559 | dst->i_xattr_nid = 0; |
1560 | 1560 | ||
1561 | new_ni = old_ni; | 1561 | new_ni = old_ni; |
1562 | new_ni.ino = ino; | 1562 | new_ni.ino = ino; |
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c index 4d411a26b85d..96e690b6f0fa 100644 --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c | |||
@@ -40,8 +40,7 @@ static struct fsync_inode_entry *get_fsync_inode(struct list_head *head, | |||
40 | 40 | ||
41 | static int recover_dentry(struct page *ipage, struct inode *inode) | 41 | static int recover_dentry(struct page *ipage, struct inode *inode) |
42 | { | 42 | { |
43 | struct f2fs_node *raw_node = F2FS_NODE(ipage); | 43 | struct f2fs_inode *raw_inode = F2FS_INODE(ipage); |
44 | struct f2fs_inode *raw_inode = &(raw_node->i); | ||
45 | nid_t pino = le32_to_cpu(raw_inode->i_pino); | 44 | nid_t pino = le32_to_cpu(raw_inode->i_pino); |
46 | struct f2fs_dir_entry *de; | 45 | struct f2fs_dir_entry *de; |
47 | struct qstr name; | 46 | struct qstr name; |
@@ -105,8 +104,7 @@ out: | |||
105 | 104 | ||
106 | static int recover_inode(struct inode *inode, struct page *node_page) | 105 | static int recover_inode(struct inode *inode, struct page *node_page) |
107 | { | 106 | { |
108 | struct f2fs_node *raw_node = F2FS_NODE(node_page); | 107 | struct f2fs_inode *raw_inode = F2FS_INODE(node_page); |
109 | struct f2fs_inode *raw_inode = &(raw_node->i); | ||
110 | 108 | ||
111 | if (!IS_INODE(node_page)) | 109 | if (!IS_INODE(node_page)) |
112 | return 0; | 110 | return 0; |