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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Tue, 17 Oct 2006 08:36:51 -0500
From:	Dave Kleikamp <shaggy@...tin.ibm.com>
To:	Eric L <e.codemonkey@...il.com>
Cc:	linux-ext4@...r.kernel.org
Subject: Re: [PATCH 1/1] lseek - SEEK_HOLE/SEEK_DATA support

On Mon, 2006-10-16 at 20:30 -0500, Eric L wrote:
> Hi All,
> 
> This small patch set implements the SEEK_HOLE/SEEK_DATA options to the
> lseek system call described in Jeff Bonwick's weblog -
> http://blogs.sun.com/bonwick/entry/seek_hole_and_seek_data  The first
> patch is a small change to the core VFS layer to pass through the
> options.  The second implements the actual functionality in ext3.

It's easier to reply to the patch set if the patches are sent inline in
separate emails.

> Signed-off-by: Eric Lorimer <e.codemonkey@...il.com>

vfs_lseek.patch:

Can you add definititions of SEEK_HOLE and SEEK_DATA to fs.h?  I really
don't like that the code doesn't use the symbolic constants.

+       /* this condition is the same as: NOT (hole XOR physblock) and allows 
+        * us to search for holes and data with the same code */
+       while ( (!(hole || physblock) || (hole && physblock)) 
+                       && block < maxblock )

The comment helps, but it's still a bit confusing.  How about this?

	while ((hole ? physblock : !physblock) && (block < maxblock))

I think this is easier to conceptualize.

+                       /* we need to carry... */
+                       int lvl = 1;
+                       while ( (n-lvl > 0) && offsets[n-lvl] > ptrblock[n-lvl] ) {

How about adding parens to the second half to be more consistent?

+       switch (origin) {
+               case 4:         /* SEEK_HOLE */
+               case 3:         /* SEEK_DATA */

		case SEEK_HOLE:
		case SEEK_DATA:

+                       index = ext3_seek_holedata(inode, index, (origin-3), maxblock+1);

			index = ext3_seek_holedata(inode, index, (origin == SEEK_HOLE), maxblock + 1);

+                       if ( (index << blkshift) > inode->i_size )
+                               offset = inode->i_size;
+                       else if ( index > (offset >> blkshift) )
+                               offset = index << blkshift;
+                       break;
+               case 2:

		case SEEK_END:

+                       offset += inode->i_size;
+                       break;
+               case 1:

		case SEEK_CUR:

+                       offset += filp->f_pos;
+       }


-- 
David Kleikamp
IBM Linux Technology Center

-
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