All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20120510203523.GD2061@localhost.localdomain>

diff --git a/a/1.txt b/N1/1.txt
index 3f8b5be..8925d94 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -2,80 +2,97 @@ On Fri, Apr 27, 2012 at 01:02:08PM +0200, Christian Brunner wrote:
 > Am 24. April 2012 18:26 schrieb Sage Weil <sage@newdream.net>:
 > > On Tue, 24 Apr 2012, Josef Bacik wrote:
 > >> On Fri, Apr 20, 2012 at 05:09:34PM +0200, Christian Brunner wrote:
-> >> > After running ceph on XFS for some time, I decided to try btrfs again.
-> >> > Performance with the current "for-linux-min" branch and big metadata
-> >> > is much better. The only problem (?) I'm still seeing is a warning
+> >> > After running ceph on XFS for some time, I decided to try btrfs =
+again.
+> >> > Performance with the current "for-linux-min" branch and big meta=
+data
+> >> > is much better. The only problem (?) I'm still seeing is a warni=
+ng
 > >> > that seems to occur from time to time:
 > >
 > > Actually, before you do that... we have a new tool,
-> > test_filestore_workloadgen, that generates a ceph-osd-like workload on the
-> > local file system.  It's a subset of what a full OSD might do, but if
-> > we're lucky it will be sufficient to reproduce this issue.  Something like
+> > test_filestore_workloadgen, that generates a ceph-osd-like workload=
+ on the
+> > local file system. =A0It's a subset of what a full OSD might do, bu=
+t if
+> > we're lucky it will be sufficient to reproduce this issue. =A0Somet=
+hing like
 > >
-> >  test_filestore_workloadgen --osd-data /foo --osd-journal /bar
+> > =A0test_filestore_workloadgen --osd-data /foo --osd-journal /bar
 > >
 > > will hopefully do the trick.
 > >
-> > Christian, maybe you can see if that is able to trigger this warning?
-> > You'll need to pull it from the current master branch; it wasn't in the
+> > Christian, maybe you can see if that is able to trigger this warnin=
+g?
+> > You'll need to pull it from the current master branch; it wasn't in=
+ the
 > > last release.
-> 
+>=20
 > Trying to reproduce with test_filestore_workloadgen didn't work for
 > me. So here are some instructions on how to reproduce with a minimal
 > ceph setup.
-> 
+>=20
 > You will need a single system with two disks and a bit of memory.
