forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
895 B
39 lines
895 B
// SPDX-License-Identifier: GPL-2.0 |
|
/* |
|
* QNX6 file system, Linux implementation. |
|
* |
|
* Version : 1.0.0 |
|
* |
|
* History : |
|
* |
|
* 01-02-2012 by Kai Bankett ([email protected]) : first release. |
|
* 16-02-2012 pagemap extension by Al Viro |
|
* |
|
*/ |
|
|
|
#include "qnx6.h" |
|
|
|
struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry, |
|
unsigned int flags) |
|
{ |
|
unsigned ino; |
|
struct page *page; |
|
struct inode *foundinode = NULL; |
|
const char *name = dentry->d_name.name; |
|
int len = dentry->d_name.len; |
|
|
|
if (len > QNX6_LONG_NAME_MAX) |
|
return ERR_PTR(-ENAMETOOLONG); |
|
|
|
ino = qnx6_find_entry(len, dir, name, &page); |
|
if (ino) { |
|
foundinode = qnx6_iget(dir->i_sb, ino); |
|
qnx6_put_page(page); |
|
if (IS_ERR(foundinode)) |
|
pr_debug("lookup->iget -> error %ld\n", |
|
PTR_ERR(foundinode)); |
|
} else { |
|
pr_debug("%s(): not found %s\n", __func__, name); |
|
} |
|
return d_splice_alias(foundinode, dentry); |
|
}
|
|
|