Skip to content

Commit

Permalink
nilfs really shouldn't slap struct dentry on stack...
Browse files Browse the repository at this point in the history
... especially when it only needs (and initializes) .d_name of it

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Mar 3, 2010
1 parent 89031bc commit 0319003
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 15 deletions.
10 changes: 5 additions & 5 deletions fs/nilfs2/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,11 +349,11 @@ static int nilfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
* Entry is guaranteed to be valid.
*/
struct nilfs_dir_entry *
nilfs_find_entry(struct inode *dir, struct dentry *dentry,
nilfs_find_entry(struct inode *dir, const struct qstr *qstr,
struct page **res_page)
{
const char *name = dentry->d_name.name;
int namelen = dentry->d_name.len;
const unsigned char *name = qstr->name;
int namelen = qstr->len;
unsigned reclen = NILFS_DIR_REC_LEN(namelen);
unsigned long start, n;
unsigned long npages = dir_pages(dir);
Expand Down Expand Up @@ -424,13 +424,13 @@ struct nilfs_dir_entry *nilfs_dotdot(struct inode *dir, struct page **p)
return de;
}

ino_t nilfs_inode_by_name(struct inode *dir, struct dentry *dentry)
ino_t nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr)
{
ino_t res = 0;
struct nilfs_dir_entry *de;
struct page *page;

de = nilfs_find_entry(dir, dentry, &page);
de = nilfs_find_entry(dir, qstr, &page);
if (de) {
res = le64_to_cpu(de->inode);
kunmap(page);
Expand Down
13 changes: 5 additions & 8 deletions fs/nilfs2/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ nilfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
if (dentry->d_name.len > NILFS_NAME_LEN)
return ERR_PTR(-ENAMETOOLONG);

ino = nilfs_inode_by_name(dir, dentry);
ino = nilfs_inode_by_name(dir, &dentry->d_name);
inode = NULL;
if (ino) {
inode = nilfs_iget(dir->i_sb, ino);
Expand All @@ -81,10 +81,7 @@ struct dentry *nilfs_get_parent(struct dentry *child)
{
unsigned long ino;
struct inode *inode;
struct dentry dotdot;

dotdot.d_name.name = "..";
dotdot.d_name.len = 2;
struct qstr dotdot = {.name = "..", .len = 2};

ino = nilfs_inode_by_name(child->d_inode, &dotdot);
if (!ino)
Expand Down Expand Up @@ -296,7 +293,7 @@ static int nilfs_do_unlink(struct inode *dir, struct dentry *dentry)
int err;

err = -ENOENT;
de = nilfs_find_entry(dir, dentry, &page);
de = nilfs_find_entry(dir, &dentry->d_name, &page);
if (!de)
goto out;

Expand Down Expand Up @@ -389,7 +386,7 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry,
return err;

err = -ENOENT;
old_de = nilfs_find_entry(old_dir, old_dentry, &old_page);
old_de = nilfs_find_entry(old_dir, &old_dentry->d_name, &old_page);
if (!old_de)
goto out;

Expand All @@ -409,7 +406,7 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry,
goto out_dir;

err = -ENOENT;
new_de = nilfs_find_entry(new_dir, new_dentry, &new_page);
new_de = nilfs_find_entry(new_dir, &new_dentry->d_name, &new_page);
if (!new_de)
goto out_dir;
inc_nlink(old_inode);
Expand Down
4 changes: 2 additions & 2 deletions fs/nilfs2/nilfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,10 @@ static inline int nilfs_init_acl(struct inode *inode, struct inode *dir)

/* dir.c */
extern int nilfs_add_link(struct dentry *, struct inode *);
extern ino_t nilfs_inode_by_name(struct inode *, struct dentry *);
extern ino_t nilfs_inode_by_name(struct inode *, const struct qstr *);
extern int nilfs_make_empty(struct inode *, struct inode *);
extern struct nilfs_dir_entry *
nilfs_find_entry(struct inode *, struct dentry *, struct page **);
nilfs_find_entry(struct inode *, const struct qstr *, struct page **);
extern int nilfs_delete_entry(struct nilfs_dir_entry *, struct page *);
extern int nilfs_empty_dir(struct inode *);
extern struct nilfs_dir_entry *nilfs_dotdot(struct inode *, struct page **);
Expand Down

0 comments on commit 0319003

Please sign in to comment.