-> 
+>=20
 > - Compile and install ceph (detailed instructions:
 > http://ceph.newdream.net/docs/master/ops/install/mkcephfs/)
-> 
+>=20
 > - For the test setup I've used two tmpfs files as journal devices. To
 > create these, do the following:
-> 
+>=20
 > # mkdir -p /ceph/temp
 > # mount -t tmpfs tmpfs /ceph/temp
-> # dd if=/dev/zero of=/ceph/temp/journal0 count=500 bs=1024k
-> # dd if=/dev/zero of=/ceph/temp/journal1 count=500 bs=1024k
-> 
+> # dd if=3D/dev/zero of=3D/ceph/temp/journal0 count=3D500 bs=3D1024k
+> # dd if=3D/dev/zero of=3D/ceph/temp/journal1 count=3D500 bs=3D1024k
+>=20
 > - Now you should create and mount btrfs. Here is what I did:
-> 
+>=20
 > # mkfs.btrfs -l 64k -n 64k /dev/sda
 > # mkfs.btrfs -l 64k -n 64k /dev/sdb
 > # mkdir /ceph/osd.000
 > # mkdir /ceph/osd.001
-> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sda /ceph/osd.000
-> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sdb /ceph/osd.001
-> 
+> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sda /ceph/=
+osd.000
+> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sdb /ceph/=
+osd.001
+>=20
 > - Create /etc/ceph/ceph.conf similar to the attached ceph.conf. You
 > will probably have to change the btrfs devices and the hostname
 > (os39).
-> 
+>=20
 > - Create the ceph filesystems:
-> 
+>=20
 > # mkdir /ceph/mon
 > # mkcephfs -a -c /etc/ceph/ceph.conf
-> 
+>=20
 > - Start ceph (e.g. "service ceph start")
-> 
+>=20
 > - Now you should be able to use ceph - "ceph -s" will tell you about
 > the state of the ceph cluster.
-> 
-> - "rbd create -size 100 testimg" will create an rbd image on the ceph cluster.
-> 
+>=20
+> - "rbd create -size 100 testimg" will create an rbd image on the ceph=
+ cluster.
+>=20
 > - Compile my test with "gcc -o rbdtest rbdtest.c -lrbd" and run it
 > with "./rbdtest testimg".
-> 
+>=20
 > I can see the first btrfs_orphan_commit_root warning after an hour or
 > so... I hope that I've described all necessary steps. If there is a
 > problem just send me a note.
-> 
+>=20
 
-Well I feel like an idiot, I finally get it to reproduce, go look at where I
-want to put my printks and theres the problem staring me right in the face.
-I've looked seriously at this problem 2 or 3 times and have missed this every
-single freaking time.  Here is the patch I'm trying, please try it on yours to
-make sure it fixes the problem.  It takes like 2 hours for it to reproduce for
-me so I won't be able to fully test it until tomorrow, but so far it hasn't
+Well I feel like an idiot, I finally get it to reproduce, go look at wh=
+ere I
+want to put my printks and theres the problem staring me right in the f=
+ace.
+I've looked seriously at this problem 2 or 3 times and have missed this=
+ every
+single freaking time.  Here is the patch I'm trying, please try it on y=
+ours to
+make sure it fixes the problem.  It takes like 2 hours for it to reprod=
+uce for
+me so I won't be able to fully test it until tomorrow, but so far it ha=
+sn't
 broken anything so it should be good.  Thanks,
 
 Josef
@@ -88,11 +105,12 @@ index eefe573..4ad628d 100644
 @@ -57,9 +57,6 @@ struct btrfs_inode {
  	/* used to order data wrt metadata */
  	struct btrfs_ordered_inode_tree ordered_tree;
- 
+=20
 -	/* 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
+ 	/* list of all the delalloc inodes in the FS.  There are times we nee=
+d
  	 * to write all the delalloc pages to disk, and this list is used
  	 * to walk them all.
 @@ -164,6 +161,7 @@ struct btrfs_inode {
@@ -100,7 +118,7 @@ index eefe573..4ad628d 100644
  	unsigned in_defrag:1;
  	unsigned delalloc_meta_reserved:1;
 +	unsigned has_orphan_item:1;
- 
+=20
  	/*
  	 * always compress this one file
 diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
@@ -109,7 +127,7 @@ index 8a89888..6dd20f3 100644
 +++ b/fs/btrfs/ctree.h
 @@ -1375,7 +1375,7 @@ struct btrfs_root {
  	struct list_head root_list;
- 
+=20
  	spinlock_t orphan_lock;
 -	struct list_head orphan_list;
 +	atomic_t orphan_inodes;
@@ -120,90 +138,98 @@ diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
 index 7f849b3..8bbe8c4 100644
 --- a/fs/btrfs/disk-io.c
 +++ b/fs/btrfs/disk-io.c
-@@ -1148,7 +1148,6 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,
- 	root->orphan_block_rsv = NULL;
- 
+@@ -1148,7 +1148,6 @@ static void __setup_root(u32 nodesize, u32 leafsi=
+ze, u32 sectorsize,
+ 	root->orphan_block_rsv =3D NULL;
+=20
  	INIT_LIST_HEAD(&root->dirty_list);
 -	INIT_LIST_HEAD(&root->orphan_list);
  	INIT_LIST_HEAD(&root->root_list);
  	spin_lock_init(&root->orphan_lock);
  	spin_lock_init(&root->inode_lock);
-@@ -1161,6 +1160,7 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,
+@@ -1161,6 +1160,7 @@ static void __setup_root(u32 nodesize, u32 leafsi=
+ze, u32 sectorsize,
  	atomic_set(&root->log_commit[0], 0);
  	atomic_set(&root->log_commit[1], 0);
  	atomic_set(&root->log_writers, 0);
 +	atomic_set(&root->orphan_inodes, 0);
- 	root->log_batch = 0;
- 	root->log_transid = 0;
- 	root->last_log_commit = 0;
+ 	root->log_batch =3D 0;
+ 	root->log_transid =3D 0;
+ 	root->last_log_commit =3D 0;
 diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
 index 0218a4e..0265d40 100644
 --- a/fs/btrfs/inode.c
 +++ b/fs/btrfs/inode.c
-@@ -2138,12 +2138,12 @@ void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans,
+@@ -2138,12 +2138,12 @@ void btrfs_orphan_commit_root(struct btrfs_tran=
+s_handle *trans,
  	struct btrfs_block_rsv *block_rsv;
  	int ret;
- 
+=20
 -	if (!list_empty(&root->orphan_list) ||
 +	if (atomic_read(&root->orphan_inodes) ||
- 	    root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE)
+ 	    root->orphan_cleanup_state !=3D ORPHAN_CLEANUP_DONE)
  		return;
- 
+=20
  	spin_lock(&root->orphan_lock);
 -	if (!list_empty(&root->orphan_list)) {
 +	if (atomic_read(&root->orphan_inodes)) {
  		spin_unlock(&root->orphan_lock);
  		return;
  	}
-@@ -2200,8 +2200,8 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
- 		block_rsv = NULL;
+@@ -2200,8 +2200,8 @@ int btrfs_orphan_add(struct btrfs_trans_handle *t=
+rans, struct inode *inode)
+ 		block_rsv =3D NULL;
  	}
- 
+=20
 -	if (list_empty(&BTRFS_I(inode)->i_orphan)) {
 -		list_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);
 +	if (!BTRFS_I(inode)->has_orphan_item) {
-+		BTRFS_I(inode)->has_orphan_item = 1;
++		BTRFS_I(inode)->has_orphan_item =3D 1;
  #if 0
  		/*
  		 * For proper ENOSPC handling, we should do orphan
-@@ -2214,6 +2214,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
- 			insert = 1;
+@@ -2214,6 +2214,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *t=
+rans, struct inode *inode)
+ 			insert =3D 1;
  #endif
- 		insert = 1;
+ 		insert =3D 1;
 +		atomic_inc(&root->orphan_inodes);
  	}
- 
+=20
  	if (!BTRFS_I(inode)->orphan_meta_reserved) {
-@@ -2261,9 +2262,8 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)
- 	int release_rsv = 0;
- 	int ret = 0;
- 
+@@ -2261,9 +2262,8 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=
+rans, struct inode *inode)
+ 	int release_rsv =3D 0;
+ 	int ret =3D 0;
+=20
 -	spin_lock(&root->orphan_lock);
 -	if (!list_empty(&BTRFS_I(inode)->i_orphan)) {
 -		list_del_init(&BTRFS_I(inode)->i_orphan);
 +	if (BTRFS_I(inode)->has_orphan_item) {
-+		BTRFS_I(inode)->has_orphan_item = 0;
- 		delete_item = 1;
++		BTRFS_I(inode)->has_orphan_item =3D 0;
+ 		delete_item =3D 1;
  	}
- 
-@@ -2271,7 +2271,6 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)
- 		BTRFS_I(inode)->orphan_meta_reserved = 0;
- 		release_rsv = 1;
+=20
+@@ -2271,7 +2271,6 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=
+rans, struct inode *inode)
+ 		BTRFS_I(inode)->orphan_meta_reserved =3D 0;
+ 		release_rsv =3D 1;
  	}
 -	spin_unlock(&root->orphan_lock);
- 
+=20
  	if (trans && delete_item) {
- 		ret = btrfs_del_orphan_item(trans, root, btrfs_ino(inode));
-@@ -2281,6 +2280,9 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)
+ 		ret =3D btrfs_del_orphan_item(trans, root, btrfs_ino(inode));
+@@ -2281,6 +2280,9 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=
+rans, struct inode *inode)
  	if (release_rsv)
  		btrfs_orphan_release_metadata(inode);
- 
+=20
 +	if (trans && delete_item)
 +		atomic_dec(&root->orphan_inodes);
 +
  	return 0;
  }
- 
+=20
 @@ -2418,9 +2420,8 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
  		 * add this inode to the orphan list so btrfs_orphan_del does
  		 * the proper thing when we hit it
@@ -212,28 +238,30 @@ index 0218a4e..0265d40 100644
 -		list_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);
 -		spin_unlock(&root->orphan_lock);
 +		atomic_inc(&root->orphan_inodes);
-+		BTRFS_I(inode)->has_orphan_item = 1;
- 
++		BTRFS_I(inode)->has_orphan_item =3D 1;
+=20
  		/* if we have links, this was a truncate, lets do that */
  		if (inode->i_nlink) {
 @@ -3741,7 +3742,7 @@ void btrfs_evict_inode(struct inode *inode)
  	btrfs_wait_ordered_range(inode, 0, (u64)-1);
- 
+=20
  	if (root->fs_info->log_root_recovering) {
 -		BUG_ON(!list_empty(&BTRFS_I(inode)->i_orphan));
 +		BUG_ON(!BTRFS_I(inode)->has_orphan_item);
  		goto no_delete;
  	}
- 
-@@ -6921,6 +6922,7 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
- 	ei->in_defrag = 0;
- 	ei->delalloc_meta_reserved = 0;
- 	ei->complete_ordered = 0;
-+	ei->has_orphan_item = 0;
- 	ei->force_compress = BTRFS_COMPRESS_NONE;
- 
- 	ei->delayed_node = NULL;
-@@ -6934,7 +6936,6 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
+=20
+@@ -6921,6 +6922,7 @@ struct inode *btrfs_alloc_inode(struct super_bloc=
+k *sb)
+ 	ei->in_defrag =3D 0;
+ 	ei->delalloc_meta_reserved =3D 0;
+ 	ei->complete_ordered =3D 0;
++	ei->has_orphan_item =3D 0;
+ 	ei->force_compress =3D BTRFS_COMPRESS_NONE;
+=20
+ 	ei->delayed_node =3D NULL;
+@@ -6934,7 +6936,6 @@ struct inode *btrfs_alloc_inode(struct super_bloc=
+k *sb)
  	mutex_init(&ei->log_mutex);
  	mutex_init(&ei->delalloc_mutex);
  	btrfs_ordered_inode_tree_init(&ei->ordered_tree);
@@ -244,7 +272,7 @@ index 0218a4e..0265d40 100644
 @@ -6980,13 +6981,11 @@ void btrfs_destroy_inode(struct inode *inode)
  		spin_unlock(&root->fs_info->ordered_extent_lock);
  	}
- 
+=20
 -	spin_lock(&root->orphan_lock);
 -	if (!list_empty(&BTRFS_I(inode)->i_orphan)) {
 +	if (BTRFS_I(inode)->has_orphan_item) {
@@ -254,10 +282,11 @@ index 0218a4e..0265d40 100644
 +		atomic_dec(&root->orphan_inodes);
  	}
 -	spin_unlock(&root->orphan_lock);
- 
+=20
  	while (1) {
- 		ordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1);
+ 		ordered =3D btrfs_lookup_first_ordered_extent(inode, (u64)-1);
 --
-To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
+To unsubscribe from this list: send the line "unsubscribe ceph-devel" i=
+n
 the body of a message to majordomo@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff --git a/a/content_digest b/N1/content_digest
index 902cb20..67212f6 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -16,80 +16,97 @@
  "> Am 24. April 2012 18:26 schrieb Sage Weil <sage@newdream.net>:\n"
  "> > On Tue, 24 Apr 2012, Josef Bacik wrote:\n"
  "> >> On Fri, Apr 20, 2012 at 05:09:34PM +0200, Christian Brunner wrote:\n"
- "> >> > After running ceph on XFS for some time, I decided to try btrfs again.\n"
- "> >> > Performance with the current \"for-linux-min\" branch and big metadata\n"
- "> >> > is much better. The only problem (?) I'm still seeing is a warning\n"
+ "> >> > After running ceph on XFS for some time, I decided to try btrfs =\n"
+ "again.\n"
+ "> >> > Performance with the current \"for-linux-min\" branch and big meta=\n"
+ "data\n"
+ "> >> > is much better. The only problem (?) I'm still seeing is a warni=\n"
+ "ng\n"
  "> >> > that seems to occur from time to time:\n"
  "> >\n"
  "> > Actually, before you do that... we have a new tool,\n"
- "> > test_filestore_workloadgen, that generates a ceph-osd-like workload on the\n"
- "> > local file system. \302\240It's a subset of what a full OSD might do, but if\n"
- "> > we're lucky it will be sufficient to reproduce this issue. \302\240Something like\n"
+ "> > test_filestore_workloadgen, that generates a ceph-osd-like workload=\n"
+ " on the\n"
+ "> > local file system. =A0It's a subset of what a full OSD might do, bu=\n"
+ "t if\n"
+ "> > we're lucky it will be sufficient to reproduce this issue. =A0Somet=\n"
+ "hing like\n"
  "> >\n"
- "> > \302\240test_filestore_workloadgen --osd-data /foo --osd-journal /bar\n"
+ "> > =A0test_filestore_workloadgen --osd-data /foo --osd-journal /bar\n"
  "> >\n"
  "> > will hopefully do the trick.\n"
  "> >\n"
- "> > Christian, maybe you can see if that is able to trigger this warning?\n"
- "> > You'll need to pull it from the current master branch; it wasn't in the\n"
+ "> > Christian, maybe you can see if that is able to trigger this warnin=\n"
+ "g?\n"
+ "> > You'll need to pull it from the current master branch; it wasn't in=\n"
+ " the\n"
  "> > last release.\n"
- "> \n"
+ ">=20\n"
  "> Trying to reproduce with test_filestore_workloadgen didn't work for\n"
  "> me. So here are some instructions on how to reproduce with a minimal\n"
  "> ceph setup.\n"
- "> \n"
+ ">=20\n"
  "> You will need a single system with two disks and a bit of memory.\n"
- "> \n"
+ ">=20\n"
  "> - Compile and install ceph (detailed instructions:\n"
  "> http://ceph.newdream.net/docs/master/ops/install/mkcephfs/)\n"
- "> \n"
+ ">=20\n"
  "> - For the test setup I've used two tmpfs files as journal devices. To\n"
  "> create these, do the following:\n"
- "> \n"
+ ">=20\n"
  "> # mkdir -p /ceph/temp\n"
  "> # mount -t tmpfs tmpfs /ceph/temp\n"
- "> # dd if=/dev/zero of=/ceph/temp/journal0 count=500 bs=1024k\n"
- "> # dd if=/dev/zero of=/ceph/temp/journal1 count=500 bs=1024k\n"
- "> \n"
+ "> # dd if=3D/dev/zero of=3D/ceph/temp/journal0 count=3D500 bs=3D1024k\n"
+ "> # dd if=3D/dev/zero of=3D/ceph/temp/journal1 count=3D500 bs=3D1024k\n"
+ ">=20\n"
  "> - Now you should create and mount btrfs. Here is what I did:\n"
- "> \n"
+ ">=20\n"
  "> # mkfs.btrfs -l 64k -n 64k /dev/sda\n"
  "> # mkfs.btrfs -l 64k -n 64k /dev/sdb\n"
  "> # mkdir /ceph/osd.000\n"
  "> # mkdir /ceph/osd.001\n"
- "> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sda /ceph/osd.000\n"
- "> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sdb /ceph/osd.001\n"
- "> \n"
+ "> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sda /ceph/=\n"
+ "osd.000\n"
+ "> # mount -o noatime,space_cache,inode_cache,autodefrag /dev/sdb /ceph/=\n"
+ "osd.001\n"
+ ">=20\n"
  "> - Create /etc/ceph/ceph.conf similar to the attached ceph.conf. You\n"
  "> will probably have to change the btrfs devices and the hostname\n"
  "> (os39).\n"
- "> \n"
+ ">=20\n"
  "> - Create the ceph filesystems:\n"
- "> \n"
+ ">=20\n"
  "> # mkdir /ceph/mon\n"
  "> # mkcephfs -a -c /etc/ceph/ceph.conf\n"
- "> \n"
+ ">=20\n"
  "> - Start ceph (e.g. \"service ceph start\")\n"
- "> \n"
+ ">=20\n"
  "> - Now you should be able to use ceph - \"ceph -s\" will tell you about\n"
  "> the state of the ceph cluster.\n"
- "> \n"
- "> - \"rbd create -size 100 testimg\" will create an rbd image on the ceph cluster.\n"
- "> \n"
+ ">=20\n"
+ "> - \"rbd create -size 100 testimg\" will create an rbd image on the ceph=\n"
+ " cluster.\n"
+ ">=20\n"
  "> - Compile my test with \"gcc -o rbdtest rbdtest.c -lrbd\" and run it\n"
  "> with \"./rbdtest testimg\".\n"
- "> \n"
+ ">=20\n"
  "> I can see the first btrfs_orphan_commit_root warning after an hour or\n"
  "> so... I hope that I've described all necessary steps. If there is a\n"
  "> problem just send me a note.\n"
- "> \n"
+ ">=20\n"
  "\n"
- "Well I feel like an idiot, I finally get it to reproduce, go look at where I\n"
- "want to put my printks and theres the problem staring me right in the face.\n"
- "I've looked seriously at this problem 2 or 3 times and have missed this every\n"
- "single freaking time.  Here is the patch I'm trying, please try it on yours to\n"
- "make sure it fixes the problem.  It takes like 2 hours for it to reproduce for\n"
- "me so I won't be able to fully test it until tomorrow, but so far it hasn't\n"
+ "Well I feel like an idiot, I finally get it to reproduce, go look at wh=\n"
+ "ere I\n"
+ "want to put my printks and theres the problem staring me right in the f=\n"
+ "ace.\n"
+ "I've looked seriously at this problem 2 or 3 times and have missed this=\n"
+ " every\n"
+ "single freaking time.  Here is the patch I'm trying, please try it on y=\n"
+ "ours to\n"
+ "make sure it fixes the problem.  It takes like 2 hours for it to reprod=\n"
+ "uce for\n"
+ "me so I won't be able to fully test it until tomorrow, but so far it ha=\n"
+ "sn't\n"
  "broken anything so it should be good.  Thanks,\n"
  "\n"
  "Josef\n"
@@ -102,11 +119,12 @@
  "@@ -57,9 +57,6 @@ struct btrfs_inode {\n"
  " \t/* used to order data wrt metadata */\n"
  " \tstruct btrfs_ordered_inode_tree ordered_tree;\n"
- " \n"
+ "=20\n"
  "-\t/* for keeping track of orphaned inodes */\n"
  "-\tstruct list_head i_orphan;\n"
  "-\n"
- " \t/* list of all the delalloc inodes in the FS.  There are times we need\n"
+ " \t/* list of all the delalloc inodes in the FS.  There are times we nee=\n"
+ "d\n"
  " \t * to write all the delalloc pages to disk, and this list is used\n"
  " \t * to walk them all.\n"
  "@@ -164,6 +161,7 @@ struct btrfs_inode {\n"
@@ -114,7 +132,7 @@
  " \tunsigned in_defrag:1;\n"
  " \tunsigned delalloc_meta_reserved:1;\n"
  "+\tunsigned has_orphan_item:1;\n"
- " \n"
+ "=20\n"
  " \t/*\n"
  " \t * always compress this one file\n"
  "diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h\n"
@@ -123,7 +141,7 @@
  "+++ b/fs/btrfs/ctree.h\n"
  "@@ -1375,7 +1375,7 @@ struct btrfs_root {\n"
  " \tstruct list_head root_list;\n"
- " \n"
+ "=20\n"
  " \tspinlock_t orphan_lock;\n"
  "-\tstruct list_head orphan_list;\n"
  "+\tatomic_t orphan_inodes;\n"
@@ -134,90 +152,98 @@
  "index 7f849b3..8bbe8c4 100644\n"
  "--- a/fs/btrfs/disk-io.c\n"
  "+++ b/fs/btrfs/disk-io.c\n"
- "@@ -1148,7 +1148,6 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,\n"
- " \troot->orphan_block_rsv = NULL;\n"
- " \n"
+ "@@ -1148,7 +1148,6 @@ static void __setup_root(u32 nodesize, u32 leafsi=\n"
+ "ze, u32 sectorsize,\n"
+ " \troot->orphan_block_rsv =3D NULL;\n"
+ "=20\n"
  " \tINIT_LIST_HEAD(&root->dirty_list);\n"
  "-\tINIT_LIST_HEAD(&root->orphan_list);\n"
  " \tINIT_LIST_HEAD(&root->root_list);\n"
  " \tspin_lock_init(&root->orphan_lock);\n"
  " \tspin_lock_init(&root->inode_lock);\n"
- "@@ -1161,6 +1160,7 @@ static void __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize,\n"
+ "@@ -1161,6 +1160,7 @@ static void __setup_root(u32 nodesize, u32 leafsi=\n"
+ "ze, u32 sectorsize,\n"
  " \tatomic_set(&root->log_commit[0], 0);\n"
  " \tatomic_set(&root->log_commit[1], 0);\n"
  " \tatomic_set(&root->log_writers, 0);\n"
  "+\tatomic_set(&root->orphan_inodes, 0);\n"
- " \troot->log_batch = 0;\n"
- " \troot->log_transid = 0;\n"
- " \troot->last_log_commit = 0;\n"
+ " \troot->log_batch =3D 0;\n"
+ " \troot->log_transid =3D 0;\n"
+ " \troot->last_log_commit =3D 0;\n"
  "diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c\n"
  "index 0218a4e..0265d40 100644\n"
  "--- a/fs/btrfs/inode.c\n"
  "+++ b/fs/btrfs/inode.c\n"
- "@@ -2138,12 +2138,12 @@ void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans,\n"
+ "@@ -2138,12 +2138,12 @@ void btrfs_orphan_commit_root(struct btrfs_tran=\n"
+ "s_handle *trans,\n"
  " \tstruct btrfs_block_rsv *block_rsv;\n"
  " \tint ret;\n"
- " \n"
+ "=20\n"
  "-\tif (!list_empty(&root->orphan_list) ||\n"
  "+\tif (atomic_read(&root->orphan_inodes) ||\n"
- " \t    root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE)\n"
+ " \t    root->orphan_cleanup_state !=3D ORPHAN_CLEANUP_DONE)\n"
  " \t\treturn;\n"
- " \n"
+ "=20\n"
  " \tspin_lock(&root->orphan_lock);\n"
  "-\tif (!list_empty(&root->orphan_list)) {\n"
  "+\tif (atomic_read(&root->orphan_inodes)) {\n"
  " \t\tspin_unlock(&root->orphan_lock);\n"
  " \t\treturn;\n"
  " \t}\n"
- "@@ -2200,8 +2200,8 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)\n"
- " \t\tblock_rsv = NULL;\n"
+ "@@ -2200,8 +2200,8 @@ int btrfs_orphan_add(struct btrfs_trans_handle *t=\n"
+ "rans, struct inode *inode)\n"
+ " \t\tblock_rsv =3D NULL;\n"
  " \t}\n"
- " \n"
+ "=20\n"
  "-\tif (list_empty(&BTRFS_I(inode)->i_orphan)) {\n"
  "-\t\tlist_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);\n"
  "+\tif (!BTRFS_I(inode)->has_orphan_item) {\n"
- "+\t\tBTRFS_I(inode)->has_orphan_item = 1;\n"
+ "+\t\tBTRFS_I(inode)->has_orphan_item =3D 1;\n"
  " #if 0\n"
  " \t\t/*\n"
  " \t\t * For proper ENOSPC handling, we should do orphan\n"
- "@@ -2214,6 +2214,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)\n"
- " \t\t\tinsert = 1;\n"
+ "@@ -2214,6 +2214,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *t=\n"
+ "rans, struct inode *inode)\n"
+ " \t\t\tinsert =3D 1;\n"
  " #endif\n"
- " \t\tinsert = 1;\n"
+ " \t\tinsert =3D 1;\n"
  "+\t\tatomic_inc(&root->orphan_inodes);\n"
  " \t}\n"
- " \n"
+ "=20\n"
  " \tif (!BTRFS_I(inode)->orphan_meta_reserved) {\n"
- "@@ -2261,9 +2262,8 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)\n"
- " \tint release_rsv = 0;\n"
- " \tint ret = 0;\n"
- " \n"
+ "@@ -2261,9 +2262,8 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=\n"
+ "rans, struct inode *inode)\n"
+ " \tint release_rsv =3D 0;\n"
+ " \tint ret =3D 0;\n"
+ "=20\n"
  "-\tspin_lock(&root->orphan_lock);\n"
  "-\tif (!list_empty(&BTRFS_I(inode)->i_orphan)) {\n"
  "-\t\tlist_del_init(&BTRFS_I(inode)->i_orphan);\n"
  "+\tif (BTRFS_I(inode)->has_orphan_item) {\n"
- "+\t\tBTRFS_I(inode)->has_orphan_item = 0;\n"
- " \t\tdelete_item = 1;\n"
+ "+\t\tBTRFS_I(inode)->has_orphan_item =3D 0;\n"
+ " \t\tdelete_item =3D 1;\n"
  " \t}\n"
- " \n"
- "@@ -2271,7 +2271,6 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)\n"
- " \t\tBTRFS_I(inode)->orphan_meta_reserved = 0;\n"
- " \t\trelease_rsv = 1;\n"
+ "=20\n"
+ "@@ -2271,7 +2271,6 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=\n"
+ "rans, struct inode *inode)\n"
+ " \t\tBTRFS_I(inode)->orphan_meta_reserved =3D 0;\n"
+ " \t\trelease_rsv =3D 1;\n"
  " \t}\n"
  "-\tspin_unlock(&root->orphan_lock);\n"
- " \n"
+ "=20\n"
  " \tif (trans && delete_item) {\n"
- " \t\tret = btrfs_del_orphan_item(trans, root, btrfs_ino(inode));\n"
- "@@ -2281,6 +2280,9 @@ int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode)\n"
+ " \t\tret =3D btrfs_del_orphan_item(trans, root, btrfs_ino(inode));\n"
+ "@@ -2281,6 +2280,9 @@ int btrfs_orphan_del(struct btrfs_trans_handle *t=\n"
+ "rans, struct inode *inode)\n"
  " \tif (release_rsv)\n"
  " \t\tbtrfs_orphan_release_metadata(inode);\n"
- " \n"
+ "=20\n"
  "+\tif (trans && delete_item)\n"
  "+\t\tatomic_dec(&root->orphan_inodes);\n"
  "+\n"
  " \treturn 0;\n"
  " }\n"
- " \n"
+ "=20\n"
  "@@ -2418,9 +2420,8 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)\n"
  " \t\t * add this inode to the orphan list so btrfs_orphan_del does\n"
  " \t\t * the proper thing when we hit it\n"
@@ -226,28 +252,30 @@
  "-\t\tlist_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);\n"
  "-\t\tspin_unlock(&root->orphan_lock);\n"
  "+\t\tatomic_inc(&root->orphan_inodes);\n"
- "+\t\tBTRFS_I(inode)->has_orphan_item = 1;\n"
- " \n"
+ "+\t\tBTRFS_I(inode)->has_orphan_item =3D 1;\n"
+ "=20\n"
  " \t\t/* if we have links, this was a truncate, lets do that */\n"
  " \t\tif (inode->i_nlink) {\n"
  "@@ -3741,7 +3742,7 @@ void btrfs_evict_inode(struct inode *inode)\n"
  " \tbtrfs_wait_ordered_range(inode, 0, (u64)-1);\n"
- " \n"
+ "=20\n"
  " \tif (root->fs_info->log_root_recovering) {\n"
  "-\t\tBUG_ON(!list_empty(&BTRFS_I(inode)->i_orphan));\n"
  "+\t\tBUG_ON(!BTRFS_I(inode)->has_orphan_item);\n"
  " \t\tgoto no_delete;\n"
  " \t}\n"
- " \n"
- "@@ -6921,6 +6922,7 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)\n"
- " \tei->in_defrag = 0;\n"
- " \tei->delalloc_meta_reserved = 0;\n"
- " \tei->complete_ordered = 0;\n"
- "+\tei->has_orphan_item = 0;\n"
- " \tei->force_compress = BTRFS_COMPRESS_NONE;\n"
- " \n"
- " \tei->delayed_node = NULL;\n"
- "@@ -6934,7 +6936,6 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)\n"
+ "=20\n"
+ "@@ -6921,6 +6922,7 @@ struct inode *btrfs_alloc_inode(struct super_bloc=\n"
+ "k *sb)\n"
+ " \tei->in_defrag =3D 0;\n"
+ " \tei->delalloc_meta_reserved =3D 0;\n"
+ " \tei->complete_ordered =3D 0;\n"
+ "+\tei->has_orphan_item =3D 0;\n"
+ " \tei->force_compress =3D BTRFS_COMPRESS_NONE;\n"
+ "=20\n"
+ " \tei->delayed_node =3D NULL;\n"
+ "@@ -6934,7 +6936,6 @@ struct inode *btrfs_alloc_inode(struct super_bloc=\n"
+ "k *sb)\n"
  " \tmutex_init(&ei->log_mutex);\n"
  " \tmutex_init(&ei->delalloc_mutex);\n"
  " \tbtrfs_ordered_inode_tree_init(&ei->ordered_tree);\n"
@@ -258,7 +286,7 @@
  "@@ -6980,13 +6981,11 @@ void btrfs_destroy_inode(struct inode *inode)\n"
  " \t\tspin_unlock(&root->fs_info->ordered_extent_lock);\n"
  " \t}\n"
- " \n"
+ "=20\n"
  "-\tspin_lock(&root->orphan_lock);\n"
  "-\tif (!list_empty(&BTRFS_I(inode)->i_orphan)) {\n"
  "+\tif (BTRFS_I(inode)->has_orphan_item) {\n"
@@ -268,12 +296,13 @@
  "+\t\tatomic_dec(&root->orphan_inodes);\n"
  " \t}\n"
  "-\tspin_unlock(&root->orphan_lock);\n"
- " \n"
+ "=20\n"
  " \twhile (1) {\n"
- " \t\tordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1);\n"
+ " \t\tordered =3D btrfs_lookup_first_ordered_extent(inode, (u64)-1);\n"
  "--\n"
- "To unsubscribe from this list: send the line \"unsubscribe ceph-devel\" in\n"
+ "To unsubscribe from this list: send the line \"unsubscribe ceph-devel\" i=\n"
+ "n\n"
  "the body of a message to majordomo@vger.kernel.org\n"
  More majordomo info at  http://vger.kernel.org/majordomo-info.html
 
-16422cec5f99bf43753b95fdd68ca8f399478a43aba1313cce121f364e15d086
+fa135eaf0d79b5ab2fe11b66131ee8ac26a25a247ee8cb6e5a1ad889767e8818

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.