Lines Matching full:de

208  * len <= NILFS_NAME_LEN and de != NULL are guaranteed by caller.
211 nilfs_match(int len, const unsigned char *name, struct nilfs_dir_entry *de) in nilfs_match() argument
213 if (len != de->name_len) in nilfs_match()
215 if (!de->inode) in nilfs_match()
217 return !memcmp(name, de->name, len); in nilfs_match()
253 static void nilfs_set_de_type(struct nilfs_dir_entry *de, struct inode *inode) in nilfs_set_de_type() argument
257 de->file_type = nilfs_type_by_mode[(mode & S_IFMT)>>S_SHIFT]; in nilfs_set_de_type()
274 struct nilfs_dir_entry *de; in nilfs_readdir() local
283 de = (struct nilfs_dir_entry *)(kaddr + offset); in nilfs_readdir()
286 for ( ; (char *)de <= limit; de = nilfs_next_entry(de)) { in nilfs_readdir()
287 if (de->rec_len == 0) { in nilfs_readdir()
292 if (de->inode) { in nilfs_readdir()
295 if (de->file_type < NILFS_FT_MAX) in nilfs_readdir()
296 t = nilfs_filetype_table[de->file_type]; in nilfs_readdir()
300 if (!dir_emit(ctx, de->name, de->name_len, in nilfs_readdir()
301 le64_to_cpu(de->inode), t)) { in nilfs_readdir()
306 ctx->pos += nilfs_rec_len_from_disk(de->rec_len); in nilfs_readdir()
332 struct nilfs_dir_entry *de; in nilfs_find_entry() local
345 de = (struct nilfs_dir_entry *)kaddr; in nilfs_find_entry()
347 while ((char *) de <= kaddr) { in nilfs_find_entry()
348 if (de->rec_len == 0) { in nilfs_find_entry()
354 if (nilfs_match(namelen, name, de)) in nilfs_find_entry()
356 de = nilfs_next_entry(de); in nilfs_find_entry()
376 return de; in nilfs_find_entry()
381 struct nilfs_dir_entry *de = nilfs_get_folio(dir, 0, foliop); in nilfs_dotdot() local
383 if (IS_ERR(de)) in nilfs_dotdot()
385 return nilfs_next_entry(de); in nilfs_dotdot()
391 struct nilfs_dir_entry *de; in nilfs_inode_by_name() local
394 de = nilfs_find_entry(dir, qstr, &folio); in nilfs_inode_by_name()
395 if (de) { in nilfs_inode_by_name()
396 res = le64_to_cpu(de->inode); in nilfs_inode_by_name()
397 folio_release_kmap(folio, de); in nilfs_inode_by_name()
402 void nilfs_set_link(struct inode *dir, struct nilfs_dir_entry *de, in nilfs_set_link() argument
405 size_t from = offset_in_folio(folio, de); in nilfs_set_link()
406 size_t to = from + nilfs_rec_len_from_disk(de->rec_len); in nilfs_set_link()
413 de->inode = cpu_to_le64(inode->i_ino); in nilfs_set_link()
414 nilfs_set_de_type(de, inode); in nilfs_set_link()
431 struct nilfs_dir_entry *de; in nilfs_add_link() local
450 de = (struct nilfs_dir_entry *)kaddr; in nilfs_add_link()
452 while ((char *)de <= kaddr) { in nilfs_add_link()
453 if ((char *)de == dir_end) { in nilfs_add_link()
457 de->rec_len = nilfs_rec_len_to_disk(chunk_size); in nilfs_add_link()
458 de->inode = 0; in nilfs_add_link()
461 if (de->rec_len == 0) { in nilfs_add_link()
468 if (nilfs_match(namelen, name, de)) in nilfs_add_link()
470 name_len = NILFS_DIR_REC_LEN(de->name_len); in nilfs_add_link()
471 rec_len = nilfs_rec_len_from_disk(de->rec_len); in nilfs_add_link()
472 if (!de->inode && rec_len >= reclen) in nilfs_add_link()
476 de = (struct nilfs_dir_entry *)((char *)de + rec_len); in nilfs_add_link()
485 from = offset_in_folio(folio, de); in nilfs_add_link()
490 if (de->inode) { in nilfs_add_link()
493 de1 = (struct nilfs_dir_entry *)((char *)de + name_len); in nilfs_add_link()
495 de->rec_len = nilfs_rec_len_to_disk(name_len); in nilfs_add_link()
496 de = de1; in nilfs_add_link()
498 de->name_len = namelen; in nilfs_add_link()
499 memcpy(de->name, name, namelen); in nilfs_add_link()
500 de->inode = cpu_to_le64(inode->i_ino); in nilfs_add_link()
501 nilfs_set_de_type(de, inode); in nilfs_add_link()
507 folio_release_kmap(folio, de); in nilfs_add_link()
524 struct nilfs_dir_entry *de, *pde = NULL; in nilfs_delete_entry() local
529 de = (struct nilfs_dir_entry *)(kaddr + from); in nilfs_delete_entry()
531 while ((char *)de < (char *)dir) { in nilfs_delete_entry()
532 if (de->rec_len == 0) { in nilfs_delete_entry()
538 pde = de; in nilfs_delete_entry()
539 de = nilfs_next_entry(de); in nilfs_delete_entry()
563 struct nilfs_dir_entry *de; in nilfs_make_empty() local
577 de = (struct nilfs_dir_entry *)kaddr; in nilfs_make_empty()
578 de->name_len = 1; in nilfs_make_empty()
579 de->rec_len = nilfs_rec_len_to_disk(NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
580 memcpy(de->name, ".\0\0", 4); in nilfs_make_empty()
581 de->inode = cpu_to_le64(inode->i_ino); in nilfs_make_empty()
582 nilfs_set_de_type(de, inode); in nilfs_make_empty()
584 de = (struct nilfs_dir_entry *)(kaddr + NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
585 de->name_len = 2; in nilfs_make_empty()
586 de->rec_len = nilfs_rec_len_to_disk(chunk_size - NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
587 de->inode = cpu_to_le64(parent->i_ino); in nilfs_make_empty()
588 memcpy(de->name, "..\0", 4); in nilfs_make_empty()
589 nilfs_set_de_type(de, inode); in nilfs_make_empty()
607 struct nilfs_dir_entry *de; in nilfs_empty_dir() local
613 de = (struct nilfs_dir_entry *)kaddr; in nilfs_empty_dir()
616 while ((char *)de <= kaddr) { in nilfs_empty_dir()
617 if (de->rec_len == 0) { in nilfs_empty_dir()
619 "zero-length directory entry (kaddr=%p, de=%p)", in nilfs_empty_dir()
620 kaddr, de); in nilfs_empty_dir()
623 if (de->inode != 0) { in nilfs_empty_dir()
625 if (de->name[0] != '.') in nilfs_empty_dir()
627 if (de->name_len > 2) in nilfs_empty_dir()
629 if (de->name_len < 2) { in nilfs_empty_dir()
630 if (de->inode != in nilfs_empty_dir()
633 } else if (de->name[1] != '.') in nilfs_empty_dir()
636 de = nilfs_next_entry(de); in nilfs_empty_dir()