Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 67729
b: refs/heads/master
c: be94d11
h: refs/heads/master
i:
  67727: 762643b
v: v3
  • Loading branch information
Mark Fasheh committed Oct 12, 2007
1 parent 4dd3c52 commit fbfb8c8
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0bfbbf62a8b5a129ba2c689283bfece80a601aba
refs/heads/master: be94d11704ef79030fd2e6a0c41b4a7f65f9e860
17 changes: 17 additions & 0 deletions trunk/fs/ocfs2/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,23 @@ int ocfs2_find_files_on_disk(const char *name,
return status;
}

/*
* Convenience function for callers which just want the block number
* mapped to a name and don't require the full dirent info, etc.
*/
int ocfs2_lookup_ino_from_name(struct inode *dir, const char *name,
int namelen, u64 *blkno)
{
int ret;
struct buffer_head *bh = NULL;
struct ocfs2_dir_entry *dirent = NULL;

ret = ocfs2_find_files_on_disk(name, namelen, blkno, dir, &bh, &dirent);
brelse(bh);

return ret;
}

/* Check for a name within a directory.
*
* Return 0 if the name does not exist
Expand Down
2 changes: 2 additions & 0 deletions trunk/fs/ocfs2/dir.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ int ocfs2_find_files_on_disk(const char *name,
struct inode *inode,
struct buffer_head **dirent_bh,
struct ocfs2_dir_entry **dirent);
int ocfs2_lookup_ino_from_name(struct inode *dir, const char *name,
int namelen, u64 *blkno);
int ocfs2_readdir(struct file *filp, void *dirent, filldir_t filldir);
int ocfs2_dir_foreach(struct inode *inode, loff_t *f_pos, void *priv,
filldir_t filldir);
Expand Down
8 changes: 1 addition & 7 deletions trunk/fs/ocfs2/export.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,6 @@ static struct dentry *ocfs2_get_parent(struct dentry *child)
struct dentry *parent;
struct inode *inode;
struct inode *dir = child->d_inode;
struct buffer_head *dirent_bh = NULL;
struct ocfs2_dir_entry *dirent;

mlog_entry("(0x%p, '%.*s')\n", child,
child->d_name.len, child->d_name.name);
Expand All @@ -105,8 +103,7 @@ static struct dentry *ocfs2_get_parent(struct dentry *child)
goto bail;
}

status = ocfs2_find_files_on_disk("..", 2, &blkno, dir, &dirent_bh,
&dirent);
status = ocfs2_lookup_ino_from_name(dir, "..", 2, &blkno);
if (status < 0) {
parent = ERR_PTR(-ENOENT);
goto bail_unlock;
Expand All @@ -131,9 +128,6 @@ static struct dentry *ocfs2_get_parent(struct dentry *child)
bail_unlock:
ocfs2_meta_unlock(dir, 0);

if (dirent_bh)
brelse(dirent_bh);

bail:
mlog_exit_ptr(parent);

Expand Down
9 changes: 2 additions & 7 deletions trunk/fs/ocfs2/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,8 @@ static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
{
int status;
u64 blkno;
struct buffer_head *dirent_bh = NULL;
struct inode *inode = NULL;
struct dentry *ret;
struct ocfs2_dir_entry *dirent;
struct ocfs2_inode_info *oi;

mlog_entry("(0x%p, 0x%p, '%.*s')\n", dir, dentry,
Expand All @@ -126,9 +124,8 @@ static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
goto bail;
}

status = ocfs2_find_files_on_disk(dentry->d_name.name,
dentry->d_name.len, &blkno,
dir, &dirent_bh, &dirent);
status = ocfs2_lookup_ino_from_name(dir, dentry->d_name.name,
dentry->d_name.len, &blkno);
if (status < 0)
goto bail_add;

Expand Down Expand Up @@ -183,8 +180,6 @@ static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
ocfs2_meta_unlock(dir, 0);

bail:
if (dirent_bh)
brelse(dirent_bh);

mlog_exit_ptr(ret);

Expand Down
10 changes: 3 additions & 7 deletions trunk/fs/ocfs2/sysfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,17 +100,14 @@ static struct inode * _ocfs2_get_system_file_inode(struct ocfs2_super *osb,
char namebuf[40];
struct inode *inode = NULL;
u64 blkno;
struct buffer_head *dirent_bh = NULL;
struct ocfs2_dir_entry *de = NULL;
int status = 0;

ocfs2_sprintf_system_inode_name(namebuf,
sizeof(namebuf),
type, slot);

status = ocfs2_find_files_on_disk(namebuf, strlen(namebuf),
&blkno, osb->sys_root_inode,
&dirent_bh, &de);
status = ocfs2_lookup_ino_from_name(osb->sys_root_inode, namebuf,
strlen(namebuf), &blkno);
if (status < 0) {
goto bail;
}
Expand All @@ -122,8 +119,7 @@ static struct inode * _ocfs2_get_system_file_inode(struct ocfs2_super *osb,
goto bail;
}
bail:
if (dirent_bh)
brelse(dirent_bh);

return inode;
}

0 comments on commit fbfb8c8

Please sign in to comment.