Messages in this thread | | | From | "Stephen C. Tweedie" <> | Date | Tue, 12 Oct 1999 12:52:11 +0100 (BST) | Subject | Re: [patch] [possible race in ext2] Re: how to write get_block? |
| |
Hi,
On 11 Oct 1999 17:58:54 -0500, ebiederm+eric@ccr.net (Eric W. Biederman) said:
> What about adding to the end of ext2_alloc_block:
> bh = get_hash_table(inode->i_dev, result, inode->i_sb->s_blocksize); > /* something is playing with our fresh block, make them stop. ;-) */ > if (bh) { > if (buffer_dirty(bh)) { > mark_buffer_clean(bh); > wait_on_buffer(bh); > } > bforget(bh); > }
Again, it's a lot of extra unnecessary lookups. The advantages of having a dirty buffer list include being fast, and also massively speeding up the metadata update part of fsync.
> Ultimately we really want to have indirect blocks, and > the directory in the page cache as it should result in > more uniform code, and faster partial truncates (as well as faster > syncs).
There is one major potential future problem with moving this to the page cache. At some point I want to be able to extend the large (64G) memory support on Intel to include the page cache in high memory. The buffer cache would still live in low memory. If we do that, then moving filesystem metadata out of permanently-mapped buffer memory and into the page cache is going to complicate directory and indirect operations significantly.
--Stephen
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |