|
|
| version 1.719, 2007/09/12 04:04:58 | version 1.720, 2007/09/13 04:08:08 |
|---|---|
| Line 1039 xfs_fsync( | Line 1039 xfs_fsync( |
| if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
| return XFS_ERROR(EIO); | 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 | * We always need to make sure that the required inode state |
| * is safe on disk. The vnode might be clean but because | * is safe on disk. The vnode might be clean but because |
| Line 3568 xfs_inode_flush( | Line 3571 xfs_inode_flush( |
| sync_lsn = log->l_last_sync_lsn; | sync_lsn = log->l_last_sync_lsn; |
| GRANT_UNLOCK(log, s); | GRANT_UNLOCK(log, s); |
| if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) <= 0)) | if ((XFS_LSN_CMP(iip->ili_last_lsn, sync_lsn) > 0)) { |
| return 0; | if (flags & FLUSH_SYNC) |
| log_flags |= XFS_LOG_SYNC; | |
| error = xfs_log_force(mp, iip->ili_last_lsn, log_flags); | |
| if (error) | |
| return error; | |
| } | |
| if (flags & FLUSH_SYNC) | if (ip->i_update_core == 0) |
| log_flags |= XFS_LOG_SYNC; | return 0; |
| return xfs_log_force(mp, iip->ili_last_lsn, log_flags); | |
| } | } |
| } | } |
| Line 3587 xfs_inode_flush( | Line 3594 xfs_inode_flush( |
| if (flags & FLUSH_INODE) { | if (flags & FLUSH_INODE) { |
| int flush_flags; | int flush_flags; |
| if (xfs_ipincount(ip)) | |
| return EAGAIN; | |
| if (flags & FLUSH_SYNC) { | if (flags & FLUSH_SYNC) { |
| xfs_ilock(ip, XFS_ILOCK_SHARED); | xfs_ilock(ip, XFS_ILOCK_SHARED); |
| xfs_iflock(ip); | xfs_iflock(ip); |