Lines Matching refs:f
452 struct jffs2_inode_info *f, in jffs2_build_inode_fragtree() argument
518 ret = jffs2_add_full_dnode_to_inode(c, f, this->fn); in jffs2_build_inode_fragtree()
961 static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_info *f, in jffs2_get_inode_nodes() argument
972 dbg_readinode("ino #%u\n", f->inocache->ino); in jffs2_get_inode_nodes()
982 valid_ref = jffs2_first_valid_node(f->inocache->nodes); in jffs2_get_inode_nodes()
983 if (!valid_ref && f->inocache->ino != 1) in jffs2_get_inode_nodes()
984 JFFS2_WARNING("Eep. No valid nodes for ino #%u.\n", f->inocache->ino); in jffs2_get_inode_nodes()
1110 f->highest_version = rii->highest_version; in jffs2_get_inode_nodes()
1113 f->inocache->ino, rii->highest_version, rii->latest_mctime, in jffs2_get_inode_nodes()
1126 struct jffs2_inode_info *f, in jffs2_do_read_inode_internal() argument
1134 dbg_readinode("ino #%u pino/nlink is %d\n", f->inocache->ino, in jffs2_do_read_inode_internal()
1135 f->inocache->pino_nlink); in jffs2_do_read_inode_internal()
1140 ret = jffs2_get_inode_nodes(c, f, &rii); in jffs2_do_read_inode_internal()
1143 JFFS2_ERROR("cannot read nodes for ino %u, returned error is %d\n", f->inocache->ino, ret); in jffs2_do_read_inode_internal()
1144 if (f->inocache->state == INO_STATE_READING) 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()
1152 f->inocache->ino, ret); in jffs2_do_read_inode_internal()
1153 if (f->inocache->state == INO_STATE_READING) in jffs2_do_read_inode_internal()
1154 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_read_inode_internal()
1167 f->metadata = rii.mdata_tn->fn; in jffs2_do_read_inode_internal()
1175 f->dents = rii.fds; in jffs2_do_read_inode_internal()
1177 jffs2_dbg_fragtree_paranoia_check_nolock(f); in jffs2_do_read_inode_internal()
1181 if (f->inocache->ino != 1) { in jffs2_do_read_inode_internal()
1182 JFFS2_WARNING("no data nodes found for ino #%u\n", f->inocache->ino); in jffs2_do_read_inode_internal()
1184 if (f->inocache->state == INO_STATE_READING) in jffs2_do_read_inode_internal()
1185 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_read_inode_internal()
1196 if (f->inocache->state == INO_STATE_READING) in jffs2_do_read_inode_internal()
1197 jffs2_set_inocache_state(c, f->inocache, INO_STATE_PRESENT); in jffs2_do_read_inode_internal()
1206 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1207 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1214 f->inocache->ino, ref_offset(rii.latest_ref)); in jffs2_do_read_inode_internal()
1215 mutex_unlock(&f->sem); 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()
1235 f->inocache->ino, je32_to_cpu(latest_node->isize), new_size); in jffs2_do_read_inode_internal()
1248 if (f->inocache->state != INO_STATE_CHECKING) { in jffs2_do_read_inode_internal()
1254 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1255 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1258 f->target = kmalloc(csize + 1, GFP_KERNEL); in jffs2_do_read_inode_internal()
1259 if (!f->target) { in jffs2_do_read_inode_internal()
1261 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1262 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1267 csize, &retlen, (char *)f->target); in jffs2_do_read_inode_internal()
1272 kfree(f->target); in jffs2_do_read_inode_internal()
1273 f->target = NULL; in jffs2_do_read_inode_internal()
1274 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1275 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1279 f->target[csize] = '\0'; in jffs2_do_read_inode_internal()
1280 dbg_readinode("symlink's target '%s' cached\n", f->target); in jffs2_do_read_inode_internal()
1289 if (f->metadata) { in jffs2_do_read_inode_internal()
1291 f->inocache->ino, jemode_to_cpu(latest_node->mode)); in jffs2_do_read_inode_internal()
1292 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1293 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1296 if (!frag_first(&f->fragtree)) { in jffs2_do_read_inode_internal()
1298 f->inocache->ino, jemode_to_cpu(latest_node->mode)); in jffs2_do_read_inode_internal()
1299 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1300 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1304 if (frag_next(frag_first(&f->fragtree))) { in jffs2_do_read_inode_internal()
1306 f->inocache->ino, jemode_to_cpu(latest_node->mode)); in jffs2_do_read_inode_internal()
1308 mutex_unlock(&f->sem); in jffs2_do_read_inode_internal()
1309 jffs2_do_clear_inode(c, f); in jffs2_do_read_inode_internal()
1313 f->metadata = frag_first(&f->fragtree)->node; in jffs2_do_read_inode_internal()
1314 jffs2_free_node_frag(frag_first(&f->fragtree)); in jffs2_do_read_inode_internal()
1315 f->fragtree = RB_ROOT; in jffs2_do_read_inode_internal()
1318 if (f->inocache->state == INO_STATE_READING) 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
1332 f->inocache = jffs2_get_ino_cache(c, ino); in jffs2_do_read_inode()
1334 if (f->inocache) { in jffs2_do_read_inode()
1336 switch(f->inocache->state) { in jffs2_do_read_inode()
1339 f->inocache->state = INO_STATE_READING; in jffs2_do_read_inode()
1347 dbg_readinode("waiting for ino #%u in state %d\n", ino, f->inocache->state); in jffs2_do_read_inode()
1356 …JFFS2_ERROR("Eep. Trying to read_inode #%u when it's already in state %d!\n", ino, f->inocache->st… in jffs2_do_read_inode()
1358 f->inocache = NULL; in jffs2_do_read_inode()
1367 if (!f->inocache && ino == 1) { in jffs2_do_read_inode()
1369 f->inocache = jffs2_alloc_inode_cache(); in jffs2_do_read_inode()
1370 if (!f->inocache) { in jffs2_do_read_inode()
1375 memset(f->inocache, 0, sizeof(struct jffs2_inode_cache)); in jffs2_do_read_inode()
1376 f->inocache->ino = f->inocache->pino_nlink = 1; in jffs2_do_read_inode()
1377 f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache; in jffs2_do_read_inode()
1378 f->inocache->state = INO_STATE_READING; in jffs2_do_read_inode()
1379 jffs2_add_ino_cache(c, f->inocache); in jffs2_do_read_inode()
1381 if (!f->inocache) { in jffs2_do_read_inode()
1386 return jffs2_do_read_inode_internal(c, f, latest_node); in jffs2_do_read_inode()
1392 struct jffs2_inode_info *f = kzalloc(sizeof(*f), GFP_KERNEL); in jffs2_do_crccheck_inode() local
1395 if (!f) in jffs2_do_crccheck_inode()
1398 mutex_init(&f->sem); in jffs2_do_crccheck_inode()
1399 mutex_lock(&f->sem); in jffs2_do_crccheck_inode()
1400 f->inocache = ic; in jffs2_do_crccheck_inode()
1402 ret = jffs2_do_read_inode_internal(c, f, &n); in jffs2_do_crccheck_inode()
1404 mutex_unlock(&f->sem); in jffs2_do_crccheck_inode()
1405 jffs2_do_clear_inode(c, f); in jffs2_do_crccheck_inode()
1408 kfree (f); 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()
1418 mutex_lock(&f->sem); in jffs2_do_clear_inode()
1419 deleted = f->inocache && !f->inocache->pino_nlink; in jffs2_do_clear_inode()
1421 if (f->inocache && f->inocache->state != INO_STATE_CHECKING) in jffs2_do_clear_inode()
1422 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING); in jffs2_do_clear_inode()
1424 if (f->metadata) { in jffs2_do_clear_inode()
1426 jffs2_mark_node_obsolete(c, f->metadata->raw); in jffs2_do_clear_inode()
1427 jffs2_free_full_dnode(f->metadata); in jffs2_do_clear_inode()
1430 jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL); in jffs2_do_clear_inode()
1432 if (f->target) { in jffs2_do_clear_inode()
1433 kfree(f->target); in jffs2_do_clear_inode()
1434 f->target = NULL; in jffs2_do_clear_inode()
1437 fds = f->dents; in jffs2_do_clear_inode()
1444 if (f->inocache && f->inocache->state != INO_STATE_CHECKING) { in jffs2_do_clear_inode()
1445 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT); in jffs2_do_clear_inode()
1446 if (f->inocache->nodes == (void *)f->inocache) in jffs2_do_clear_inode()
1447 jffs2_del_ino_cache(c, f->inocache); in jffs2_do_clear_inode()
1450 mutex_unlock(&f->sem); in jffs2_do_clear_inode()