|
|
| version 1.256, 2007/02/07 05:09:06 | version 1.257, 2007/03/10 02:56:10 |
|---|---|
| Line 191 xfs_read( | Line 191 xfs_read( |
| struct file *file = iocb->ki_filp; | struct file *file = iocb->ki_filp; |
| struct inode *inode = file->f_mapping->host; | struct inode *inode = file->f_mapping->host; |
| size_t size = 0; | size_t size = 0; |
| ssize_t ret; | ssize_t ret = 0; |
| xfs_fsize_t n; | xfs_fsize_t n; |
| xfs_inode_t *ip; | xfs_inode_t *ip; |
| xfs_mount_t *mp; | xfs_mount_t *mp; |
| Line 263 xfs_read( | Line 263 xfs_read( |
| if (unlikely(ioflags & IO_ISDIRECT)) { | if (unlikely(ioflags & IO_ISDIRECT)) { |
| if (VN_CACHED(vp)) | if (VN_CACHED(vp)) |
| bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), | ret = bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), |
| -1, FI_REMAPF_LOCKED); | -1, FI_REMAPF_LOCKED); |
| mutex_unlock(&inode->i_mutex); | mutex_unlock(&inode->i_mutex); |
| if (ret) { | |
| xfs_iunlock(ip, XFS_IOLOCK_SHARED); | |
| return ret; | |
| } | |
| } | } |
| xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, | xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, |
| Line 814 retry: | Line 818 retry: |
| if (need_flush) { | if (need_flush) { |
| xfs_inval_cached_trace(io, pos, -1, | xfs_inval_cached_trace(io, pos, -1, |
| ctooff(offtoct(pos)), -1); | ctooff(offtoct(pos)), -1); |
| bhv_vop_flushinval_pages(vp, ctooff(offtoct(pos)), | error = bhv_vop_flushinval_pages(vp, ctooff(offtoct(pos)), |
| -1, FI_REMAPF_LOCKED); | -1, FI_REMAPF_LOCKED); |
| if (error) | |
| goto out_unlock_internal; | |
| } | } |
| if (need_i_mutex) { | if (need_i_mutex) { |