Lines Matching +full:c +full:- +full:version +full:- +full:name
2 * JFFS2 -- Journalling Flash File System, Version 2.
4 * Copyright © 2001-2007 Red Hat, Inc.
23 int jffs2_do_new_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_do_new_inode() argument
30 return -ENOMEM; in jffs2_do_new_inode()
35 f->inocache = ic; in jffs2_do_new_inode()
36 f->inocache->pino_nlink = 1; /* Will be overwritten shortly for directories */ in jffs2_do_new_inode()
37 f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache; in jffs2_do_new_inode()
38 f->inocache->state = INO_STATE_PRESENT; in jffs2_do_new_inode()
40 jffs2_add_ino_cache(c, f->inocache); in jffs2_do_new_inode()
41 jffs2_dbg(1, "%s(): Assigned ino# %d\n", __func__, f->inocache->ino); in jffs2_do_new_inode()
42 ri->ino = cpu_to_je32(f->inocache->ino); in jffs2_do_new_inode()
44 ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); in jffs2_do_new_inode()
45 ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE); in jffs2_do_new_inode()
46 ri->totlen = cpu_to_je32(PAD(sizeof(*ri))); in jffs2_do_new_inode()
47 ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)); in jffs2_do_new_inode()
48 ri->mode = cpu_to_jemode(mode); in jffs2_do_new_inode()
50 f->highest_version = 1; in jffs2_do_new_inode()
51 ri->version = cpu_to_je32(f->highest_version); in jffs2_do_new_inode()
56 /* jffs2_write_dnode - given a raw_inode, allocate a full_dnode for it,
59 struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_write_dnode() argument
72 D1(if(je32_to_cpu(ri->hdr_crc) != crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)) { in jffs2_write_dnode()
82 if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) { in jffs2_write_dnode()
83 pr_warn("%s(): ri->totlen (0x%08x) != sizeof(*ri) (0x%08zx) + datalen (0x%08x)\n", in jffs2_write_dnode()
84 __func__, je32_to_cpu(ri->totlen), in jffs2_write_dnode()
90 return ERR_PTR(-ENOMEM); in jffs2_write_dnode()
96 flash_ofs = write_ofs(c); in jffs2_write_dnode()
98 jffs2_dbg_prewrite_paranoia_check(c, flash_ofs, vecs[0].iov_len + vecs[1].iov_len); in jffs2_write_dnode()
100 if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(ri->version) < f->highest_version)) { in jffs2_write_dnode()
102 jffs2_dbg(1, "%s(): dnode_version %d, highest version %d -> updating dnode\n", in jffs2_write_dnode()
104 je32_to_cpu(ri->version), f->highest_version); in jffs2_write_dnode()
105 ri->version = cpu_to_je32(++f->highest_version); in jffs2_write_dnode()
106 ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8)); in jffs2_write_dnode()
109 ret = jffs2_flash_writev(c, vecs, cnt, flash_ofs, &retlen, in jffs2_write_dnode()
110 (alloc_mode==ALLOC_GC)?0:f->inocache->ino); in jffs2_write_dnode()
118 /* Don't change raw->size to match retlen. We may have in jffs2_write_dnode()
123 jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*ri)+datalen), NULL); in jffs2_write_dnode()
131 struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size]; in jffs2_write_dnode()
137 jffs2_dbg_acct_sanity_check(c,jeb); in jffs2_write_dnode()
138 jffs2_dbg_acct_paranoia_check(c, jeb); in jffs2_write_dnode()
141 ret = jffs2_reserve_space_gc(c, sizeof(*ri) + datalen, &dummy, in jffs2_write_dnode()
145 mutex_unlock(&f->sem); in jffs2_write_dnode()
146 jffs2_complete_reservation(c); in jffs2_write_dnode()
148 ret = jffs2_reserve_space(c, sizeof(*ri) + datalen, &dummy, in jffs2_write_dnode()
150 mutex_lock(&f->sem); in jffs2_write_dnode()
154 flash_ofs = write_ofs(c); in jffs2_write_dnode()
158 jffs2_dbg_acct_sanity_check(c,jeb); in jffs2_write_dnode()
159 jffs2_dbg_acct_paranoia_check(c, jeb); in jffs2_write_dnode()
168 return ERR_PTR(ret?ret:-EIO); in jffs2_write_dnode()
175 if ((je32_to_cpu(ri->dsize) >= PAGE_SIZE) || in jffs2_write_dnode()
176 ( ((je32_to_cpu(ri->offset)&(PAGE_SIZE-1))==0) && in jffs2_write_dnode()
177 (je32_to_cpu(ri->dsize)+je32_to_cpu(ri->offset) == je32_to_cpu(ri->isize)))) { in jffs2_write_dnode()
182 fn->raw = jffs2_add_physical_node_ref(c, flash_ofs, PAD(sizeof(*ri)+datalen), f->inocache); in jffs2_write_dnode()
183 if (IS_ERR(fn->raw)) { in jffs2_write_dnode()
184 void *hold_err = fn->raw; in jffs2_write_dnode()
189 fn->ofs = je32_to_cpu(ri->offset); in jffs2_write_dnode()
190 fn->size = je32_to_cpu(ri->dsize); in jffs2_write_dnode()
191 fn->frags = 0; in jffs2_write_dnode()
194 flash_ofs & ~3, flash_ofs & 3, je32_to_cpu(ri->dsize), in jffs2_write_dnode()
195 je32_to_cpu(ri->csize), je32_to_cpu(ri->node_crc), in jffs2_write_dnode()
196 je32_to_cpu(ri->data_crc), je32_to_cpu(ri->totlen)); in jffs2_write_dnode()
199 jffs2_dbg_acct_sanity_check(c,NULL); in jffs2_write_dnode()
205 struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_write_dirent() argument
206 struct jffs2_raw_dirent *rd, const unsigned char *name, in jffs2_write_dirent() argument
216 jffs2_dbg(1, "%s(ino #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x)\n", in jffs2_write_dirent()
218 je32_to_cpu(rd->pino), name, name, je32_to_cpu(rd->ino), in jffs2_write_dirent()
219 je32_to_cpu(rd->name_crc)); in jffs2_write_dirent()
221 D1(if(je32_to_cpu(rd->hdr_crc) != crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)) { in jffs2_write_dirent()
226 if (strnlen(name, namelen) != namelen) { in jffs2_write_dirent()
229 pr_crit("Error in jffs2_write_dirent() -- name contains zero bytes!\n"); in jffs2_write_dirent()
230 pr_crit("Directory inode #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x\n", in jffs2_write_dirent()
231 je32_to_cpu(rd->pino), name, name, je32_to_cpu(rd->ino), in jffs2_write_dirent()
232 je32_to_cpu(rd->name_crc)); in jffs2_write_dirent()
234 return ERR_PTR(-EIO); in jffs2_write_dirent()
239 vecs[1].iov_base = (unsigned char *)name; in jffs2_write_dirent()
244 return ERR_PTR(-ENOMEM); in jffs2_write_dirent()
246 fd->version = je32_to_cpu(rd->version); in jffs2_write_dirent()
247 fd->ino = je32_to_cpu(rd->ino); in jffs2_write_dirent()
248 fd->nhash = full_name_hash(NULL, name, namelen); in jffs2_write_dirent()
249 fd->type = rd->type; in jffs2_write_dirent()
250 memcpy(fd->name, name, namelen); in jffs2_write_dirent()
251 fd->name[namelen]=0; in jffs2_write_dirent()
254 flash_ofs = write_ofs(c); in jffs2_write_dirent()
256 jffs2_dbg_prewrite_paranoia_check(c, flash_ofs, vecs[0].iov_len + vecs[1].iov_len); in jffs2_write_dirent()
258 if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(rd->version) < f->highest_version)) { in jffs2_write_dirent()
260 jffs2_dbg(1, "%s(): dirent_version %d, highest version %d -> updating dirent\n", in jffs2_write_dirent()
262 je32_to_cpu(rd->version), f->highest_version); in jffs2_write_dirent()
263 rd->version = cpu_to_je32(++f->highest_version); in jffs2_write_dirent()
264 fd->version = je32_to_cpu(rd->version); in jffs2_write_dirent()
265 rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8)); in jffs2_write_dirent()
268 ret = jffs2_flash_writev(c, vecs, 2, flash_ofs, &retlen, in jffs2_write_dirent()
269 (alloc_mode==ALLOC_GC)?0:je32_to_cpu(rd->pino)); in jffs2_write_dirent()
275 jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*rd)+namelen), NULL); in jffs2_write_dirent()
283 struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size]; in jffs2_write_dirent()
289 jffs2_dbg_acct_sanity_check(c,jeb); in jffs2_write_dirent()
290 jffs2_dbg_acct_paranoia_check(c, jeb); in jffs2_write_dirent()
293 ret = jffs2_reserve_space_gc(c, sizeof(*rd) + namelen, &dummy, in jffs2_write_dirent()
297 mutex_unlock(&f->sem); in jffs2_write_dirent()
298 jffs2_complete_reservation(c); in jffs2_write_dirent()
300 ret = jffs2_reserve_space(c, sizeof(*rd) + namelen, &dummy, in jffs2_write_dirent()
302 mutex_lock(&f->sem); in jffs2_write_dirent()
306 flash_ofs = write_ofs(c); in jffs2_write_dirent()
309 jffs2_dbg_acct_sanity_check(c,jeb); in jffs2_write_dirent()
310 jffs2_dbg_acct_paranoia_check(c, jeb); in jffs2_write_dirent()
318 return ERR_PTR(ret?ret:-EIO); in jffs2_write_dirent()
321 fd->raw = jffs2_add_physical_node_ref(c, flash_ofs | dirent_node_state(rd), in jffs2_write_dirent()
322 PAD(sizeof(*rd)+namelen), f->inocache); in jffs2_write_dirent()
323 if (IS_ERR(fd->raw)) { in jffs2_write_dirent()
324 void *hold_err = fd->raw; in jffs2_write_dirent()
331 jffs2_dbg_acct_sanity_check(c,NULL); in jffs2_write_dirent()
337 /* The OS-specific code fills in the metadata in the jffs2_raw_inode for us, so that
340 int jffs2_write_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_write_inode_range() argument
348 __func__, f->inocache->ino, offset, writelen); in jffs2_write_inode_range()
362 ret = jffs2_reserve_space(c, sizeof(*ri) + JFFS2_MIN_DATA_LEN, in jffs2_write_inode_range()
368 mutex_lock(&f->sem); in jffs2_write_inode_range()
370 PAGE_SIZE - (offset & (PAGE_SIZE-1))); in jffs2_write_inode_range()
371 cdatalen = min_t(uint32_t, alloclen - sizeof(*ri), datalen); in jffs2_write_inode_range()
373 comprtype = jffs2_compress(c, f, buf, &comprbuf, &datalen, &cdatalen); in jffs2_write_inode_range()
375 ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); in jffs2_write_inode_range()
376 ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE); in jffs2_write_inode_range()
377 ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen); in jffs2_write_inode_range()
378 ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)); in jffs2_write_inode_range()
380 ri->ino = cpu_to_je32(f->inocache->ino); in jffs2_write_inode_range()
381 ri->version = cpu_to_je32(++f->highest_version); in jffs2_write_inode_range()
382 ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen)); in jffs2_write_inode_range()
383 ri->offset = cpu_to_je32(offset); in jffs2_write_inode_range()
384 ri->csize = cpu_to_je32(cdatalen); in jffs2_write_inode_range()
385 ri->dsize = cpu_to_je32(datalen); in jffs2_write_inode_range()
386 ri->compr = comprtype & 0xff; in jffs2_write_inode_range()
387 ri->usercompr = (comprtype >> 8 ) & 0xff; in jffs2_write_inode_range()
388 ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8)); in jffs2_write_inode_range()
389 ri->data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen)); in jffs2_write_inode_range()
391 fn = jffs2_write_dnode(c, f, ri, comprbuf, cdatalen, ALLOC_NORETRY); in jffs2_write_inode_range()
397 mutex_unlock(&f->sem); in jffs2_write_inode_range()
398 jffs2_complete_reservation(c); in jffs2_write_inode_range()
407 ret = jffs2_add_full_dnode_to_inode(c, f, fn); in jffs2_write_inode_range()
408 if (f->metadata) { in jffs2_write_inode_range()
409 jffs2_mark_node_obsolete(c, f->metadata->raw); in jffs2_write_inode_range()
410 jffs2_free_full_dnode(f->metadata); in jffs2_write_inode_range()
411 f->metadata = NULL; in jffs2_write_inode_range()
417 jffs2_mark_node_obsolete(c, fn->raw); in jffs2_write_inode_range()
420 mutex_unlock(&f->sem); in jffs2_write_inode_range()
421 jffs2_complete_reservation(c); in jffs2_write_inode_range()
424 mutex_unlock(&f->sem); in jffs2_write_inode_range()
425 jffs2_complete_reservation(c); in jffs2_write_inode_range()
428 ret = -EIO; in jffs2_write_inode_range()
434 writelen -= datalen; in jffs2_write_inode_range()
441 int jffs2_do_create(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, in jffs2_do_create() argument
454 ret = jffs2_reserve_space(c, sizeof(*ri), &alloclen, ALLOC_NORMAL, in jffs2_do_create()
460 mutex_lock(&f->sem); in jffs2_do_create()
462 ri->data_crc = cpu_to_je32(0); in jffs2_do_create()
463 ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8)); in jffs2_do_create()
465 fn = jffs2_write_dnode(c, f, ri, NULL, 0, ALLOC_NORMAL); in jffs2_do_create()
468 jemode_to_cpu(ri->mode)); in jffs2_do_create()
473 mutex_unlock(&f->sem); in jffs2_do_create()
474 jffs2_complete_reservation(c); in jffs2_do_create()
480 f->metadata = fn; in jffs2_do_create()
482 mutex_unlock(&f->sem); in jffs2_do_create()
483 jffs2_complete_reservation(c); in jffs2_do_create()
485 ret = jffs2_init_security(&f->vfs_inode, &dir_f->vfs_inode, qstr); in jffs2_do_create()
488 ret = jffs2_init_acl_post(&f->vfs_inode); in jffs2_do_create()
492 ret = jffs2_reserve_space(c, sizeof(*rd)+qstr->len, &alloclen, in jffs2_do_create()
493 ALLOC_NORMAL, JFFS2_SUMMARY_DIRENT_SIZE(qstr->len)); in jffs2_do_create()
504 jffs2_complete_reservation(c); in jffs2_do_create()
505 return -ENOMEM; in jffs2_do_create()
508 mutex_lock(&dir_f->sem); in jffs2_do_create()
510 rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); in jffs2_do_create()
511 rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT); in jffs2_do_create()
512 rd->totlen = cpu_to_je32(sizeof(*rd) + qstr->len); in jffs2_do_create()
513 rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)); in jffs2_do_create()
515 rd->pino = cpu_to_je32(dir_f->inocache->ino); in jffs2_do_create()
516 rd->version = cpu_to_je32(++dir_f->highest_version); in jffs2_do_create()
517 rd->ino = ri->ino; in jffs2_do_create()
518 rd->mctime = ri->ctime; in jffs2_do_create()
519 rd->nsize = qstr->len; in jffs2_do_create()
520 rd->type = DT_REG; in jffs2_do_create()
521 rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8)); in jffs2_do_create()
522 rd->name_crc = cpu_to_je32(crc32(0, qstr->name, qstr->len)); in jffs2_do_create()
524 fd = jffs2_write_dirent(c, dir_f, rd, qstr->name, qstr->len, ALLOC_NORMAL); in jffs2_do_create()
531 jffs2_complete_reservation(c); in jffs2_do_create()
532 mutex_unlock(&dir_f->sem); in jffs2_do_create()
538 jffs2_add_fd_to_list(c, fd, &dir_f->dents); in jffs2_do_create()
540 jffs2_complete_reservation(c); in jffs2_do_create()
541 mutex_unlock(&dir_f->sem); in jffs2_do_create()
547 int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, in jffs2_do_unlink() argument
548 const char *name, int namelen, struct jffs2_inode_info *dead_f, in jffs2_do_unlink() argument
556 if (!jffs2_can_mark_obsolete(c)) { in jffs2_do_unlink()
561 return -ENOMEM; in jffs2_do_unlink()
563 ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &alloclen, in jffs2_do_unlink()
570 mutex_lock(&dir_f->sem); in jffs2_do_unlink()
573 rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); in jffs2_do_unlink()
574 rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT); in jffs2_do_unlink()
575 rd->totlen = cpu_to_je32(sizeof(*rd) + namelen); in jffs2_do_unlink()
576 rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)); in jffs2_do_unlink()
578 rd->pino = cpu_to_je32(dir_f->inocache->ino); in jffs2_do_unlink()
579 rd->version = cpu_to_je32(++dir_f->highest_version); in jffs2_do_unlink()
580 rd->ino = cpu_to_je32(0); in jffs2_do_unlink()
581 rd->mctime = cpu_to_je32(time); in jffs2_do_unlink()
582 rd->nsize = namelen; in jffs2_do_unlink()
583 rd->type = DT_UNKNOWN; in jffs2_do_unlink()
584 rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8)); in jffs2_do_unlink()
585 rd->name_crc = cpu_to_je32(crc32(0, name, namelen)); in jffs2_do_unlink()
587 fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, ALLOC_DELETION); in jffs2_do_unlink()
592 jffs2_complete_reservation(c); in jffs2_do_unlink()
593 mutex_unlock(&dir_f->sem); in jffs2_do_unlink()
598 jffs2_add_fd_to_list(c, fd, &dir_f->dents); in jffs2_do_unlink()
599 mutex_unlock(&dir_f->sem); in jffs2_do_unlink()
601 uint32_t nhash = full_name_hash(NULL, name, namelen); in jffs2_do_unlink()
603 fd = dir_f->dents; in jffs2_do_unlink()
606 mutex_lock(&c->alloc_sem); in jffs2_do_unlink()
607 mutex_lock(&dir_f->sem); in jffs2_do_unlink()
609 for (fd = dir_f->dents; fd; fd = fd->next) { in jffs2_do_unlink()
610 if (fd->nhash == nhash && in jffs2_do_unlink()
611 !memcmp(fd->name, name, namelen) && in jffs2_do_unlink()
612 !fd->name[namelen]) { in jffs2_do_unlink()
615 fd->ino, ref_offset(fd->raw)); in jffs2_do_unlink()
616 jffs2_mark_node_obsolete(c, fd->raw); in jffs2_do_unlink()
620 node-less deletion dirent instead -- a placeholder */ in jffs2_do_unlink()
621 fd->raw = NULL; in jffs2_do_unlink()
622 fd->ino = 0; in jffs2_do_unlink()
626 mutex_unlock(&dir_f->sem); in jffs2_do_unlink()
630 /* Also catch the !f->inocache case, where there was a dirent in jffs2_do_unlink()
632 if (dead_f && dead_f->inocache) { in jffs2_do_unlink()
634 mutex_lock(&dead_f->sem); in jffs2_do_unlink()
636 if (S_ISDIR(OFNI_EDONI_2SFFJ(dead_f)->i_mode)) { in jffs2_do_unlink()
637 while (dead_f->dents) { in jffs2_do_unlink()
639 fd = dead_f->dents; in jffs2_do_unlink()
641 dead_f->dents = fd->next; in jffs2_do_unlink()
643 if (fd->ino) { in jffs2_do_unlink()
644 pr_warn("Deleting inode #%u with active dentry \"%s\"->ino #%u\n", in jffs2_do_unlink()
645 dead_f->inocache->ino, in jffs2_do_unlink()
646 fd->name, fd->ino); in jffs2_do_unlink()
649 fd->name, in jffs2_do_unlink()
650 dead_f->inocache->ino); in jffs2_do_unlink()
652 if (fd->raw) in jffs2_do_unlink()
653 jffs2_mark_node_obsolete(c, fd->raw); in jffs2_do_unlink()
656 dead_f->inocache->pino_nlink = 0; in jffs2_do_unlink()
658 dead_f->inocache->pino_nlink--; in jffs2_do_unlink()
660 mutex_unlock(&dead_f->sem); in jffs2_do_unlink()
663 jffs2_complete_reservation(c); in jffs2_do_unlink()
669 …jffs2_do_link (struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, uint32_t ino, uint8_t type… in jffs2_do_link() argument
678 return -ENOMEM; in jffs2_do_link()
680 ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &alloclen, in jffs2_do_link()
687 mutex_lock(&dir_f->sem); in jffs2_do_link()
690 rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); in jffs2_do_link()
691 rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT); in jffs2_do_link()
692 rd->totlen = cpu_to_je32(sizeof(*rd) + namelen); in jffs2_do_link()
693 rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)); in jffs2_do_link()
695 rd->pino = cpu_to_je32(dir_f->inocache->ino); in jffs2_do_link()
696 rd->version = cpu_to_je32(++dir_f->highest_version); in jffs2_do_link()
697 rd->ino = cpu_to_je32(ino); in jffs2_do_link()
698 rd->mctime = cpu_to_je32(time); in jffs2_do_link()
699 rd->nsize = namelen; in jffs2_do_link()
701 rd->type = type; in jffs2_do_link()
703 rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8)); in jffs2_do_link()
704 rd->name_crc = cpu_to_je32(crc32(0, name, namelen)); in jffs2_do_link()
706 fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, ALLOC_NORMAL); in jffs2_do_link()
711 jffs2_complete_reservation(c); in jffs2_do_link()
712 mutex_unlock(&dir_f->sem); in jffs2_do_link()
717 jffs2_add_fd_to_list(c, fd, &dir_f->dents); in jffs2_do_link()
719 jffs2_complete_reservation(c); in jffs2_do_link()
720 mutex_unlock(&dir_f->sem); in jffs2_do_link()