Messages in this thread | | | Date | Mon, 1 Jan 2001 03:50:45 +0100 (MET) | From | Roman Zippel <> | Subject | Re: [RFC] Generic deferred file writing |
| |
Hi,
On Sun, 31 Dec 2000, Linus Torvalds wrote:
> cached_allocation = NULL; > > repeat: > spin_lock(); > result = try_to_find_existing(); > if (!result) { > if (!cached_allocation) { > spin_unlock(); > cached_allocation = allocate_block(); > goto repeat; > } > result = cached_allocation; > add_to_datastructures(result); > } > spin_unlock(); > return result; > > This is quite standard, and Linux does it in many places. It doesn't have > to be complex or ugly.
No problem with that.
> Also, I don't see why you claim the current get_block() is recursive and > hard to use: it obviously isn't. If you look at the current ext2 > get_block(), the way it protects most of its data structures is by the > super-block-global lock. That wouldn't work if your claims of recursive > invocation were true.
I just rechecked that, but I don't see no superblock lock here, it uses the kernel_lock instead. Although Al could give the definitive answer for this, he wrote it. :)
> The way the Linux MM works, if the lower levels need to do buffer > allocations, they will use GFP_BUFFER (which "bread()" does internally), > which will mean that the VM layer will _not_ call down recursively to > write stuff out while it's already trying to write something else. This is > exactly so that filesystems don't have to release and re-try if they don't > want to. > > In short, I don't see any of your arguments.
Then I must have misunderstood Al. Al? If you were right here, I would see absolutely no reason for the current complexity. (Me is a bit confused here.)
bye, Roman
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |