Lines Matching full:de
213 * len <= NILFS_NAME_LEN and de != NULL are guaranteed by caller.
216 nilfs_match(int len, const unsigned char *name, struct nilfs_dir_entry *de) in nilfs_match() argument
218 if (len != de->name_len) in nilfs_match()
220 if (!de->inode) in nilfs_match()
222 return !memcmp(name, de->name, len); in nilfs_match()
248 struct nilfs_dir_entry *de; in nilfs_readdir() local
257 de = (struct nilfs_dir_entry *)(kaddr + offset); in nilfs_readdir()
260 for ( ; (char *)de <= limit; de = nilfs_next_entry(de)) { in nilfs_readdir()
261 if (de->rec_len == 0) { in nilfs_readdir()
266 if (de->inode) { in nilfs_readdir()
269 t = fs_ftype_to_dtype(de->file_type); in nilfs_readdir()
271 if (!dir_emit(ctx, de->name, de->name_len, in nilfs_readdir()
272 le64_to_cpu(de->inode), t)) { in nilfs_readdir()
277 ctx->pos += nilfs_rec_len_from_disk(de->rec_len); in nilfs_readdir()
303 struct nilfs_dir_entry *de; in nilfs_find_entry() local
318 de = (struct nilfs_dir_entry *)kaddr; in nilfs_find_entry()
320 while ((char *)de <= kaddr) { in nilfs_find_entry()
321 if (de->rec_len == 0) { in nilfs_find_entry()
327 if (nilfs_match(namelen, name, de)) in nilfs_find_entry()
329 de = nilfs_next_entry(de); in nilfs_find_entry()
349 return de; in nilfs_find_entry()
355 struct nilfs_dir_entry *de, *next_de; in nilfs_dotdot() local
359 de = nilfs_get_folio(dir, 0, &folio); in nilfs_dotdot()
360 if (IS_ERR(de)) in nilfs_dotdot()
364 if (unlikely(!limit || le64_to_cpu(de->inode) != dir->i_ino || in nilfs_dotdot()
365 !nilfs_match(1, ".", de))) { in nilfs_dotdot()
370 next_de = nilfs_next_entry(de); in nilfs_dotdot()
375 if (unlikely((char *)next_de == (char *)de + nilfs_chunk_size(dir) || in nilfs_dotdot()
385 folio_release_kmap(folio, 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 (IS_ERR(de)) in nilfs_inode_by_name()
396 return PTR_ERR(de); in nilfs_inode_by_name()
398 *ino = le64_to_cpu(de->inode); in nilfs_inode_by_name()
399 folio_release_kmap(folio, de); in nilfs_inode_by_name()
403 int nilfs_set_link(struct inode *dir, struct nilfs_dir_entry *de, in nilfs_set_link() argument
406 size_t from = offset_in_folio(folio, de); in nilfs_set_link()
407 size_t to = from + nilfs_rec_len_from_disk(de->rec_len); in nilfs_set_link()
417 de->inode = cpu_to_le64(inode->i_ino); in nilfs_set_link()
418 de->file_type = fs_umode_to_ftype(inode->i_mode); in nilfs_set_link()
436 struct nilfs_dir_entry *de; in nilfs_add_link() local
455 de = (struct nilfs_dir_entry *)kaddr; in nilfs_add_link()
457 while ((char *)de <= kaddr) { in nilfs_add_link()
458 if ((char *)de == dir_end) { in nilfs_add_link()
462 de->rec_len = nilfs_rec_len_to_disk(chunk_size); in nilfs_add_link()
463 de->inode = 0; in nilfs_add_link()
466 if (de->rec_len == 0) { in nilfs_add_link()
473 if (nilfs_match(namelen, name, de)) in nilfs_add_link()
475 name_len = NILFS_DIR_REC_LEN(de->name_len); in nilfs_add_link()
476 rec_len = nilfs_rec_len_from_disk(de->rec_len); in nilfs_add_link()
477 if (!de->inode && rec_len >= reclen) in nilfs_add_link()
481 de = (struct nilfs_dir_entry *)((char *)de + rec_len); in nilfs_add_link()
490 from = offset_in_folio(folio, de); in nilfs_add_link()
495 if (de->inode) { in nilfs_add_link()
498 de1 = (struct nilfs_dir_entry *)((char *)de + name_len); in nilfs_add_link()
500 de->rec_len = nilfs_rec_len_to_disk(name_len); in nilfs_add_link()
501 de = de1; in nilfs_add_link()
503 de->name_len = namelen; in nilfs_add_link()
504 memcpy(de->name, name, namelen); in nilfs_add_link()
505 de->inode = cpu_to_le64(inode->i_ino); in nilfs_add_link()
506 de->file_type = fs_umode_to_ftype(inode->i_mode); in nilfs_add_link()
512 folio_release_kmap(folio, de); in nilfs_add_link()
529 struct nilfs_dir_entry *de, *pde = NULL; in nilfs_delete_entry() local
534 de = (struct nilfs_dir_entry *)(kaddr + from); in nilfs_delete_entry()
536 while ((char *)de < (char *)dir) { in nilfs_delete_entry()
537 if (de->rec_len == 0) { in nilfs_delete_entry()
543 pde = de; in nilfs_delete_entry()
544 de = nilfs_next_entry(de); in nilfs_delete_entry()
571 struct nilfs_dir_entry *de; in nilfs_make_empty() local
585 de = (struct nilfs_dir_entry *)kaddr; in nilfs_make_empty()
586 de->name_len = 1; in nilfs_make_empty()
587 de->rec_len = nilfs_rec_len_to_disk(NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
588 memcpy(de->name, ".\0\0", 4); in nilfs_make_empty()
589 de->inode = cpu_to_le64(inode->i_ino); in nilfs_make_empty()
590 de->file_type = fs_umode_to_ftype(inode->i_mode); in nilfs_make_empty()
592 de = (struct nilfs_dir_entry *)(kaddr + NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
593 de->name_len = 2; in nilfs_make_empty()
594 de->rec_len = nilfs_rec_len_to_disk(chunk_size - NILFS_DIR_REC_LEN(1)); in nilfs_make_empty()
595 de->inode = cpu_to_le64(parent->i_ino); in nilfs_make_empty()
596 memcpy(de->name, "..\0", 4); in nilfs_make_empty()
597 de->file_type = fs_umode_to_ftype(inode->i_mode); in nilfs_make_empty()
615 struct nilfs_dir_entry *de; in nilfs_empty_dir() local
621 de = (struct nilfs_dir_entry *)kaddr; in nilfs_empty_dir()
624 while ((char *)de <= kaddr) { in nilfs_empty_dir()
625 if (de->rec_len == 0) { in nilfs_empty_dir()
627 "zero-length directory entry (kaddr=%p, de=%p)", in nilfs_empty_dir()
628 kaddr, de); in nilfs_empty_dir()
631 if (de->inode != 0) { in nilfs_empty_dir()
633 if (de->name[0] != '.') in nilfs_empty_dir()
635 if (de->name_len > 2) in nilfs_empty_dir()
637 if (de->name_len < 2) { in nilfs_empty_dir()
638 if (de->inode != in nilfs_empty_dir()
641 } else if (de->name[1] != '.') in nilfs_empty_dir()
644 de = nilfs_next_entry(de); in nilfs_empty_dir()