lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 12 Jan 2021 19:45:06 +0800 From: Xiaoguang Wang <xiaoguang.wang@...ux.alibaba.com> To: Ext4 Developers List <linux-ext4@...r.kernel.org> Cc: joseph qi <joseph.qi@...ux.alibaba.com> Subject: code questions about ext4_inode_datasync_dirty() hi, I use io_uring to evaluate ext4 randread performance(direct io), observed obvious overhead in jbd2_transaction_committed(): Samples: 124K of event 'cycles:ppp', Event count (approx.): 80630088951 Overhead Command Shared Object Symbol 7.02% io_uring-sq-per [kernel.kallsyms] [k] jbd2_transaction_committed The codes: /* * Writes that span EOF might trigger an I/O size update on completion, * so consider them to be dirty for the purpose of O_DSYNC, even if * there is no other metadata changes being made or are pending. */ iomap->flags = 0; if (ext4_inode_datasync_dirty(inode) || offset + length > i_size_read(inode)) iomap->flags |= IOMAP_F_DIRTY; ext4_inode_datasync_dirty() calls jbd2_transaction_committed(). Sorry, I don't spend much time to learn iomap codes yet, just ask a quick question here. Do we need to call ext4_inode_datasync_dirty() for a read operation? If we must call ext4_inode_datasync_dirty() for a read operation, can we improve jbd2_transaction_committed() a bit, for example, have a quick check between inode->i_datasync_tid and j_commit_sequence, if inode->i_datasync_tid is less than or equal to j_commit_sequence, we also don't call jbd2_transaction_committed()? Regards, Xiaoguang Wang
Powered by blists - more mailing lists