Lines Matching refs:dnode
253 * Load dnode to memory and do some checks
256 struct dnode *hpfs_map_dnode(struct super_block *s, unsigned secno,
259 struct dnode *dnode;
261 if (hpfs_chk_sectors(s, secno, 4, "dnode")) return NULL;
263 hpfs_error(s, "dnode %08x not byte-aligned", secno);
267 if ((dnode = hpfs_map_4sectors(s, secno, qbh, DNODE_RD_AHEAD)))
270 unsigned char *d = (unsigned char *)dnode;
272 if (le32_to_cpu(dnode->magic) != DNODE_MAGIC) {
273 hpfs_error(s, "bad magic on dnode %08x", secno);
276 if (le32_to_cpu(dnode->self) != secno)
277 hpfs_error(s, "bad self pointer on dnode %08x self = %08x", secno, le32_to_cpu(dnode->self));
280 if (le32_to_cpu(dnode->first_free) > 2048) {
281 hpfs_error(s, "dnode %08x has first_free == %08x", secno, le32_to_cpu(dnode->first_free));
284 for (p = 20; p < le32_to_cpu(dnode->first_free); p += d[p] + (d[p+1] << 8)) {
285 struct hpfs_dirent *de = (struct hpfs_dirent *)((char *)dnode + p);
287 hpfs_error(s, "bad dirent size in dnode %08x, dirent %03x, last %03x", secno, p, pp);
292 hpfs_error(s, "namelen does not match dirent size in dnode %08x, dirent %03x, last %03x", secno, p, pp);
298 hpfs_error(s, "bad down pointer in dnode %08x, dirent %03x, last %03x", secno, p, pp);
304 if (p != le32_to_cpu(dnode->first_free)) {
305 hpfs_error(s, "size on last dirent does not match first_free; dnode %08x", secno);
309 hpfs_error(s, "dnode %08x does not end with \\377 entry", secno);
313 pr_err("unbalanced dnode tree, dnode %08x; see hpfs.txt 4 more info\n",
316 return dnode;