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