On Mon, Jan 14, 2013 at 10:18:30PM +0800, Zheng Liu wrote: > +static errcode_t ext2fs_file_llseek_data(ext2_file_t file, __u64 offset) > +{ > + int ret_flags, flag = 1; > + ext2_filsys fs = file->fs; > + errcode_t retval; > + > + /* > + * If offset == EXT2_SEEK_OFFSET_INVALID, that means that > + * the caller wants to find the data from file->pos. > + */ > + offset = offset != EXT2_SEEK_OFFSET_INVALID ? offset : file->pos; > + file->blockno = offset / fs->blocksize; > + while (file->blockno * fs->blocksize < EXT2_I_SIZE(&file->inode)) { > + retval = ext2fs_bmap2(fs, file->ino, &file->inode, > + BMAP_BUFFER, 0, file->blockno, > + &ret_flags, &file->physblock); Using bmap will certainly work, although as an optimization we can do much better for extents if we use the extents interface. I won't insist on this, though. (We can always optimize this later). - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html