From owner-freebsd-current Wed Aug 6 10:11:55 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id KAA07845 for current-outgoing; Wed, 6 Aug 1997 10:11:55 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id KAA07831; Wed, 6 Aug 1997 10:11:38 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.5/8.6.9) id DAA08697; Thu, 7 Aug 1997 03:07:13 +1000 Date: Thu, 7 Aug 1997 03:07:13 +1000 From: Bruce Evans Message-Id: <199708061707.DAA08697@godzilla.zeta.org.au> To: current@freebsd.org Subject: ext2fs currupts numdirtybuffers Cc: dyson@freebsd.org Sender: owner-freebsd-current@freebsd.org X-Loop: FreeBSD.org Precedence: bulk ext2fs doesn't maintain the numdirtybuffers count properly. This makes all file systems very slow (throughput is reduced 10 times here). Bruce diff -c2 ext2_linux_ialloc.c~ ext2_linux_ialloc.c *** ext2_linux_ialloc.c~ Tue Aug 5 02:14:14 1997 --- ext2_linux_ialloc.c Thu Aug 7 02:42:00 1997 *************** *** 54,59 **** void mark_buffer_dirty(struct buf *bh) { ! numdirtybuffers++; ! bh->b_flags |= B_DELWRI; bh->b_flags &= ~(B_READ | B_ERROR); } --- 54,61 ---- void mark_buffer_dirty(struct buf *bh) { ! if (!(bh->b_flags & B_DELWRI)) { ! numdirtybuffers++; ! bh->b_flags |= B_DELWRI; ! } bh->b_flags &= ~(B_READ | B_ERROR); }