• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * QNX6 file system, Linux implementation.
4   *
5   * Version : 1.0.0
6   *
7   * History :
8   *
9   * 01-02-2012 by Kai Bankett (chaosman@ontika.net) : first release.
10   * 16-02-2012 pagemap extension by Al Viro
11   *
12   */
13  
14  #include "qnx6.h"
15  
qnx6_lookup(struct inode * dir,struct dentry * dentry,unsigned int flags)16  struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry,
17  				unsigned int flags)
18  {
19  	unsigned ino;
20  	struct page *page;
21  	struct inode *foundinode = NULL;
22  	const char *name = dentry->d_name.name;
23  	int len = dentry->d_name.len;
24  
25  	if (len > QNX6_LONG_NAME_MAX)
26  		return ERR_PTR(-ENAMETOOLONG);
27  
28  	ino = qnx6_find_entry(len, dir, name, &page);
29  	if (ino) {
30  		foundinode = qnx6_iget(dir->i_sb, ino);
31  		qnx6_put_page(page);
32  		if (IS_ERR(foundinode))
33  			pr_debug("lookup->iget ->  error %ld\n",
34  				 PTR_ERR(foundinode));
35  	} else {
36  		pr_debug("%s(): not found %s\n", __func__, name);
37  	}
38  	return d_splice_alias(foundinode, dentry);
39  }
40