lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20130116120455.GA21029@gmail.com> Date: Wed, 16 Jan 2013 20:04:56 +0800 From: Zheng Liu <gnehzuil.liu@...il.com> To: Theodore Ts'o <tytso@....edu> Cc: linux-ext4@...r.kernel.org, Zheng Liu <wenqing.lz@...bao.com> Subject: Re: [PATCH 1/2 v2] libext2fs: introduce lseek SEEK_DATA/HOLE On Tue, Jan 15, 2013 at 01:55:09PM -0500, Theodore Ts'o wrote: > 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). Yeah, it allows us to skip to the next data/hole directly if the extents interface is used. But if we do that, we will need to handle extent-based file and indirect-based file resptively like this. if (inode->i_flags & EXT4_EXTENTS_FL) { ext2fs_file_ext_llseek_data(); ... } else { ext2fs_file_ind_llseek_data(); ... } I am not sure whether it is too complicated or not for us. What do you think? Thanks, - Zheng -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists