On Thu, Aug 29, 2019 at 07:59:22PM +0800, Gao Xiang wrote: > On Thu, Aug 29, 2019 at 03:24:26AM -0700, Christoph Hellwig wrote: > > [] > > > > > > + > > > + /* fill last page if inline data is available */ > > > + err = fill_inline_data(inode, data, ofs); > > > > Well, I think you should move the is_inode_flat_inline and > > (S_ISLNK(inode->i_mode) && inode->i_size < PAGE_SIZE) checks from that > > helper here, as otherwise you make everyone wonder why you'd always > > fill out the inline data. > > Currently, fill_inline_data() only fills for fast symlink, > later we can fill any tail-end block (such as dir block) > for our requirements. So change it when that later changes actually come in. And even then having the checks outside the function is a lot more obvious. > And I think that is minor. The problem is that each of these issues might appear minor on their own. But combined a lot of the coding style choices lead to code that is more suitable an obsfucated code contest than the Linux kernel as trying to understand even just a few places requires jumping through tons of helpers with misleading names and spread over various files. > The consideration is simply because iget_locked performs better > than iget5_locked. In what benchmark do the differences show up?