|
|
| version 1.366, 2007/03/03 02:57:44 | version 1.367, 2007/03/30 04:04:14 |
|---|---|
| Line 4444 xfs_bmap_one_block( | Line 4444 xfs_bmap_one_block( |
| xfs_bmbt_irec_t s; /* internal version of extent */ | xfs_bmbt_irec_t s; /* internal version of extent */ |
| #ifndef DEBUG | #ifndef DEBUG |
| if (whichfork == XFS_DATA_FORK) | if (whichfork == XFS_DATA_FORK) { |
| return ip->i_d.di_size == ip->i_mount->m_sb.sb_blocksize; | return ((ip->i_d.di_mode & S_IFMT) == S_IFREG) ? |
| (ip->i_size == ip->i_mount->m_sb.sb_blocksize) : | |
| (ip->i_d.di_size == ip->i_mount->m_sb.sb_blocksize); | |
| } | |
| #endif /* !DEBUG */ | #endif /* !DEBUG */ |
| if (XFS_IFORK_NEXTENTS(ip, whichfork) != 1) | if (XFS_IFORK_NEXTENTS(ip, whichfork) != 1) |
| return 0; | return 0; |
| Line 4457 xfs_bmap_one_block( | Line 4460 xfs_bmap_one_block( |
| xfs_bmbt_get_all(ep, &s); | xfs_bmbt_get_all(ep, &s); |
| rval = s.br_startoff == 0 && s.br_blockcount == 1; | rval = s.br_startoff == 0 && s.br_blockcount == 1; |
| if (rval && whichfork == XFS_DATA_FORK) | if (rval && whichfork == XFS_DATA_FORK) |
| ASSERT(ip->i_d.di_size == ip->i_mount->m_sb.sb_blocksize); | ASSERT(ip->i_size == ip->i_mount->m_sb.sb_blocksize); |
| return rval; | return rval; |
| } | } |
| Line 5817 xfs_getbmap( | Line 5820 xfs_getbmap( |
| fixlen = XFS_MAXIOFFSET(mp); | fixlen = XFS_MAXIOFFSET(mp); |
| } else { | } else { |
| prealloced = 0; | prealloced = 0; |
| fixlen = ip->i_d.di_size; | fixlen = ip->i_size; |
| } | } |
| } else { | } else { |
| prealloced = 0; | prealloced = 0; |
| Line 5841 xfs_getbmap( | Line 5844 xfs_getbmap( |
| xfs_ilock(ip, XFS_IOLOCK_SHARED); | xfs_ilock(ip, XFS_IOLOCK_SHARED); |
| if (whichfork == XFS_DATA_FORK && ip->i_delayed_blks) { | if (whichfork == XFS_DATA_FORK && |
| (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size)) { | |
| /* xfs_fsize_t last_byte = xfs_file_last_byte(ip); */ | /* xfs_fsize_t last_byte = xfs_file_last_byte(ip); */ |
| error = bhv_vop_flush_pages(vp, (xfs_off_t)0, -1, 0, FI_REMAPF); | error = bhv_vop_flush_pages(vp, (xfs_off_t)0, -1, 0, FI_REMAPF); |
| } | } |