- ext4-64-bit-divide-fix-fix.patch removed from -mm tree

2006-10-11 Thread akpm

The patch titled

 ext4-64-bit-divide-fix-fix

has been removed from the -mm tree.  Its filename is

 ext4-64-bit-divide-fix-fix.patch

This patch was dropped because it was folded into ext4-64-bit-divide-fix.patch

--
Subject: ext4-64-bit-divide-fix-fix
From: Andrew Morton [EMAIL PROTECTED]

Give up.  Hope that ext4_fsblk_t is compatiblee with u64 for all do_div()
implementations.

Cc: linux-ext4@vger.kernel.org
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 fs/ext4/balloc.c |2 +-
 fs/ext4/ialloc.c |4 ++--
 fs/ext4/super.c  |4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff -puN fs/ext4/balloc.c~ext4-64-bit-divide-fix-fix fs/ext4/balloc.c
--- a/fs/ext4/balloc.c~ext4-64-bit-divide-fix-fix
+++ a/fs/ext4/balloc.c
@@ -34,7 +34,7 @@ void ext4_get_group_no_and_offset(struct
ext4_grpblk_t offset;
 
 blocknr = blocknr - le32_to_cpu(es-s_first_data_block);
-   offset = do_div((u64)blocknr, EXT4_BLOCKS_PER_GROUP(sb));
+   offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb));
if (offsetp)
*offsetp = offset;
if (blockgrpp)
diff -puN fs/ext4/ialloc.c~ext4-64-bit-divide-fix-fix fs/ext4/ialloc.c
--- a/fs/ext4/ialloc.c~ext4-64-bit-divide-fix-fix
+++ a/fs/ext4/ialloc.c
@@ -275,7 +275,7 @@ static int find_group_orlov(struct super
avefreei = freei / ngroups;
freeb = percpu_counter_read_positive(sbi-s_freeblocks_counter);
avefreeb = freeb;
-   do_div((u64)avefreeb, ngroups);
+   do_div(avefreeb, ngroups);
ndirs = percpu_counter_read_positive(sbi-s_dirs_counter);
 
if ((parent == sb-s_root-d_inode) ||
@@ -305,7 +305,7 @@ static int find_group_orlov(struct super
}
 
blocks_per_dir = ext4_blocks_count(es) - freeb;
-   do_div((u64)blocks_per_dir, ndirs);
+   do_div(blocks_per_dir, ndirs);
 
max_dirs = ndirs / ngroups + inodes_per_group / 16;
min_inodes = avefreei - inodes_per_group / 4;
diff -puN fs/ext4/super.c~ext4-64-bit-divide-fix-fix fs/ext4/super.c
--- a/fs/ext4/super.c~ext4-64-bit-divide-fix-fix
+++ a/fs/ext4/super.c
@@ -1485,7 +1485,7 @@ static int ext4_fill_super (struct super
 */
if (blocksize != EXT4_MIN_BLOCK_SIZE) {
logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = do_div((u64)logic_sb_block, blocksize);
+   offset = do_div(logic_sb_block, blocksize);
} else {
logic_sb_block = sb_block;
}
@@ -1591,7 +1591,7 @@ static int ext4_fill_super (struct super
brelse (bh);
sb_set_blocksize(sb, blocksize);
logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = do_div((u64)logic_sb_block, blocksize);
+   offset = do_div(logic_sb_block, blocksize);
bh = sb_bread(sb, logic_sb_block);
if (!bh) {
printk(KERN_ERR
_

Patches currently in -mm which might be from [EMAIL PROTECTED] are

origin.patch
revert-nvidiafb-use-generic-ddc-reading.patch
ext4_blk_type_from_sector_t_to_ulonglong.patch
ext4-uninline-ext4_get_group_no_and_offset.patch
ext4-64-bit-divide-fix.patch
ext4-64-bit-divide-fix-fix.patch
ext4-rename-logic_sb_block.patch
ext4-whitespace-cleanups.patch
git-acpi.patch
i386-acpi-build-fix.patch
acpi-asus-s3-resume-fix.patch
sony_apci-resume.patch
git-cifs-fixup.patch
cifs-kconfig-dont-select-connector.patch
git-dvb-build-fix.patch
w1-kconfig-fix.patch
git-geode-fixup.patch
git-gfs2.patch
git-infiniband.patch
git-input-fixup.patch
git-libata-all-fixup.patch
mtd-maps-support-for-bios-flash-chips-on-intel-esb2-southbridge.patch
git-netdev-all.patch
libphy-dont-do-that.patch
ibmveth-irq-fix.patch
drivers-net-ns83820c-add-paramter-to-disable-auto.patch
git-pcmcia-fixup.patch
git-serial-fixup.patch
git-scsi-target-fixup.patch
git-scsi-target-vs-git-block.patch
fix-gregkh-usb-usbatm-fix-tiny-race.patch
xpad-dance-pad-support.patch
git-watchdog.patch
x86_64-dump_trace-atomicity-fix.patch
spinlock-debug-all-cpu-backtrace.patch
spinlock-debug-all-cpu-backtrace-fix.patch
spinlock-debug-all-cpu-backtrace-fix-2.patch
spinlock-debug-all-cpu-backtrace-fix-3.patch
xfs-rename-uio_read.patch
touchkit-ps-2-touchscreen-driver-regs-fix.patch
direct-io-sync-and-invalidate-file-region-when-falling-back-to-buffered-write-fixes.patch
get-rid-of-zone_table.patch
new-scheme-to-preempt-swap-token-tidy.patch
radix-tree-rcu-lockless-readside.patch
acx1xx-wireless-driver.patch
swsusp-add-resume_offset-command-line-parameter-rev-2.patch
deprecate-smbfs-in-favour-of-cifs.patch
edac-new-opteron-athlon64-memory-controller-driver.patch
add-address_space_operationsbatch_write.patch
add-config_headers_check-option-to-automatically-run-make-headers_check-nobble.patch
kbuild-dont-put-temp-files-in-the-source-tree.patch
grow_buffers-infinite-loop-fix.patch
invalidate_inode_pages2_range-debug.patch

[patch 035/100] ext4: rename logic_sb_block

2006-10-11 Thread akpm
From: Andrew Morton [EMAIL PROTECTED]

I assume this means logical sb block.  So call it that.

I still don't understand the name though.  A block is a block.  What's
different about this one?

Cc: linux-ext4@vger.kernel.org
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 fs/ext4/super.c |   23 +++
 1 file changed, 11 insertions(+), 12 deletions(-)

diff -puN fs/ext4/super.c~ext4-rename-logic_sb_block fs/ext4/super.c
--- a/fs/ext4/super.c~ext4-rename-logic_sb_block
+++ a/fs/ext4/super.c
@@ -1423,8 +1423,7 @@ static loff_t ext4_max_size(int bits)
 }
 
 static ext4_fsblk_t descriptor_loc(struct super_block *sb,
-   ext4_fsblk_t logic_sb_block,
-   int nr)
+   ext4_fsblk_t logical_sb_block, int nr)
 {
struct ext4_sb_info *sbi = EXT4_SB(sb);
unsigned long bg, first_meta_bg;
@@ -1434,7 +1433,7 @@ static ext4_fsblk_t descriptor_loc(struc
 
if (!EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_META_BG) ||
nr  first_meta_bg)
-   return (logic_sb_block + nr + 1);
+   return logical_sb_block + nr + 1;
bg = sbi-s_desc_per_block * nr;
if (ext4_bg_has_super(sb, bg))
has_super = 1;
@@ -1449,7 +1448,7 @@ static int ext4_fill_super (struct super
struct ext4_sb_info *sbi;
ext4_fsblk_t block;
ext4_fsblk_t sb_block = get_sb_block(data);
-   ext4_fsblk_t logic_sb_block;
+   ext4_fsblk_t logical_sb_block;
unsigned long offset = 0;
unsigned int journal_inum = 0;
unsigned long journal_devnum = 0;
@@ -1484,13 +1483,13 @@ static int ext4_fill_super (struct super
 * block sizes.  We need to calculate the offset from buffer start.
 */
if (blocksize != EXT4_MIN_BLOCK_SIZE) {
-   logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = do_div(logic_sb_block, blocksize);
+   logical_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
+   offset = do_div(logical_sb_block, blocksize);
} else {
-   logic_sb_block = sb_block;
+   logical_sb_block = sb_block;
}
 
-   if (!(bh = sb_bread(sb, logic_sb_block))) {
+   if (!(bh = sb_bread(sb, logical_sb_block))) {
printk (KERN_ERR EXT4-fs: unable to read superblock\n);
goto out_fail;
}
@@ -1590,9 +1589,9 @@ static int ext4_fill_super (struct super
 
brelse (bh);
sb_set_blocksize(sb, blocksize);
-   logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = do_div(logic_sb_block, blocksize);
-   bh = sb_bread(sb, logic_sb_block);
+   logical_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
+   offset = do_div(logical_sb_block, blocksize);
+   bh = sb_bread(sb, logical_sb_block);
if (!bh) {
printk(KERN_ERR
   EXT4-fs: Can't read superblock on 2nd try.\n);
@@ -1711,7 +1710,7 @@ static int ext4_fill_super (struct super
bgl_lock_init(sbi-s_blockgroup_lock);
 
for (i = 0; i  db_count; i++) {
-   block = descriptor_loc(sb, logic_sb_block, i);
+   block = descriptor_loc(sb, logical_sb_block, i);
sbi-s_group_desc[i] = sb_bread(sb, block);
if (!sbi-s_group_desc[i]) {
printk (KERN_ERR EXT4-fs: 
_
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: 2.6.18-mm2: ext3 BUG?

2006-10-11 Thread Jan Kara
 On Sun, 2006-10-08 08:33:30 +0200, Jan-Benedict Glaw [EMAIL PROTECTED] 
 wrote:
  On Thu, 2006-10-05 17:14:28 -0700, Andrew Morton [EMAIL PROTECTED] wrote:
 
  In one case, there was a test case mentioned. I'll run that on my
  affected box in a non-productive LV, like this:
  
  dd bs=1M count=200 if=/dev/zero of=test0
  while :; do
  echo cp 0-1; cp test0 test1 || break
  echo cp 1-2; cp test1 test2 || break
  echo cp 2-3; cp test2 test3 || break
  echo cp 3-4; cp test3 test4 || break
  echo od 0 ; od test0 || break
  echo rm 1; rm test1 || break
  echo rm 2; rm test2 || break
  echo rm 3; rm test3 || break
  echo rm 4; rm test4 || break
  done
 
 While I could reproduce it with a 200MB file, it seems I can't break
 it with a 10MB file.
  Hmm, I was running the test for several ours without any problem...
The kernel is 2.6.17.6, ext3 in ordered data mode, standard SATA disk. I'm
now running it again and trying my luck ;). What is your testing environment?

Honza
-- 
Jan Kara [EMAIL PROTECTED]
SuSE CR Labs
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: 2.6.19-rc1-mm1 (ext4 problem ?)

2006-10-11 Thread Andrew Morton
On Wed, 11 Oct 2006 08:02:14 -0700
Badari Pulavarty [EMAIL PROTECTED] wrote:

 On Tue, 2006-10-10 at 21:01 -0700, Andrew Morton wrote: 
  
   Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.19-rc1/2.6.19-rc1-mm1/
   
   
- Added the ext4 filesystem.  Quick usage instructions:
   
  - Grab updated e2fsprogs from

ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/
  
 
 ext4 did not survive my simple stress tests. 
 
 I ran 4 copies of fsx on ext4dev filesystem (without extents) +
 4 copies of fsx on ext4dev (with extents). 
 
 Machine hung after running for few hours. There are 4 fsx sigsegv
 messages on the console and the last message on the console is
 
 do_IRQ: 0.62 No irq handler for vector
 

Quite a few people are hitting that - it's related to Eric's recent
IRQ/APIC-routing changes.

I don't know why that would cause fsx to get a sigsegv though.
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Directories 2GB

2006-10-11 Thread Steve Lord

David Chinner wrote:

On Tue, Oct 10, 2006 at 10:19:04AM +0100, Christoph Hellwig wrote:

On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote:

Hi Dave,

My recollection is that it used to default to on, it was disabled
because it needs to map the buffer into a single contiguous chunk
of kernel memory. This was placing a lot of pressure on the memory
remapping code, so we made it not default to on as reworking the
code to deal with non contig memory was looking like a major
effort.

Exactly.  The code works but tends to go OOM pretty fast at least
when the dir blocksize code is bigger than the page size.  I should
give the code a spin on my ppc box with 64k pages if it works better
there.


The pagebuf code doesn't use high-order allocations anymore; it uses
scatter lists and remapping to allow physically discontiguous pages
in a multi-page buffer. That is, the pages are sourced via
find_or_create_page() from the address space of the backing device,
and then mapped via vmap() to provide a virtually contigous mapping
of the multi-page buffer.

So I don't think this problem exists anymore...


I was not referring to high order allocations here, but the overhead
of doing address space remapping every time a directory is accessed.

Steve

-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC] [PATCH] Documentation/filesystems/ext4.txt

2006-10-11 Thread Andreas Dilger
On Oct 10, 2006  15:02 -0500, Dave Kleikamp wrote:
 +  - It's still mke2fs -j /dev/hda1

I would suggest mke2fs -j -O dir_index -I 256 /dev/XXX to be more
representative of what will be used in the future.

 +programs:http://e2fsprogs.sourceforge.net/
 + http://ext2resize.sourceforge.net

You should likely remove ext2resize from this list, it hasn't got any
support for extent-mapped files.


Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


- ext4-64-bit-divide-fix.patch removed from -mm tree

2006-10-11 Thread akpm

The patch titled

 ext4 64 bit divide fix

has been removed from the -mm tree.  Its filename is

 ext4-64-bit-divide-fix.patch

This patch was dropped because it was merged into mainline or a subsystem tree

--
Subject: ext4 64 bit divide fix
From: Andrew Morton [EMAIL PROTECTED]

With CONFIG_LBD=n, sector_div() expands to a plain old divide.  But ext4 is
_not_ passing in a sector_t as the first argument, so...

fs/built-in.o: In function `ext4_get_group_no_and_offset':
fs/ext4/balloc.c:39: undefined reference to `__umoddi3'
fs/ext4/balloc.c:41: undefined reference to `__udivdi3'
fs/built-in.o: In function `find_group_orlov':
fs/ext4/ialloc.c:278: undefined reference to `__udivdi3'
fs/built-in.o: In function `ext4_fill_super':
fs/ext4/super.c:1488: undefined reference to `__udivdi3'
fs/ext4/super.c:1488: undefined reference to `__umoddi3'
fs/ext4/super.c:1594: undefined reference to `__udivdi3'
fs/ext4/super.c:1601: undefined reference to `__umoddi3'

Fix that up by calling do_div() directly.

Also cast the arg to u64.  do_div() is only defined on u64, and ext4_fsblk_t
is supposed to be opaque.

Note especially the changes to find_group_orlov().  It was attempting to do

do_div(int, unsigned long long);

which is royally screwed up.  Switched it to plain old divide.

Cc: linux-ext4@vger.kernel.org
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 fs/ext4/balloc.c |2 +-
 fs/ext4/ialloc.c |6 +++---
 fs/ext4/super.c  |4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff -puN fs/ext4/balloc.c~ext4-64-bit-divide-fix fs/ext4/balloc.c
--- a/fs/ext4/balloc.c~ext4-64-bit-divide-fix
+++ a/fs/ext4/balloc.c
@@ -34,7 +34,7 @@ void ext4_get_group_no_and_offset(struct
ext4_grpblk_t offset;
 
 blocknr = blocknr - le32_to_cpu(es-s_first_data_block);
-offset = sector_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb));
+   offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb));
if (offsetp)
*offsetp = offset;
if (blockgrpp)
diff -puN fs/ext4/ialloc.c~ext4-64-bit-divide-fix fs/ext4/ialloc.c
--- a/fs/ext4/ialloc.c~ext4-64-bit-divide-fix
+++ a/fs/ext4/ialloc.c
@@ -275,7 +275,7 @@ static int find_group_orlov(struct super
avefreei = freei / ngroups;
freeb = percpu_counter_read_positive(sbi-s_freeblocks_counter);
avefreeb = freeb;
-   sector_div(avefreeb, ngroups);
+   do_div(avefreeb, ngroups);
ndirs = percpu_counter_read_positive(sbi-s_dirs_counter);
 
if ((parent == sb-s_root-d_inode) ||
@@ -305,14 +305,14 @@ static int find_group_orlov(struct super
}
 
blocks_per_dir = ext4_blocks_count(es) - freeb;
-   sector_div(blocks_per_dir, ndirs);
+   do_div(blocks_per_dir, ndirs);
 
max_dirs = ndirs / ngroups + inodes_per_group / 16;
min_inodes = avefreei - inodes_per_group / 4;
min_blocks = avefreeb - EXT4_BLOCKS_PER_GROUP(sb) / 4;
 
max_debt = EXT4_BLOCKS_PER_GROUP(sb);
-   sector_div(max_debt, max(blocks_per_dir, (ext4_fsblk_t)BLOCK_COST));
+   max_debt /= max_t(int, blocks_per_dir, BLOCK_COST);
if (max_debt * INODE_COST  inodes_per_group)
max_debt = inodes_per_group / INODE_COST;
if (max_debt  255)
diff -puN fs/ext4/super.c~ext4-64-bit-divide-fix fs/ext4/super.c
--- a/fs/ext4/super.c~ext4-64-bit-divide-fix
+++ a/fs/ext4/super.c
@@ -1485,7 +1485,7 @@ static int ext4_fill_super (struct super
 */
if (blocksize != EXT4_MIN_BLOCK_SIZE) {
logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = sector_div(logic_sb_block, blocksize);
+   offset = do_div(logic_sb_block, blocksize);
} else {
logic_sb_block = sb_block;
}
@@ -1591,7 +1591,7 @@ static int ext4_fill_super (struct super
brelse (bh);
sb_set_blocksize(sb, blocksize);
logic_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
-   offset = sector_div(logic_sb_block, blocksize);
+   offset = do_div(logic_sb_block, blocksize);
bh = sb_bread(sb, logic_sb_block);
if (!bh) {
printk(KERN_ERR
_

Patches currently in -mm which might be from [EMAIL PROTECTED] are

origin.patch
revert-pci-quirk-for-ibm-dock-ii-cardbus-controllers.patch
git-acpi.patch
i386-acpi-build-fix.patch
acpi-asus-s3-resume-fix.patch
sony_apci-resume.patch
git-cifs-fixup.patch
cifs-kconfig-dont-select-connector.patch
git-dvb-build-fix.patch
w1-kconfig-fix.patch
git-geode-fixup.patch
git-gfs2.patch
git-infiniband.patch
git-input-fixup.patch
git-libata-all.patch
mtd-maps-support-for-bios-flash-chips-on-intel-esb2-southbridge.patch
git-netdev-all.patch
libphy-dont-do-that.patch
drivers-net-ns83820c-add-paramter-to-disable-auto.patch
git-pcmcia-fixup.patch
git-serial-fixup.patch
git-scsi-target-fixup.patch

- ext4-whitespace-cleanups.patch removed from -mm tree

2006-10-11 Thread akpm

The patch titled

 ext4 whitespace cleanups

has been removed from the -mm tree.  Its filename is

 ext4-whitespace-cleanups.patch

This patch was dropped because it was merged into mainline or a subsystem tree

--
Subject: ext4 whitespace cleanups
From: Andrew Morton [EMAIL PROTECTED]

Someone's tab key is emitting spaces.  Attempt to repair some of the damage.

Cc: linux-ext4@vger.kernel.org
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 fs/ext4/acl.c |4 +--
 fs/ext4/dir.c |7 +++--
 fs/ext4/extents.c |   14 +--
 fs/ext4/namei.c   |   52 +---
 fs/ext4/super.c   |   14 ++-
 5 files changed, 46 insertions(+), 45 deletions(-)

diff -puN fs/ext4/acl.c~ext4-whitespace-cleanups fs/ext4/acl.c
--- a/fs/ext4/acl.c~ext4-whitespace-cleanups
+++ a/fs/ext4/acl.c
@@ -141,7 +141,7 @@ ext4_iget_acl(struct inode *inode, struc
 
 static inline void
 ext4_iset_acl(struct inode *inode, struct posix_acl **i_acl,
-  struct posix_acl *acl)
+   struct posix_acl *acl)
 {
spin_lock(inode-i_lock);
if (*i_acl != EXT4_ACL_NOT_CACHED)
@@ -375,7 +375,7 @@ int
 ext4_acl_chmod(struct inode *inode)
 {
struct posix_acl *acl, *clone;
-int error;
+   int error;
 
if (S_ISLNK(inode-i_mode))
return -EOPNOTSUPP;
diff -puN fs/ext4/dir.c~ext4-whitespace-cleanups fs/ext4/dir.c
--- a/fs/ext4/dir.c~ext4-whitespace-cleanups
+++ a/fs/ext4/dir.c
@@ -188,8 +188,9 @@ revalidate:
de = (struct ext4_dir_entry_2 *) (bh-b_data + offset);
if (!ext4_check_dir_entry (ext4_readdir, inode, de,
   bh, offset)) {
-   /* On error, skip the f_pos to the
-   next block. */
+   /*
+* On error, skip the f_pos to the next block
+*/
filp-f_pos = (filp-f_pos |
(sb-s_blocksize - 1)) + 1;
brelse (bh);
@@ -508,7 +509,7 @@ finished:
 
 static int ext4_release_dir (struct inode * inode, struct file * filp)
 {
-   if (filp-private_data)
+   if (filp-private_data)
ext4_htree_free_dir_info(filp-private_data);
 
return 0;
diff -puN fs/ext4/extents.c~ext4-whitespace-cleanups fs/ext4/extents.c
--- a/fs/ext4/extents.c~ext4-whitespace-cleanups
+++ a/fs/ext4/extents.c
@@ -1014,7 +1014,7 @@ ext4_ext_next_allocated_block(struct ext
  * returns first allocated block from next leaf or EXT_MAX_BLOCK
  */
 static unsigned ext4_ext_next_leaf_block(struct inode *inode,
-   struct ext4_ext_path *path)
+   struct ext4_ext_path *path)
 {
int depth;
 
@@ -1097,8 +1097,8 @@ static int inline
 ext4_can_extents_be_merged(struct inode *inode, struct ext4_extent *ex1,
struct ext4_extent *ex2)
 {
-if (le32_to_cpu(ex1-ee_block) + le16_to_cpu(ex1-ee_len)
-   != le32_to_cpu(ex2-ee_block))
+   if (le32_to_cpu(ex1-ee_block) + le16_to_cpu(ex1-ee_len) !=
+   le32_to_cpu(ex2-ee_block))
return 0;
 
/*
@@ -1113,7 +1113,7 @@ ext4_can_extents_be_merged(struct inode 
return 0;
 #endif
 
-if (ext_pblock(ex1) + le16_to_cpu(ex1-ee_len) == ext_pblock(ex2))
+   if (ext_pblock(ex1) + le16_to_cpu(ex1-ee_len) == ext_pblock(ex2))
return 1;
return 0;
 }
@@ -2008,9 +2008,9 @@ int ext4_ext_get_blocks(handle_t *handle
goto out2;
}
/*
- * Okay, we need to do block allocation.  Lazily initialize the block
- * allocation info here if necessary.
-*/
+* Okay, we need to do block allocation.  Lazily initialize the block
+* allocation info here if necessary.
+*/
if (S_ISREG(inode-i_mode)  (!EXT4_I(inode)-i_block_alloc_info))
ext4_init_block_alloc_info(inode);
 
diff -puN fs/ext4/namei.c~ext4-whitespace-cleanups fs/ext4/namei.c
--- a/fs/ext4/namei.c~ext4-whitespace-cleanups
+++ a/fs/ext4/namei.c
@@ -241,13 +241,13 @@ static inline unsigned dx_node_limit (st
 #ifdef DX_DEBUG
 static void dx_show_index (char * label, struct dx_entry *entries)
 {
-int i, n = dx_get_count (entries);
+   int i, n = dx_get_count (entries);
 printk(%s index , label);
-for (i = 0; i  n; i++)
-{
-printk(%x-%u , i? dx_get_hash(entries + i): 0, 
dx_get_block(entries + i));
-}
-printk(\n);
+   for (i = 0; i  n; i++) {
+   printk(%x-%u , i? dx_get_hash(entries + i) :
+   0, dx_get_block(entries + i));
+   }
+ 

Re: Directories 2GB

2006-10-11 Thread David Chinner
On Wed, Oct 11, 2006 at 11:49:10AM -0500, Steve Lord wrote:
 David Chinner wrote:
 On Tue, Oct 10, 2006 at 10:19:04AM +0100, Christoph Hellwig wrote:
 On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote:
 Hi Dave,
 
 My recollection is that it used to default to on, it was disabled
 because it needs to map the buffer into a single contiguous chunk
 of kernel memory. This was placing a lot of pressure on the memory
 remapping code, so we made it not default to on as reworking the
 code to deal with non contig memory was looking like a major
 effort.
 Exactly.  The code works but tends to go OOM pretty fast at least
 when the dir blocksize code is bigger than the page size.  I should
 give the code a spin on my ppc box with 64k pages if it works better
 there.
 
 The pagebuf code doesn't use high-order allocations anymore; it uses
 scatter lists and remapping to allow physically discontiguous pages
 in a multi-page buffer. That is, the pages are sourced via
 find_or_create_page() from the address space of the backing device,
 and then mapped via vmap() to provide a virtually contigous mapping
 of the multi-page buffer.
 
 So I don't think this problem exists anymore...
 
 I was not referring to high order allocations here, but the overhead
 of doing address space remapping every time a directory is accessed.

Ah - ok. contig - non-contig and OOM is usually discussed in the
context of higher order allocations failing. FWIW, I've not noticed
any extra overhead - the CPU usage seems to grow roughly linearly
with the increase in directory operations done as a result of
higher throughput for the same number of I/Os. I'll have a look at
the Vm stats, though, next time I run a comparison to see how bad
this is.

Thanks for the clarification, Steve.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html