Messages in this thread | | | Date | Mon, 15 Feb 1999 22:03:29 -0500 (EST) | From | "Theodore Y. Ts'o" <> | Subject | Re: fsync on large files |
| |
Date: Mon, 15 Feb 1999 17:46:42 -0800 (PST) From: Linus Torvalds <torvalds@transmeta.com>
Ugh.
I'd much rather just always add it to the "inode dirty list". List maintenance is essentially zero overhead if you use the nice list macros in <linux/list.h> (as opposed to the braindamaged BSD compatibility macros in <linux/lists.h>), and it's fairly trivial to just keep each dirty block on two dirty lists (one inode-specific, one global - you'd still use the global one for normal write-outs).
This works for ext2, but it doesn't work with filesystems (most notably FAT filesystems, and possibly some B-tree based filesystems) where metadata might be shared by multiple files, so a block might have to be on multiple inode dirty lists. I had thought about using a linked list architecture and threading buffer_head structures onto inode dirty linked lists, but I discarded that plan since it wouldn't work for all filesystems.
- Ted
- 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/
| |