[f2fs] Write name in ipage

When update inode, i_name will be written.
Also, add assert to check if names in dentry and ipage are same.
If they are different, one of ipage and dentry is written incorrectly.

Test:
- fx test fs-tests large-fs-tests

Change-Id: I0f10bf5ce80d975d60ab55f1d4909b18fc406c88
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/f2fs/+/540142
Reviewed-by: Brett Wilson <brettw@google.com>
diff --git a/namei.cc b/namei.cc
index ea7a8a4..5128ae5 100644
--- a/namei.cc
+++ b/namei.cc
@@ -406,7 +406,7 @@
   }
 
   old_vnode = old_vn_ref.get();
-  old_vnode->i_name_sp_ = oldname;
+  ZX_ASSERT(old_vnode->i_name_sp_.GetStringView().compare(oldname) == 0);
 
   if (!old_vnode->IsDirectory() && (src_must_be_dir || dst_must_be_dir))
     return ZX_ERR_NOT_DIR;
@@ -454,7 +454,7 @@
       }
 
       new_vnode = new_vn_ref.get();
-      new_vnode->i_name_sp_ = newname;
+      ZX_ASSERT(new_vnode->i_name_sp_.GetStringView().compare(newname) == 0);
 
       if (!new_vnode->IsDirectory() && (src_must_be_dir || dst_must_be_dir))
         return ZX_ERR_NOT_DIR;
@@ -483,6 +483,7 @@
         return ZX_ERR_NOT_EMPTY;
       }
 
+      old_vnode->i_name_sp_ = newname;
       new_dir->SetLink(new_entry, new_page, old_vnode);
 
       new_vnode->i_ctime_ = cur_time;
diff --git a/vnode.cc b/vnode.cc
index 88af9db..1af9a3a 100644
--- a/vnode.cc
+++ b/vnode.cc
@@ -340,6 +340,10 @@
   ri->i_xattr_nid = CpuToLe(fi_.i_xattr_nid);
   ri->i_flags = CpuToLe(fi_.i_flags);
   ri->i_generation = CpuToLe(i_generation_);
+
+  ri->i_namelen = CpuToLe(i_name_sp_.GetStringView().length());
+  memcpy(ri->i_name, i_name_sp_.GetStringView().data(), i_name_sp_.GetStringView().length());
+
 #if 0  // porting needed
   // set_page_dirty(node_page);
 #else