linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Remove branch hints
@ 2014-10-02 16:53 David Sterba
  2014-10-02 16:53 ` [PATCH 1/2] btrfs: remove unlikely from NULL checks David Sterba
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: David Sterba @ 2014-10-02 16:53 UTC (permalink / raw)
  To: linux-btrfs; +Cc: David Sterba

Two patches removing some 'unlikely' branch hints where it does not make much
sense. Sent separately from the other cleanups in case they do not seem to fit.

You can pull from

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git remove-unlikely

David Sterba (2):
  btrfs: remove unlikely from NULL checks
  btrfs: remove unlikely from data-dependent branches and slow paths

 fs/btrfs/async-thread.c | 10 +++++-----
 fs/btrfs/extent-tree.c  |  4 ++--
 fs/btrfs/file.c         |  4 ++--
 fs/btrfs/inode.c        | 10 +++++-----
 fs/btrfs/ioctl.c        |  2 +-
 fs/btrfs/transaction.c  |  2 +-
 6 files changed, 16 insertions(+), 16 deletions(-)

-- 
1.8.4.5


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] btrfs: remove unlikely from NULL checks
  2014-10-02 16:53 [PATCH 0/2] Remove branch hints David Sterba
@ 2014-10-02 16:53 ` David Sterba
  2014-10-02 16:53 ` [PATCH 2/2] btrfs: remove unlikely from data-dependent branches and slow paths David Sterba
  2014-10-03 17:11 ` [PATCH 0/2] Remove branch hints Zach Brown
  2 siblings, 0 replies; 4+ messages in thread
From: David Sterba @ 2014-10-02 16:53 UTC (permalink / raw)
  To: linux-btrfs; +Cc: David Sterba

Unlikely is implicit for NULL checks of pointers.

Signed-off-by: David Sterba <dsterba@suse.cz>
---
 fs/btrfs/async-thread.c | 10 +++++-----
 fs/btrfs/inode.c        |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
