[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