avoid unnecessary assignment in lookup_bdev()
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
@@ -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
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
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