Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759494AbXIZDcy (ORCPT ); Tue, 25 Sep 2007 23:32:54 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1758478AbXIZDbh (ORCPT ); Tue, 25 Sep 2007 23:31:37 -0400 Received: from filer.fsl.cs.sunysb.edu ([130.245.126.2]:35319 "EHLO filer.fsl.cs.sunysb.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757495AbXIZDbf (ORCPT ); Tue, 25 Sep 2007 23:31:35 -0400 From: Erez Zadok To: akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, viro@ftp.linux.org.uk, hch@infradead.org, Erez Zadok Subject: [PATCH 13/25] Unionfs: add un/likely conditionals on dir ops Date: Tue, 25 Sep 2007 23:09:52 -0400 Message-Id: <11907762104036-git-send-email-ezk@cs.sunysb.edu> X-Mailer: git-send-email 1.5.2.2 X-MailKey: Erez_Zadok In-Reply-To: <11907762042481-git-send-email-ezk@cs.sunysb.edu> References: <11907762042481-git-send-email-ezk@cs.sunysb.edu> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7270 Lines: 233 Signed-off-by: Erez Zadok --- fs/unionfs/dirfops.c | 22 +++++++++++----------- fs/unionfs/dirhelper.c | 30 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/fs/unionfs/dirfops.c b/fs/unionfs/dirfops.c index c923e58..fa2df88 100644 --- a/fs/unionfs/dirfops.c +++ b/fs/unionfs/dirfops.c @@ -63,7 +63,7 @@ static int unionfs_filldir(void *dirent, const char *name, int namelen, off_t pos = rdstate2offset(buf->rdstate); u64 unionfs_ino = ino; - if (!err) { + if (likely(!err)) { err = buf->filldir(buf->dirent, name, namelen, pos, unionfs_ino, d_type); buf->rdstate->offset++; @@ -74,7 +74,7 @@ static int unionfs_filldir(void *dirent, const char *name, int namelen, * If we did fill it, stuff it in our hash, otherwise return an * error. */ - if (err) { + if (unlikely(err)) { buf->filldir_error = err; goto out; } @@ -99,7 +99,7 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) unionfs_read_lock(file->f_path.dentry->d_sb); - if ((err = unionfs_file_revalidate(file, false))) + if (unlikely((err = unionfs_file_revalidate(file, false)))) goto out; inode = file->f_path.dentry->d_inode; @@ -110,7 +110,7 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) goto out; } else if (file->f_pos > 0) { uds = find_rdstate(inode, file->f_pos); - if (!uds) { + if (unlikely(!uds)) { err = -ESTALE; goto out; } @@ -124,7 +124,7 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) while (uds->bindex <= bend) { lower_file = unionfs_lower_file_idx(file, uds->bindex); - if (!lower_file) { + if (unlikely(!lower_file)) { uds->bindex++; uds->dirpos = 0; continue; @@ -141,7 +141,7 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) /* Read starting from where we last left off. */ offset = vfs_llseek(lower_file, uds->dirpos, SEEK_SET); - if (offset < 0) { + if (unlikely(offset < 0)) { err = offset; goto out; } @@ -149,7 +149,7 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) /* Save the position for when we continue. */ offset = vfs_llseek(lower_file, 0, SEEK_CUR); - if (offset < 0) { + if (unlikely(offset < 0)) { err = offset; goto out; } @@ -158,10 +158,10 @@ static int unionfs_readdir(struct file *file, void *dirent, filldir_t filldir) /* Copy the atime. */ fsstack_copy_attr_atime(inode, lower_file->f_path.dentry->d_inode); - if (err < 0) + if (unlikely(err < 0)) goto out; - if (buf.filldir_error) + if (unlikely(buf.filldir_error)) break; if (!buf.entries_written) { @@ -201,7 +201,7 @@ static loff_t unionfs_dir_llseek(struct file *file, loff_t offset, int origin) unionfs_read_lock(file->f_path.dentry->d_sb); - if ((err = unionfs_file_revalidate(file, false))) + if (unlikely((err = unionfs_file_revalidate(file, false)))) goto out; rdstate = UNIONFS_F(file)->rdstate; @@ -241,7 +241,7 @@ static loff_t unionfs_dir_llseek(struct file *file, loff_t offset, int origin) } else { rdstate = find_rdstate(file->f_path.dentry->d_inode, offset); - if (rdstate) { + if (likely(rdstate)) { UNIONFS_F(file)->rdstate = rdstate; err = rdstate->offset; } else diff --git a/fs/unionfs/dirhelper.c b/fs/unionfs/dirhelper.c index a72f711..d481ba4 100644 --- a/fs/unionfs/dirhelper.c +++ b/fs/unionfs/dirhelper.c @@ -43,7 +43,7 @@ int do_delete_whiteouts(struct dentry *dentry, int bindex, err = -ENOMEM; name = __getname(); - if (!name) + if (unlikely(!name)) goto out; strcpy(name, UNIONFS_WHPFX); p = name + UNIONFS_WHLEN; @@ -65,14 +65,14 @@ int do_delete_whiteouts(struct dentry *dentry, int bindex, lookup_one_len(name, lower_dir_dentry, cursor->namelen + UNIONFS_WHLEN); - if (IS_ERR(lower_dentry)) { + if (unlikely(IS_ERR(lower_dentry))) { err = PTR_ERR(lower_dentry); break; } - if (lower_dentry->d_inode) + if (likely(lower_dentry->d_inode)) err = vfs_unlink(lower_dir, lower_dentry); dput(lower_dentry); - if (err) + if (unlikely(err)) break; } } @@ -102,7 +102,7 @@ int delete_whiteouts(struct dentry *dentry, int bindex, BUG_ON(bindex < dbstart(dentry)); BUG_ON(bindex > dbend(dentry)); err = is_robranch_super(sb, bindex); - if (err) + if (unlikely(err)) goto out; lower_dir_dentry = unionfs_lower_dentry_idx(dentry, bindex); @@ -160,7 +160,7 @@ static int readdir_util_callback(void *dirent, const char *name, int namelen, found = find_filldir_node(buf->rdstate, name, namelen); /* If it was found in the table there was a previous whiteout. */ - if (found) + if (likely(found)) goto out; /* @@ -168,7 +168,7 @@ static int readdir_util_callback(void *dirent, const char *name, int namelen, * empty. */ err = -ENOTEMPTY; - if ((buf->mode == RD_CHECK_EMPTY) && !whiteout) + if (unlikely((buf->mode == RD_CHECK_EMPTY) && !whiteout)) goto out; err = add_filldir_node(buf->rdstate, name, namelen, @@ -194,7 +194,7 @@ int check_empty(struct dentry *dentry, struct unionfs_dir_state **namelist) BUG_ON(!S_ISDIR(dentry->d_inode->i_mode)); - if ((err = unionfs_partial_lookup(dentry))) + if (unlikely((err = unionfs_partial_lookup(dentry)))) goto out; bstart = dbstart(dentry); @@ -204,14 +204,14 @@ int check_empty(struct dentry *dentry, struct unionfs_dir_state **namelist) bend = bopaque; buf = kmalloc(sizeof(struct unionfs_rdutil_callback), GFP_KERNEL); - if (!buf) { + if (unlikely(!buf)) { err = -ENOMEM; goto out; } buf->err = 0; buf->mode = RD_CHECK_EMPTY; buf->rdstate = alloc_rdstate(dentry->d_inode, bstart); - if (!buf->rdstate) { + if (unlikely(!buf->rdstate)) { err = -ENOMEM; goto out; } @@ -233,7 +233,7 @@ int check_empty(struct dentry *dentry, struct unionfs_dir_state **namelist) dentry_open(lower_dentry, unionfs_lower_mnt_idx(dentry, bindex), O_RDONLY); - if (IS_ERR(lower_file)) { + if (unlikely(IS_ERR(lower_file))) { err = PTR_ERR(lower_file); dput(lower_dentry); branchput(sb, bindex); @@ -245,7 +245,7 @@ int check_empty(struct dentry *dentry, struct unionfs_dir_state **namelist) buf->rdstate->bindex = bindex; err = vfs_readdir(lower_file, readdir_util_callback, buf); - if (buf->err) + if (unlikely(buf->err)) err = buf->err; } while ((err >= 0) && buf->filldir_called); @@ -253,15 +253,15 @@ int check_empty(struct dentry *dentry, struct unionfs_dir_state **namelist) fput(lower_file); branchput(sb, bindex); - if (err < 0) + if (unlikely(err < 0)) goto out; } out: - if (buf) { + if (likely(buf)) { if (namelist && !err) *namelist = buf->rdstate; - else if (buf->rdstate) + else if (likely(buf->rdstate)) free_rdstate(buf->rdstate); kfree(buf); } -- 1.5.2.2 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/