On Tue, May 04, 2010 at 03:34:59PM +0530, Aneesh Kumar K. V wrote: > > + ret = ext4_map_blocks(NULL, inode, &map, 0); > > + if (ret < 0) > > + return ret; > > + if (ret == 0) { > > + if (!buffer_delay(bh)) { > > bh flags are not set here. This check should be based on map.m_flags. Actually, I looked more closely at this again today. ext4_get_blocks() never messed with BH_DELAY, so this flag would only be set or not set if it was originally set in the buffer_head before it had been passed into ext4_get_blocks(). BTW, this is one of the reasons why I really hated the old system. It was never clear which flags were set by whom, and whether the flags that had been in the struct bh before it had been passed into ext4_get_blocks() was random stack garbage, or whether it had meaning, etc. I'm still not sure we have it all right, but it's clearly better to use !buffer_delay(bh), since the buffer_delay flag is one that had been never touched by ext4_get_blocks(). - Ted -- 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