diff -pruN fuse-2.7.0/kernel/fuse_i.h fuse-2.7.0-glfs1/kernel/fuse_i.h
--- fuse-2.7.0/kernel/fuse_i.h	2007-07-02 04:32:15.000000000 -0700
+++ fuse-2.7.0-glfs1/kernel/fuse_i.h	2007-07-19 01:43:53.000000000 -0700
@@ -96,7 +96,7 @@
 #endif
 
 /** Max number of pages that can be used in a single read request */
-#define FUSE_MAX_PAGES_PER_REQ 32
+#define FUSE_MAX_PAGES_PER_REQ 256
 
 /** Maximum number of outstanding background requests */
 #define FUSE_MAX_BACKGROUND 10
diff -pruN fuse-2.7.0/kernel/inode.c fuse-2.7.0-glfs1/kernel/inode.c
--- fuse-2.7.0/kernel/inode.c	2007-07-02 04:32:15.000000000 -0700
+++ fuse-2.7.0-glfs1/kernel/inode.c	2007-07-19 01:43:20.000000000 -0700
@@ -140,7 +140,7 @@ void fuse_change_attributes(struct inode
 	i_size_write(inode, attr->size);
 	spin_unlock(&fc->lock);
 #ifdef HAVE_I_BLKSIZE
-	inode->i_blksize = PAGE_CACHE_SIZE;
+	inode->i_blksize = 1048576;
 #endif
 	inode->i_blocks  = attr->blocks;
 	inode->i_atime.tv_sec   = attr->atime;
@@ -344,7 +344,7 @@ static int parse_fuse_opt(char *opt, str
 	char *p;
 	memset(d, 0, sizeof(struct fuse_mount_data));
 	d->max_read = ~0;
-	d->blksize = 512;
+	d->blksize = 1048576;
 
 	/*
 	 * For unprivileged mounts use current uid/gid.  Still allow
@@ -474,7 +474,7 @@ static struct fuse_conn *new_conn(void)
 		INIT_LIST_HEAD(&fc->io);
 		INIT_LIST_HEAD(&fc->interrupts);
 		atomic_set(&fc->num_waiting, 0);
-		fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
+		fc->bdi.ra_pages = 256;
 		fc->bdi.unplug_io_fn = default_unplug_io_fn;
 		fc->reqctr = 0;
 		fc->blocked = 1;
@@ -673,8 +673,8 @@ static int fuse_fill_super(struct super_
 			return -EINVAL;
 #endif
 	} else {
-		sb->s_blocksize = PAGE_CACHE_SIZE;
-		sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
+		sb->s_blocksize = 1048576;
+		sb->s_blocksize_bits = 20;
 	}
 	sb->s_magic = FUSE_SUPER_MAGIC;
 	sb->s_op = &fuse_super_operations;
