Skip to contentSkip to conversation

avoid unnecessary assignment in lookup_bdev()

PATCH In review Coly Li 2 participants 3 messages Dec 14, 2008 VFS

lore
Share & tools
lore

Coly Li

author
#0 lore raw

PATCH 1/1 avoid unnecessary assignment in lookup_bdev()

In normal cases, lookup_bdev() should return successfully, therefore it's not a good idea to always assign error values before checking truth/false conditions. This patch modifies code to only assign error value in necessary false conditions.

If I missed something, please correct me.

---
 fs/block_dev.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)
fs/block_dev.c +9 -6
index 99e0ae1..10b656f 100644
@@ -1282,16 +1282,19 @@ struct block_device *lookup_bdev(const char *pathname)
 		return ERR_PTR(error);
 
 	inode = path.dentry->d_inode;
-	error = -ENOTBLK;
-	if (!S_ISBLK(inode->i_mode))
+	if (!S_ISBLK(inode->i_mode)) {
+		error = -ENOTBLK;
 		goto fail;
-	error = -EACCES;
-	if (path.mnt->mnt_flags & MNT_NODEV)
+	}
+	if (path.mnt->mnt_flags & MNT_NODEV) {
+		error = -EACCES;
 		goto fail;
-	error = -ENOMEM;
+	}
 	bdev = bd_acquire(inode);
-	if (!bdev)
+	if (!bdev) {
+		error = -ENOMEM;
 		goto fail;
+	}
 out:
 	path_put(&path);
 	return bdev;
Signature · 2 lines
Coly Li
SuSE PRC Labs
#1 lore raw
Quoted 5 lines · Coly Li

In normal cases, lookup_bdev() should return successfully, therefore it's not a good idea to always assign error values before checking truth/false conditions. This patch modifies code to only assign error value in necessary false conditions.

If I missed something, please correct me.

I don't understand, is there some way that the current code could incorrectly return an error value?

Is your change somehow faster? I don't think this is on any fast-path code, right?

thanks,

greg k-h

author
#2 lore raw

Greg KH Wrote:

Quoted 5 lines · Coly Li
Quoted 4 lines

In normal cases, lookup_bdev() should return successfully, therefore it's not a good idea to always assign error values before checking truth/false conditions. This patch modifies code to only assign error value in necessary false conditions.

Quoted 7 lines
Quoted 1 line

If I missed something, please correct me.

I don't understand, is there some way that the current code could incorrectly return an error value?

Is your change somehow faster? I don't think this is on any fast-path code, right?

For 1 or 2 lines to set error value before checking condition, that's a clean coding style. But for more places in one function to set error value this way, I can't say that's perfect.

lookup_bdev() is just in my code review stack, the way to set error value just makes me uncomfortable. Maybe it is because my threshold (>=3) is lower than others. This patch can not bring up any *real* faster, but sending it out makes me feel better at least :)

Signature · 2 lines
Coly Li
SuSE PRC Labs