Lines Matching refs:dnode
203 * Load dnode to memory and do some checks
206 struct dnode *hpfs_map_dnode(struct super_block *s, unsigned secno,
209 struct dnode *dnode;
211 if (hpfs_chk_sectors(s, secno, 4, "dnode")) return NULL;
213 hpfs_error(s, "dnode %08x not byte-aligned", secno);
217 if ((dnode = hpfs_map_4sectors(s, secno, qbh, DNODE_RD_AHEAD)))
220 unsigned char *d = (char *)dnode;
222 if (dnode->magic != DNODE_MAGIC) {
223 hpfs_error(s, "bad magic on dnode %08x", secno);
226 if (dnode->self != secno)
227 hpfs_error(s, "bad self pointer on dnode %08x self = %08x", secno, dnode->self);
230 if (dnode->first_free > 2048/* || dnode->first_free < 84*/) {
231 hpfs_error(s, "dnode %08x has first_free == %08x", secno, dnode->first_free);
234 for (p = 20; p < dnode->first_free; p += d[p] + (d[p+1] << 8)) {
235 struct hpfs_dirent *de = (struct hpfs_dirent *)((char *)dnode + p);
237 hpfs_error(s, "bad dirent size in dnode %08x, dirent %03x, last %03x", secno, p, pp);
242 hpfs_error(s, "namelen does not match dirent size in dnode %08x, dirent %03x, last %03x", secno, p, pp);
248 hpfs_error(s, "bad down pointer in dnode %08x, dirent %03x, last %03x", secno, p, pp);
254 if (p != dnode->first_free) {
255 hpfs_error(s, "size on last dirent does not match first_free; dnode %08x", secno);
259 hpfs_error(s, "dnode %08x does not end with \\377 entry", secno);
262 if (b == 3) printk("HPFS: warning: unbalanced dnode tree, dnode %08x; see hpfs.txt 4 more info\n", secno);
264 return dnode;