aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/f2fs/dir.c8
-rw-r--r--fs/f2fs/f2fs.h5
-rw-r--r--fs/f2fs/inode.c8
-rw-r--r--fs/f2fs/node.c30
-rw-r--r--fs/f2fs/recovery.c6
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
262static void init_dent_inode(const struct qstr *name, struct page *ipage) 262static 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
501static inline struct f2fs_inode *F2FS_INODE(struct page *page)
502{
503 return &((struct f2fs_node *)page_address(page))->i;
504}
505
501static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) 506static 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
176void update_inode(struct inode *inode, struct page *node_page) 174void 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
731skip_partial: 731skip_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,
1533int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) 1533int 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
41static int recover_dentry(struct page *ipage, struct inode *inode) 41static 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
106static int recover_inode(struct inode *inode, struct page *node_page) 105static 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;