Lines Matching refs:c

31 static int check_node_data(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info *tn)  in check_node_data()  argument
46 if (jffs2_is_writebuffered(c)) { in check_node_data()
47 int adj = ofs % c->wbuf_pagesize; in check_node_data()
49 adj = c->wbuf_pagesize - adj; in check_node_data()
67 err = mtd_point(c->mtd, ofs, len, &retlen, (void **)&buffer, NULL); in check_node_data()
70 mtd_unpoint(c->mtd, ofs, retlen); in check_node_data()
85 err = jffs2_flash_read(c, ofs, len, &retlen, buffer); in check_node_data()
104 mtd_unpoint(c->mtd, ofs, len); in check_node_data()
114 jeb = &c->blocks[ref->flash_offset / c->sector_size]; in check_node_data()
115 len = ref_totlen(c, jeb, ref); in check_node_data()
125 spin_lock(&c->erase_completion_lock); in check_node_data()
128 c->used_size += len; in check_node_data()
129 c->unchecked_size -= len; in check_node_data()
130 jffs2_dbg_acct_paranoia_check_nolock(c, jeb); in check_node_data()
131 spin_unlock(&c->erase_completion_lock); in check_node_data()
140 mtd_unpoint(c->mtd, ofs, len); in check_node_data()
150 static int check_tn_node(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info *tn) in check_tn_node() argument
163 ret = check_node_data(c, tn); in check_tn_node()
169 jffs2_mark_node_obsolete(c, tn->fn->raw); in check_tn_node()
199 static void jffs2_kill_tn(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info *tn) in jffs2_kill_tn() argument
201 jffs2_mark_node_obsolete(c, tn->fn->raw); in jffs2_kill_tn()
218 static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c, in jffs2_add_tn_to_tree() argument
236 jffs2_kill_tn(c, rii->mdata_tn); in jffs2_add_tn_to_tree()
240 jffs2_kill_tn(c, tn); in jffs2_add_tn_to_tree()
278 if (!check_tn_node(c, this)) { in jffs2_add_tn_to_tree()
281 jffs2_kill_tn(c, tn); in jffs2_add_tn_to_tree()
287 jffs2_kill_tn(c, this); in jffs2_add_tn_to_tree()
296 if (check_tn_node(c, tn)) { in jffs2_add_tn_to_tree()
298 jffs2_kill_tn(c, tn); in jffs2_add_tn_to_tree()
309 jffs2_kill_tn(c, this); in jffs2_add_tn_to_tree()
320 if (!check_tn_node(c, this)) { in jffs2_add_tn_to_tree()
322 jffs2_kill_tn(c, tn); in jffs2_add_tn_to_tree()
328 jffs2_kill_tn(c, this); in jffs2_add_tn_to_tree()
451 static int jffs2_build_inode_fragtree(struct jffs2_sb_info *c, in jffs2_build_inode_fragtree() argument
500 if (check_tn_node(c, this)) { in jffs2_build_inode_fragtree()
504 jffs2_kill_tn(c, this); in jffs2_build_inode_fragtree()
518 ret = jffs2_add_full_dnode_to_inode(c, f, this->fn); in jffs2_build_inode_fragtree()
525 if (check_tn_node(c, this)) in jffs2_build_inode_fragtree()
526 jffs2_mark_node_obsolete(c, this->fn->raw); in jffs2_build_inode_fragtree()
586 static inline int read_direntry(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, in read_direntry() argument
600 jffs2_mark_node_obsolete(c, ref); in read_direntry()
613 jffs2_mark_node_obsolete(c, ref); in read_direntry()
617 jeb = &c->blocks[ref->flash_offset / c->sector_size]; in read_direntry()
618 len = ref_totlen(c, jeb, ref); in read_direntry()
620 spin_lock(&c->erase_completion_lock); in read_direntry()
623 c->used_size += len; in read_direntry()
624 c->unchecked_size -= len; in read_direntry()
626 spin_unlock(&c->erase_completion_lock); in read_direntry()
661 err = jffs2_flash_read(c, (ref_offset(ref)) + read, in read_direntry()
681 jffs2_add_fd_to_list(c, fd, &rii->fds); in read_direntry()
693 static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, in read_dnode() argument
709 jffs2_mark_node_obsolete(c, ref); in read_dnode()
729 jffs2_dbg_dump_node(c, ref_offset(ref)); in read_dnode()
730 jffs2_mark_node_obsolete(c, ref); in read_dnode()
734 if (jffs2_is_writebuffered(c) && csize != 0) { in read_dnode()
785 jffs2_mark_node_obsolete(c, ref); in read_dnode()
799 jeb = &c->blocks[ref->flash_offset / c->sector_size]; in read_dnode()
800 len = ref_totlen(c, jeb, ref); in read_dnode()
802 spin_lock(&c->erase_completion_lock); in read_dnode()
805 c->used_size += len; in read_dnode()
806 c->unchecked_size -= len; in read_dnode()
808 spin_unlock(&c->erase_completion_lock); in read_dnode()
840 ret = jffs2_add_tn_to_tree(c, rii, tn); in read_dnode()
868 static inline int read_unknown(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, struct jffs… in read_unknown() argument
877 jffs2_mark_node_obsolete(c, ref); in read_unknown()
895 BUG_ON(!(c->flags & JFFS2_SB_FLAG_RO)); in read_unknown()
906 jffs2_mark_node_obsolete(c, ref); in read_unknown()
920 static int read_more(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, in read_more() argument
927 if (jffs2_is_writebuffered(c)) { in read_more()
928 int rem = to_read % c->wbuf_pagesize; in read_more()
931 to_read += c->wbuf_pagesize - rem; in read_more()
939 err = jffs2_flash_read(c, offs, to_read, &retlen, buf + *rdlen); in read_more()
961 static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_get_inode_nodes() argument
976 len = sizeof(union jffs2_node_union) + c->wbuf_pagesize; in jffs2_get_inode_nodes()
981 spin_lock(&c->erase_completion_lock); in jffs2_get_inode_nodes()
994 spin_unlock(&c->erase_completion_lock); in jffs2_get_inode_nodes()
1005 if (jffs2_is_writebuffered(c)) { in jffs2_get_inode_nodes()
1016 rem = end % c->wbuf_pagesize; in jffs2_get_inode_nodes()
1018 end += c->wbuf_pagesize - rem; in jffs2_get_inode_nodes()
1025 err = jffs2_flash_read(c, ref_offset(ref), len, &retlen, buf); in jffs2_get_inode_nodes()
1046 jffs2_dbg_dump_node(c, ref_offset(ref)); in jffs2_get_inode_nodes()
1047 jffs2_mark_node_obsolete(c, ref); in jffs2_get_inode_nodes()
1054 jffs2_mark_node_obsolete(c, ref); in jffs2_get_inode_nodes()
1064 err = read_more(c, ref, sizeof(struct jffs2_raw_dirent), &len, buf); in jffs2_get_inode_nodes()
1069 err = read_direntry(c, ref, &node->d, retlen, rii); in jffs2_get_inode_nodes()
1079 err = read_more(c, ref, sizeof(struct jffs2_raw_inode), &len, buf); in jffs2_get_inode_nodes()
1084 err = read_dnode(c, ref, &node->i, len, rii); in jffs2_get_inode_nodes()
1093 err = read_more(c, ref, sizeof(struct jffs2_unknown_node), &len, buf); in jffs2_get_inode_nodes()
1098 err = read_unknown(c, ref, &node->u); in jffs2_get_inode_nodes()
1104 spin_lock(&c->erase_completion_lock); in jffs2_get_inode_nodes()
1107 spin_unlock(&c->erase_completion_lock); in jffs2_get_inode_nodes()
1125 static int jffs2_do_read_inode_internal(struct jffs2_sb_info *c, in jffs2_do_read_inode_internal() argument
1140 ret = jffs2_get_inode_nodes(c, f, &rii); in jffs2_do_read_inode_internal()
1145 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_read_inode_internal()
1149 ret = jffs2_build_inode_fragtree(c, f, &rii); in jffs2_do_read_inode_internal()
1154 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_read_inode_internal()
1170 jffs2_kill_tn(c, rii.mdata_tn); in jffs2_do_read_inode_internal()
1185 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_read_inode_internal()
1197 jffs2_set_inocache_state(c, f->inocache, INO_STATE_PRESENT); in jffs2_do_read_inode_internal()
1201 …ret = jffs2_flash_read(c, ref_offset(rii.latest_ref), sizeof(*latest_node), &retlen, (void *)lates… in jffs2_do_read_inode_internal()
1207 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1216 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1232 new_size = jffs2_truncate_fragtree(c, &f->fragtree, je32_to_cpu(latest_node->isize)); in jffs2_do_read_inode_internal()
1255 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1262 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1266 ret = jffs2_flash_read(c, ref_offset(rii.latest_ref) + sizeof(*latest_node), in jffs2_do_read_inode_internal()
1275 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1293 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1300 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1309 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1319 jffs2_set_inocache_state(c, f->inocache, INO_STATE_PRESENT); in jffs2_do_read_inode_internal()
1325 int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_do_read_inode() argument
1331 spin_lock(&c->inocache_lock); in jffs2_do_read_inode()
1332 f->inocache = jffs2_get_ino_cache(c, ino); in jffs2_do_read_inode()
1348 sleep_on_spinunlock(&c->inocache_wq, &c->inocache_lock); in jffs2_do_read_inode()
1365 spin_unlock(&c->inocache_lock); in jffs2_do_read_inode()
1379 jffs2_add_ino_cache(c, f->inocache); in jffs2_do_read_inode()
1386 return jffs2_do_read_inode_internal(c, f, latest_node); in jffs2_do_read_inode()
1389 int jffs2_do_crccheck_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic) in jffs2_do_crccheck_inode() argument
1402 ret = jffs2_do_read_inode_internal(c, f, &n); in jffs2_do_crccheck_inode()
1405 jffs2_do_clear_inode(c, f); in jffs2_do_crccheck_inode()
1407 jffs2_xattr_do_crccheck_inode(c, ic); in jffs2_do_crccheck_inode()
1412 void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f) in jffs2_do_clear_inode() argument
1417 jffs2_xattr_delete_inode(c, f->inocache); in jffs2_do_clear_inode()
1422 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING); in jffs2_do_clear_inode()
1426 jffs2_mark_node_obsolete(c, f->metadata->raw); in jffs2_do_clear_inode()
1430 jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL); in jffs2_do_clear_inode()
1445 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_clear_inode()
1447 jffs2_del_ino_cache(c, f->inocache); in jffs2_do_clear_inode()