> + spin_lock(&inode->i_lock); > + if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW) > + || inode->i_mapping->nrpages == 0) { This is some pretty strange formatting. if ((inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) || inode->i_mapping->nrpages == 0) { would be more standard. > list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { > struct address_space *mapping; > > - if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) > - continue; > mapping = inode->i_mapping; > if (mapping->nrpages == 0) > continue; > + spin_lock(&inode->i_lock); > + if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) { > + spin_unlock(&inode->i_lock); > + continue; > + } Can we access the mapping safely when the inode isn't actually fully setup? Even if we can I'd rather not introduce this change hidden inside an unrelated patch. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html