On Mon, May 21, 2012 at 11:59:54AM +0800, Miao Xie wrote: > Hi Josef, > > On fri, 18 May 2012 15:01:05 -0400, Josef Bacik wrote: > > diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h > > index 9b9b15f..492c74f 100644 > > --- a/fs/btrfs/btrfs_inode.h > > +++ b/fs/btrfs/btrfs_inode.h > > @@ -57,9 +57,6 @@ struct btrfs_inode { > > /* used to order data wrt metadata */ > > struct btrfs_ordered_inode_tree ordered_tree; > > > > - /* for keeping track of orphaned inodes */ > > - struct list_head i_orphan; > > - > > /* list of all the delalloc inodes in the FS. There are times we need > > * to write all the delalloc pages to disk, and this list is used > > * to walk them all. > > @@ -156,6 +153,8 @@ struct btrfs_inode { > > unsigned dummy_inode:1; > > unsigned in_defrag:1; > > unsigned delalloc_meta_reserved:1; > > + unsigned has_orphan_item:1; > > + unsigned doing_truncate:1; > > I think the problem is we should not use the different lock to protect the bit fields which > are stored in the same machine word. Or some bit fields may be covered by the others when > someone change those fields. Could you try to declare ->delalloc_meta_reserved and ->has_orphan_item > as a integer? > Oh freaking duh, thank you Miao, I'm an idiot. Josef -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html