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 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 return ERR_CAST(foundinode); 36 } 37 } else { 38 pr_debug("%s(): not found %s\n", __func__, name); 39 return NULL; 40 } 41 d_add(dentry, foundinode); 42 return NULL; 43 } 44