[Ocfs2-commits] wcoekaer commits r1278 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu Jul 15 19:47:30 CDT 2004


Author: wcoekaer
Date: 2004-07-15 18:47:29 -0500 (Thu, 15 Jul 2004)
New Revision: 1278

Modified:
   trunk/src/alloc.c
   trunk/src/file.c
   trunk/src/inode.c
   trunk/src/journal.c
   trunk/src/namei.c
   trunk/src/super.c
   trunk/src/sysfile.c
Log:
fix directio for != blocksize io's
lookup_file_allocation now takes bytes instead of blocksize
get_block2() uses s_sector_size not s_blocksize



Modified: trunk/src/alloc.c
===================================================================
--- trunk/src/alloc.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/alloc.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -2547,7 +2547,7 @@
  *
  */
 int ocfs_lookup_file_allocation(ocfs_super *osb, __s64 Vbo,
-				__s64 *Lbo, __u32 blocks,
+				__s64 *Lbo, __u32 bytecount,
 				__s64 *contig_bytes,
 				struct inode *inode, int locked)
 {
@@ -2563,7 +2563,7 @@
 	__u32 NumIndex;
 	int have_io_sem = 0;
 
-	LOG_ENTRY_ARGS("(vbo=%llu, blocks=%u, inode=%llu)\n", Vbo, blocks, 
+	LOG_ENTRY_ARGS("(vbo=%llu, bytecount=%u, inode=%llu)\n", Vbo, bytecount, 
 		       OCFS_I(inode)->ip_blkno);
 
 	OCFS_ASSERT (osb);
@@ -2596,7 +2596,7 @@
 		up(&(OCFS_I(inode)->ip_sem));
 
 	if (status &&
-	    (cnt >= (u64)blocks << osb->sb->s_blocksize_bits)) {
+	    (cnt >= (u64)bytecount)) {
 		/* Found a what we were looking for. */
 		status = 0;
 		goto success;
@@ -2623,7 +2623,7 @@
 	if (!locked)
 		have_io_sem = 1;
 
-	remainingLength = blocks << osb->sb->s_blocksize_bits;
+	remainingLength = (u64)bytecount;
 	localVbo = Vbo;
 
 	/*
@@ -2737,7 +2737,7 @@
 		down(&(OCFS_I(inode)->ip_sem));
 	if (ocfs_lookup_extent_map_entry(osb, &(OCFS_I(inode)->ip_ext_map),
 					 Vbo, Lbo, &cnt, &NumIndex) &&
-	    (cnt >= (u64)blocks << osb->sb->s_blocksize_bits)) {
+	    (cnt >= (u64)bytecount)) {
 		status = 0;
 	} else {
 		status = -EFAIL;
@@ -3287,7 +3287,7 @@
 			foundBit * blockSize, Type, blockSize, foundBit, alloc_file);
 
 	status = ocfs_lookup_file_allocation(osb, foundBit * blockSize, 
-					     DiskOffset, 1, NULL,
+					     DiskOffset, osb->sb->s_blocksize, NULL,
 					     alloc_inode, 1);
 	if (status < 0 || *DiskOffset == 0) {
 		if (!status)

Modified: trunk/src/file.c
===================================================================
--- trunk/src/file.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/file.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -700,13 +700,12 @@
 		/* anything special for o_direct? */
 		LOG_TRACE_STR ("O_DIRECT");
 		if (((*ppos) & (sector_size - 1)) || (count & (sector_size - 1)) || 
-		    ((unsigned long)buf & (sector_size - 1)) || (inode->i_size & (sector_size - 1))) {
+		    ((unsigned long)buf & (sector_size - 1)) ) {
 			do_direct_io = 0;
 			filp->f_flags |= O_SYNC;
 		} else
 			do_direct_io = 1;
 	}
-
 	if (atomic_read(&OCFS_I(inode)->ip_needs_verification)) {
 		LOG_TRACE_STR ("OIN_NEEDS_VERIFICATION");
 		down_read (&(OCFS_I(inode)->ip_io_sem));
@@ -836,12 +835,11 @@
 		/* anything special for o_direct? */
 		LOG_TRACE_STR ("O_DIRECT");
 		if (((*ppos) & (sector_size - 1)) || (count & (sector_size - 1)) || 
-		    ((unsigned long)buf & (sector_size - 1)) || (inode->i_size & (sector_size - 1))) {
+		    ((unsigned long)buf & (sector_size - 1)) ) {
 			do_direct_io = 0;
 		} else
 			do_direct_io = 1;
 	}
-
 	if (atomic_read(&OCFS_I(inode)->ip_needs_verification)) {
 		down_read(&OCFS_I(inode)->ip_io_sem);
 		status = ocfs_verify_update_inode (osb, inode, 0);
@@ -874,13 +872,13 @@
 
 	ret = generic_file_read (filp, buf, count, ppos);
 #else
-	if (do_direct_io)
+	if (do_direct_io) 
 		ret = ocfs_rw_direct (READ, filp, buf, count, ppos);
 	else
 		ret = generic_file_read (filp, buf, count, ppos);
 #endif
 	if (ret == -EINVAL)
-		LOG_TRACE_STR ("Generic_file_read returned -EINVAL");
+		LOG_ERROR_STR ("Generic_file_read returned -EINVAL");
 
 bail:
 	LOG_EXIT_INT (ret);

Modified: trunk/src/inode.c
===================================================================
--- trunk/src/inode.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/inode.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -25,7 +25,7 @@
  * Authors: Kurt Hackel, Mark Fasheh, Sunil Mushran, Wim Coekaerts,
  *	    Manish Singh, Neeraj Goyal, Suchit Kaura
  */
-
+#define KERNEL_NO_F_IOBUF
 #include "ocfs_compat.h"
 
 #include <linux/fs.h>
@@ -974,7 +974,7 @@
 	 * forced to '1' here, even though we don't have the lock.  This
 	 * is to force fast, unlocked operation.  Get A Real DLM.
 	 */
-	tmperr = ocfs_lookup_file_allocation(osb, vbo, &lbo, 1, NULL,
+	tmperr = ocfs_lookup_file_allocation(osb, vbo, &lbo, osb->sb->s_blocksize, NULL,
 					     inode, 1);
 	if (tmperr < 0)
 		goto fail;
@@ -1072,7 +1072,7 @@
 		}
 	}
 
-	len = 1;
+	len = osb->sb->s_blocksize;
 	if (!open_direct)
 		down_read(&OCFS_I(inode)->ip_extend_sem);
 	err = ocfs_lookup_file_allocation(osb, vbo, &lbo, len, NULL, 
@@ -1136,7 +1136,7 @@
 	}
 
 	vbo = (__s64) block << inode->i_sb->s_blocksize_bits;
-	len = 1;
+	len = osb->sb->s_blocksize;
 	err = ocfs_lookup_file_allocation(osb, vbo, &lbo, len, NULL, 
 					   inode, 1);
 	if (err < 0) {
@@ -1178,8 +1178,7 @@
 
 	osb = OCFS_SB(inode->i_sb);
 
-	vbo = (__s64) iblock << inode->i_sb->s_blocksize_bits;
-	len = 1;
+	vbo = (__s64) iblock << osb->s_sectsize_bits;
 	err = ocfs_lookup_file_allocation(osb, vbo, &lbo, len, NULL, 
 					   inode, 1);
 	if (err < 0) {
@@ -1190,7 +1189,7 @@
 
 	err = 0;
 
-	*oblock = lbo >> inode->i_sb->s_blocksize_bits;
+	*oblock = lbo >> osb->s_sectsize_bits;
 	if (*oblock == 0) {
 		err = -EIO;
 		LOG_ERROR_ARGS ("vbo=%lld lbo=%lld len=%u, blkno=(%llu)\n",
@@ -1337,7 +1336,7 @@
 	/* This figure out the size of the next contiguous block, and
 	 * our logical offset */	
 	/* TODO: Try our damndest to give sizes in multiples of PAGE_SIZE */
-	status = ocfs_lookup_file_allocation(osb, vbo, &lbo, max_blocks, 
+	status = ocfs_lookup_file_allocation(osb, vbo, &lbo, max_blocks << blocksize_bits, 
 					     &new_size, inode, 1);
 
 	/* Do whatever we need to the buffer_head */
@@ -1491,7 +1490,7 @@
 
 	/* make sure aligned to either PAGE_SIZE or sect_size IO */
 #ifndef LARGEIOS
-	if ((*offp & sector_mask) || (size & sector_mask))
+	if ((*offp & sector_mask) || (size & sector_mask)) 
 	   /* if not, then fail, we need either to do dio */
 	   return err;
 

Modified: trunk/src/journal.c
===================================================================
--- trunk/src/journal.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/journal.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -1296,7 +1296,7 @@
 
 	LOG_TRACE_ARGS("Force reading %u blocks\n", totalblks);
 
-	status = ocfs_lookup_file_allocation(osb, vbo, &lbo, totalblks, NULL, 
+	status = ocfs_lookup_file_allocation(osb, vbo, &lbo, size, NULL, 
 					     inode, 1);
 	if (status < 0) {
 		LOG_ERROR_STATUS(status);

Modified: trunk/src/namei.c
===================================================================
--- trunk/src/namei.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/namei.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -1397,7 +1397,7 @@
 	}
 	memset(bhs, 0, sizeof(struct buffer_head *) * blocks);
 
-	status = ocfs_lookup_file_allocation(osb, 0, &logical, 1, &contig,
+	status = ocfs_lookup_file_allocation(osb, 0, &logical, sb->s_blocksize, &contig,
 					     inode, 1);
 	if (status < 0) {
 		LOG_ERROR_STATUS(status);

Modified: trunk/src/super.c
===================================================================
--- trunk/src/super.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/super.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -1521,7 +1521,7 @@
 		goto bail;
 	}
 	/* We're in the mount path, pretend locked=1 */
-	status = ocfs_lookup_file_allocation(osb, 0ULL, &ret, 1, NULL,
+	status = ocfs_lookup_file_allocation(osb, 0ULL, &ret, osb->sb->s_blocksize, NULL,
 					     inode, 1);
 	if (status < 0) {
 		LOG_ERROR_STATUS(status);
@@ -1587,7 +1587,7 @@
 		goto bail;
 	}
 	/* We're in the mount path, pretend locked=1 */
-	status = ocfs_lookup_file_allocation(osb, 0ULL, &ret, 1, NULL,
+	status = ocfs_lookup_file_allocation(osb, 0ULL, &ret, osb->sb->s_blocksize, NULL,
 					     inode, 1);
 	if (status < 0) {
 		LOG_ERROR_STATUS(status);

Modified: trunk/src/sysfile.c
===================================================================
--- trunk/src/sysfile.c	2004-07-15 22:00:56 UTC (rev 1277)
+++ trunk/src/sysfile.c	2004-07-15 23:47:29 UTC (rev 1278)
@@ -159,7 +159,7 @@
 	blocks = Length >> osb->sb->s_blocksize_bits;
 	while (blocks > 0) {
 		status = ocfs_lookup_file_allocation(osb, off, &ret,
-						     blocks, 
+						     Length, 
 						     &contig_bytes,
 						     inode, 1);
 		contig_blocks =



More information about the Ocfs2-commits mailing list