On Wed, Apr 27, 2011 at 05:42:09AM +0800, Andrew Morton wrote: > On Tue, 26 Apr 2011 22:42:19 +0800 > Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote: > > > @@ -55,13 +55,16 @@ EXPORT_SYMBOL(I_BDEV); > > static void bdev_inode_switch_bdi(struct inode *inode, > > struct backing_dev_info *dst) > > { > > - spin_lock(&inode_wb_list_lock); > > + struct backing_dev_info *old = inode->i_data.backing_dev_info; > > + > > + bdi_lock_two(&old->wb, &dst->wb); > > spin_lock(&inode->i_lock); > > inode->i_data.backing_dev_info = dst; > > if (inode->i_state & I_DIRTY) > > list_move(&inode->i_wb_list, &dst->wb.b_dirty); > > spin_unlock(&inode->i_lock); > > - spin_unlock(&inode_wb_list_lock); > > + spin_unlock(&old->wb.list_lock); > > + spin_unlock(&dst->wb.list_lock); > > } > > Has this patch been well tested under lockdep? Yes, it runs OK on concurrent dd and dd+tar workloads over all major filesystems, including NFS. Lockdep is always enabled in my kernels, no warnings are found in dmesg. Thanks, Fengguang -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>