xfs_ilock(ip, XFS_MMAPLOCK_EXCL | XFS_IOLOCK_EXCL); error = filemap_write_and_wait(inode->i_mapping); if (error) goto out_unlock; error = invalidate_inode_pages2(inode->i_mapping); if (error) goto out_unlock; *join_flags = XFS_MMAPLOCK_EXCL | XFS_IOLOCK_EXCL; return 0; re...
_xfs_buf_ioapply+0x162/0x1f0 [xfs] [<ffffffffa02ddd9a>] ? xlog_bdstrat+0x2a/0x60 [xfs] [<ffffffff8150f035>] schedule_timeout+0x215/0x2e0 [<ffffffffa02ddd9a>] ? xlog_bdstrat+0x2a/0x60 [xfs] [<ffffffffa02df569>] ? xlog_sync+0x269/0x3e0 [xfs] [<ffffffff8150ff52>] _...
void xfs_iunlock_map_shared(xfs_inode_t *, uint); void xfs_ireclaim(xfs_inode_t *);/* * xfs_inode.c prototypes. */ int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, xfs_nlink_t, xfs_dev_t, cred_t *, xfs_prid_t, int, struct xfs_buf **, boolean_t *, xfs...
a)xfs和ext4 即使是direct方式下写数据的方式也不一样,xfs依赖iomap是将数据(struct bio)提交到block层; ext4依赖filemap,最终依赖fs/direct-io将数据(struct bio )提交到block b)iomap提交到block层的数据以2M连续内存的页的方式提交,direct-io没有保证连续内存,虽然数据大小也是2M. 这是xfs和ext4出现性能差异的...
}if(ioflags & IO_ISDIRECT) {xfs_buftarg_t*target = XFS_IS_REALTIME_INODE(xip) ? mp->m_rtdev_targp : mp->m_ddev_targp;if((pos & target->bt_smask) || (count & target->bt_smask)) { xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock);returnXFS_ERROR(-EINVAL); ...