+ * When closing an mmap()'ed file ensure the inode atime, mtime, and
+ * ctime are written to disk. These values may have been updated in
+ * memory by filemap_page_mkwrite() bit are not yet reflected in the
+ * znode since writepage() may occur after the close.
+ */
+ if (zp->z_is_mapped) {
+ vattr_t *vap;
+
+ vap = kmem_zalloc(sizeof(vattr_t), KM_SLEEP);
+ vap->va_mask = ATTR_ATIME | ATTR_MTIME | ATTR_CTIME;
+ vap->va_atime = ip->i_atime;
+ vap->va_mtime = ip->i_mtime;
+ vap->va_ctime = ip->i_ctime;
+
+ error = zfs_setattr(ip, vap, 0, cr);
+
+ kmem_free(vap, sizeof(vattr_t));
+ }
+
+ /*