diff options
author | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-05-19 20:42:28 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-05-28 02:03:01 -0400 |
commit | 1646cfac952ff87fcbc18a77164472aa61d08094 (patch) | |
tree | 5ec3a1a864e8067d9b16a6f11df3177b18207cab /fs/f2fs | |
parent | 0a364af18f27b86869149c4d128262ec1e0ccb25 (diff) |
f2fs: skip get_node_page if locked node page is passed
If get_dnode_of_data gets a locked node page, let's skip redundant
get_node_page calls.
This is for the futher enhancement.
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/node.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 96415345a428..f63f0a4046c6 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c | |||
@@ -408,10 +408,13 @@ int get_dnode_of_data(struct dnode_of_data *dn, pgoff_t index, int mode) | |||
408 | level = get_node_path(index, offset, noffset); | 408 | level = get_node_path(index, offset, noffset); |
409 | 409 | ||
410 | nids[0] = dn->inode->i_ino; | 410 | nids[0] = dn->inode->i_ino; |
411 | npage[0] = get_node_page(sbi, nids[0]); | 411 | npage[0] = dn->inode_page; |
412 | if (IS_ERR(npage[0])) | ||
413 | return PTR_ERR(npage[0]); | ||
414 | 412 | ||
413 | if (!npage[0]) { | ||
414 | npage[0] = get_node_page(sbi, nids[0]); | ||
415 | if (IS_ERR(npage[0])) | ||
416 | return PTR_ERR(npage[0]); | ||
417 | } | ||
415 | parent = npage[0]; | 418 | parent = npage[0]; |
416 | if (level != 0) | 419 | if (level != 0) |
417 | nids[1] = get_nid(parent, offset[0], true); | 420 | nids[1] = get_nid(parent, offset[0], true); |