> > > > if (dirty) > > __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); > > I still think the __mark_inode_dirty should just be moved into the one > caller that needs it. I found that the dirty flag will be used in the next few lines, so I keep this function inside. If I move it outside, the drity flag should be passed in as well. @@ -774,6 +780,9 @@ static void *dax_insert_entry(struct xa_state *xas, if (dirty) xas_set_mark(xas, PAGECACHE_TAG_DIRTY); + if (cow) + xas_set_mark(xas, PAGECACHE_TAG_TOWRITE); + xas_unlock_irq(xas); return entry; } So, may I ask what's your purpose for doing in that way? -- Thanks, Ruan Shiyang.