index 2da0a66790ba..4dabeb893b7c 100644
--- a/fs/btrfs/async-thread.c
+++ b/fs/btrfs/async-thread.c
@@ -92,7 +92,7 @@ __btrfs_alloc_workqueue(const char *name, int flags, int max_active,
 {
 	struct __btrfs_workqueue *ret = kzalloc(sizeof(*ret), GFP_NOFS);
 
-	if (unlikely(!ret))
+	if (!ret)
 		return NULL;
 
 	ret->max_active = max_active;
@@ -116,7 +116,7 @@ __btrfs_alloc_workqueue(const char *name, int flags, int max_active,
 		ret->normal_wq = alloc_workqueue("%s-%s", flags,
 						 ret->max_active, "btrfs",
 						 name);
-	if (unlikely(!ret->normal_wq)) {
+	if (!ret->normal_wq) {
 		kfree(ret);
 		return NULL;
 	}
@@ -138,12 +138,12 @@ struct btrfs_workqueue *btrfs_alloc_workqueue(const char *name,
 {
 	struct btrfs_workqueue *ret = kzalloc(sizeof(*ret), GFP_NOFS);
 
-	if (unlikely(!ret))
+	if (!ret)
 		return NULL;
 
 	ret->normal = __btrfs_alloc_workqueue(name, flags & ~WQ_HIGHPRI,
 					      max_active, thresh);
-	if (unlikely(!ret->normal)) {
+	if (!ret->normal) {
 		kfree(ret);
 		return NULL;
 	}
@@ -151,7 +151,7 @@ struct btrfs_workqueue *btrfs_alloc_workqueue(const char *name,
 	if (flags & WQ_HIGHPRI) {
 		ret->high = __btrfs_alloc_workqueue(name, flags, max_active,
 						    thresh);
-		if (unlikely(!ret->high)) {
+		if (!ret->high) {
 			__btrfs_destroy_workqueue(ret->normal);
 			kfree(ret);
 			return NULL;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 344a322eb386..998e67fdf2f6 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9013,7 +9013,7 @@ static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput,
 		spin_unlock(&root->delalloc_lock);
 
 		work = btrfs_alloc_delalloc_work(inode, 0, delay_iput);
-		if (unlikely(!work)) {
+		if (!work) {
 			if (delay_iput)
 				btrfs_add_delayed_iput(inode);
 			else
-- 
1.8.4.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] btrfs: remove unlikely from data-dependent branches and slow paths
  2014-10-02 16:53 [PATCH 0/2] Remove branch hints David Sterba
  2014-10-02 16:53 ` [PATCH 1/2] btrfs: remove unlikely from NULL checks David Sterba
@ 2014-10-02 16:53 ` David Sterba
  2014-10-03 17:11 ` [PATCH 0/2] Remove branch hints Zach Brown
  2 siblings, 0 replies; 4+ messages in thread
From: David Sterba @ 2014-10-02 16:53 UTC (permalink / raw)
  To: linux-btrfs; +Cc: David Sterba

There are the branch hints that obviously depend on the data being
processed, the CPU predictor will do better job according to the actual
load. It also does not make sense to use the hints in slow paths that do
a lot of other operations like locking, waiting or IO.

Signed-off-by: David Sterba <dsterba@suse.cz>
---
 fs/btrfs/extent-tree.c | 4 ++--
 fs/btrfs/file.c        | 4 ++--
 fs/btrfs/inode.c       | 8 ++++----
 fs/btrfs/ioctl.c       | 2 +-
 fs/btrfs/transaction.c | 2 +-
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 44d04979f071..ede740bfaac0 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -9694,7 +9694,7 @@ void btrfs_end_nocow_write(struct btrfs_root *root)
 
 int btrfs_start_nocow_write(struct btrfs_root *root)
 {
-	if (unlikely(atomic_read(&root->will_be_snapshoted)))
+	if (atomic_read(&root->will_be_snapshoted))
 		return 0;
 
 	percpu_counter_inc(&root->subv_writers->counter);
@@ -9702,7 +9702,7 @@ int btrfs_start_nocow_write(struct btrfs_root *root)
 	 * Make sure counter is updated before we check for snapshot creation.
 	 */
 	smp_mb();
-	if (unlikely(atomic_read(&root->will_be_snapshoted))) {
+	if (atomic_read(&root->will_be_snapshoted)) {
 		btrfs_end_nocow_write(root);
 		return 0;
 	}
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 29b147d46b0a..a18ceabd99a8 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -452,7 +452,7 @@ static noinline int btrfs_copy_from_user(loff_t pos, int num_pages,
 		if (unlikely(copied == 0))
 			break;
 
-		if (unlikely(copied < PAGE_CACHE_SIZE - offset)) {
+		if (copied < PAGE_CACHE_SIZE - offset) {
 			offset += copied;
 		} else {
 			pg++;
@@ -1792,7 +1792,7 @@ static ssize_t btrfs_file_write_iter(struct kiocb *iocb,
 	if (sync)
 		atomic_inc(&BTRFS_I(inode)->sync_writers);
 
-	if (unlikely(file->f_flags & O_DIRECT)) {
+	if (file->f_flags & O_DIRECT) {
 		num_written = __btrfs_direct_write(iocb, from, pos);
 	} else {
 		num_written = __btrfs_buffered_write(file, from, pos);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 998e67fdf2f6..47d214560831 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7802,9 +7802,9 @@ static int btrfs_submit_direct_hook(int rw, struct btrfs_dio_private *dip,
 	atomic_inc(&dip->pending_bios);
 
 	while (bvec <= (orig_bio->bi_io_vec + orig_bio->bi_vcnt - 1)) {
-		if (unlikely(map_length < submit_len + bvec->bv_len ||
+		if (map_length < submit_len + bvec->bv_len ||
 		    bio_add_page(bio, bvec->bv_page, bvec->bv_len,
-				 bvec->bv_offset) < bvec->bv_len)) {
+				 bvec->bv_offset) < bvec->bv_len) {
 			/*
 			 * inc the count before we submit the bio so
 			 * we know the end IO handler won't happen before
@@ -8017,8 +8017,8 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
 		ret = btrfs_delalloc_reserve_space(inode, count);
 		if (ret)
 			goto out;
-	} else if (unlikely(test_bit(BTRFS_INODE_READDIO_NEED_LOCK,
-				     &BTRFS_I(inode)->runtime_flags))) {
+	} else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK,
+				     &BTRFS_I(inode)->runtime_flags)) {
 		inode_dio_done(inode);
 		flags = DIO_LOCKING | DIO_SKIP_HOLES;
 		wakeup = false;
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 0ff212757b95..f2c60cd70e63 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3167,7 +3167,7 @@ static void clone_update_extent_map(struct inode *inode,
 					em->start + em->len - 1, 0);
 	}
 
-	if (unlikely(ret))
+	if (ret)
 		set_bit(BTRFS_INODE_NEEDS_FULL_SYNC,
 			&BTRFS_I(inode)->runtime_flags);
 }
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 16d0c1b62b3e..8eded14e8c5c 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -418,7 +418,7 @@ start_transaction(struct btrfs_root *root, u64 num_items, unsigned int type,
 		/*
 		 * Do the reservation for the relocation root creation
 		 */
-		if (unlikely(need_reserve_reloc_root(root))) {
+		if (need_reserve_reloc_root(root)) {
 			num_bytes += root->nodesize;
 			reloc_reserved = true;
 		}
-- 
1.8.4.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] Remove branch hints
  2014-10-02 16:53 [PATCH 0/2] Remove branch hints David Sterba
  2014-10-02 16:53 ` [PATCH 1/2] btrfs: remove unlikely from NULL checks David Sterba
  2014-10-02 16:53 ` [PATCH 2/2] btrfs: remove unlikely from data-dependent branches and slow paths David Sterba
@ 2014-10-03 17:11 ` Zach Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Zach Brown @ 2014-10-03 17:11 UTC (permalink / raw)
  To: David Sterba; +Cc: linux-btrfs

On Thu, Oct 02, 2014 at 06:53:49PM +0200, David Sterba wrote:
> Two patches removing some 'unlikely' branch hints where it does not make much
> sense. Sent separately from the other cleanups in case they do not seem to fit.
> 
> You can pull from
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git remove-unlikely
> 
> David Sterba (2):
>   btrfs: remove unlikely from NULL checks
>   btrfs: remove unlikely from data-dependent branches and slow paths

Enthusiastically-Reviewed-by: Zach Brown <zab@zabbo.net>

- z

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-10-03 17:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-02 16:53 [PATCH 0/2] Remove branch hints David Sterba
2014-10-02 16:53 ` [PATCH 1/2] btrfs: remove unlikely from NULL checks David Sterba
2014-10-02 16:53 ` [PATCH 2/2] btrfs: remove unlikely from data-dependent branches and slow paths David Sterba
2014-10-03 17:11 ` [PATCH 0/2] Remove branch hints Zach Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).