Loading fs/xfs/linux-2.6/xfs_aops.c +1 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,7 @@ xfs_setfilesize( ip->i_d.di_size = isize; ip->i_update_core = 1; ip->i_update_size = 1; mark_inode_dirty_sync(vn_to_inode(ioend->io_vnode)); } xfs_iunlock(ip, XFS_ILOCK_EXCL); Loading fs/xfs/linux-2.6/xfs_super.c +3 −1 Original line number Diff line number Diff line Loading @@ -415,8 +415,10 @@ xfs_fs_write_inode( if (vp) { vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); if (sync) if (sync) { filemap_fdatawait(inode->i_mapping); flags |= FLUSH_SYNC; } error = bhv_vop_iflush(vp, flags); if (error == EAGAIN) error = sync? bhv_vop_iflush(vp, flags | FLUSH_LOG) : 0; Loading fs/xfs/xfs_vnodeops.c +12 −8 Original line number Diff line number Diff line Loading @@ -1082,6 +1082,9 @@ xfs_fsync( if (XFS_FORCED_SHUTDOWN(ip->i_mount)) return XFS_ERROR(EIO); if (flag & FSYNC_DATA) filemap_fdatawait(vn_to_inode(XFS_ITOV(ip))->i_mapping); /* * We always need to make sure that the required inode state * is safe on disk. The vnode might be clean but because Loading Loading @@ -3769,12 +3772,16 @@ xfs_inode_flush( sync_lsn = log->l_last_sync_lsn; GRANT_UNLOCK(log, s); if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) <= 0)) return 0; if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) > 0)) { if (flags & FLUSH_SYNC) log_flags |= XFS_LOG_SYNC; return xfs_log_force(mp, iip->ili_last_lsn, log_flags); error = xfs_log_force(mp, iip->ili_last_lsn, log_flags); if (error) return error; } if (ip->i_update_core == 0) return 0; } } Loading @@ -3788,9 +3795,6 @@ xfs_inode_flush( if (flags & FLUSH_INODE) { int flush_flags; if (xfs_ipincount(ip)) return EAGAIN; if (flags & FLUSH_SYNC) { xfs_ilock(ip, XFS_ILOCK_SHARED); xfs_iflock(ip); Loading Loading
fs/xfs/linux-2.6/xfs_aops.c +1 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,7 @@ xfs_setfilesize( ip->i_d.di_size = isize; ip->i_update_core = 1; ip->i_update_size = 1; mark_inode_dirty_sync(vn_to_inode(ioend->io_vnode)); } xfs_iunlock(ip, XFS_ILOCK_EXCL); Loading
fs/xfs/linux-2.6/xfs_super.c +3 −1 Original line number Diff line number Diff line Loading @@ -415,8 +415,10 @@ xfs_fs_write_inode( if (vp) { vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); if (sync) if (sync) { filemap_fdatawait(inode->i_mapping); flags |= FLUSH_SYNC; } error = bhv_vop_iflush(vp, flags); if (error == EAGAIN) error = sync? bhv_vop_iflush(vp, flags | FLUSH_LOG) : 0; Loading
fs/xfs/xfs_vnodeops.c +12 −8 Original line number Diff line number Diff line Loading @@ -1082,6 +1082,9 @@ xfs_fsync( if (XFS_FORCED_SHUTDOWN(ip->i_mount)) return XFS_ERROR(EIO); if (flag & FSYNC_DATA) filemap_fdatawait(vn_to_inode(XFS_ITOV(ip))->i_mapping); /* * We always need to make sure that the required inode state * is safe on disk. The vnode might be clean but because Loading Loading @@ -3769,12 +3772,16 @@ xfs_inode_flush( sync_lsn = log->l_last_sync_lsn; GRANT_UNLOCK(log, s); if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) <= 0)) return 0; if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) > 0)) { if (flags & FLUSH_SYNC) log_flags |= XFS_LOG_SYNC; return xfs_log_force(mp, iip->ili_last_lsn, log_flags); error = xfs_log_force(mp, iip->ili_last_lsn, log_flags); if (error) return error; } if (ip->i_update_core == 0) return 0; } } Loading @@ -3788,9 +3795,6 @@ xfs_inode_flush( if (flags & FLUSH_INODE) { int flush_flags; if (xfs_ipincount(ip)) return EAGAIN; if (flags & FLUSH_SYNC) { xfs_ilock(ip, XFS_ILOCK_SHARED); xfs_iflock(ip); Loading