Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6
* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6: [XFS] Put the correct offset in dirent d_off [XFS] Don't wait for pending I/Os when purging blocks beyond eof.
···10911091 * Won't fit. Return to caller.10921092 */10931093 if (filldir(dirent, dep->name, dep->namelen,10941094- xfs_dir2_byte_to_dataptr(mp, curoff + length),10941094+ xfs_dir2_byte_to_dataptr(mp, curoff),10951095 ino, DT_UNKNOWN))10961096 break;10971097
+3-6
fs/xfs/xfs_dir2_sf.c
···752752#if XFS_BIG_INUMS753753 ino += mp->m_inoadd;754754#endif755755- if (filldir(dirent, ".", 1, dotdot_offset, ino, DT_DIR)) {755755+ if (filldir(dirent, ".", 1, dot_offset, ino, DT_DIR)) {756756 *offset = dot_offset;757757 return 0;758758 }···762762 * Put .. entry unless we're starting past it.763763 */764764 if (*offset <= dotdot_offset) {765765- off = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk,766766- XFS_DIR2_DATA_FIRST_OFFSET);767765 ino = xfs_dir2_sf_get_inumber(sfp, &sfp->hdr.parent);768766#if XFS_BIG_INUMS769767 ino += mp->m_inoadd;770768#endif771771- if (filldir(dirent, "..", 2, off, ino, DT_DIR)) {769769+ if (filldir(dirent, "..", 2, dotdot_offset, ino, DT_DIR)) {772770 *offset = dotdot_offset;773771 return 0;774772 }···791793#endif792794793795 if (filldir(dirent, sfep->name, sfep->namelen,794794- off + xfs_dir2_data_entsize(sfep->namelen),795795- ino, DT_UNKNOWN)) {796796+ off, ino, DT_UNKNOWN)) {796797 *offset = off;797798 return 0;798799 }
+4-2
fs/xfs/xfs_inode.c
···14591459 mp = ip->i_mount;14601460 vp = XFS_ITOV(ip);1461146114621462- vn_iowait(ip); /* wait for the completion of any pending DIOs */14631463-14621462+ /* wait for the completion of any pending DIOs */14631463+ if (new_size < ip->i_size)14641464+ vn_iowait(ip);14651465+14641466 /*14651467 * Call toss_pages or flushinval_pages to get rid of pages14661468 * overlapping the region being removed. We have to use