Dmitry Monakhov wrote:
But whole approach based on using PagePrivate bit and page->private ptr for special purposes is realy dengerous, and imho wrong, because avery fs-related code assume that page->private points to page_buffers. Especially this approach not work for blksize < pgsize. The best way to store/pass any block related info is buffer_head flags. This approach works for blksize < pgsize case too.
it's not dangerous as buffer_heads is optional facility and any filesystem is free to use them or not. or even use own mechanism like reiser4 does. this is why struct page got private field instead of buffers (in 2.4). buffer_heads have cost - 56 bytes/page (on 32bit arch) + cpu cycles to maintain them. current delayed allocation isn't supposed to work with bsize != PAGE_CACHE_SIZE. this will be resolved by the upcoming patch, but bsize == PAGE_CACHE_SIZE is worthwhile to optimize, I believe. thanks, Alex - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html