diff options
Diffstat (limited to 'libglusterfs/src/gf-dirent.c')
-rw-r--r-- | libglusterfs/src/gf-dirent.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/libglusterfs/src/gf-dirent.c b/libglusterfs/src/gf-dirent.c index 3b42a0813d5..f6fd3ab54ee 100644 --- a/libglusterfs/src/gf-dirent.c +++ b/libglusterfs/src/gf-dirent.c @@ -67,6 +67,25 @@ gf_dirent_free (gf_dirent_t *entries) } } +void +gf_link_inode_from_dirent (xlator_t *this, inode_t *parent, gf_dirent_t *entry) +{ + inode_t *link_inode = NULL; + inode_t *tmp = NULL; + + if (!entry->inode) + return; + link_inode = inode_link (entry->inode, parent, + entry->d_name, &entry->d_stat); + if (!link_inode) + return; + + inode_lookup (link_inode); + tmp = entry->inode; + entry->inode = link_inode; + inode_unref (tmp); +} + /* TODO: Currently, with this function, we will be breaking the policy of 1-1 mapping of kernel nlookup refs with our inode_t's nlookup count. @@ -77,20 +96,9 @@ gf_link_inodes_from_dirent (xlator_t *this, inode_t *parent, gf_dirent_t *entries) { gf_dirent_t *entry = NULL; - inode_t *link_inode = NULL; - inode_t *tmp = NULL; list_for_each_entry (entry, &entries->list, list) { - if (entry->inode) { - link_inode = inode_link (entry->inode, parent, - entry->d_name, &entry->d_stat); - if (!link_inode) - continue; - inode_lookup (link_inode); - tmp = entry->inode; - entry->inode = link_inode; - inode_unref (tmp); - } + gf_link_inode_from_dirent (this, parent, entry); } return 0; |