Lines Matching refs:cache

201 		if (dev->cache[i].data == buffer)  in yaffs_is_managed_tmp_buffer()
1371 struct yaffs_cache *cache; in yaffs_obj_cache_dirty() local
1375 cache = &dev->cache[i]; in yaffs_obj_cache_dirty()
1376 if (cache->object == obj && cache->dirty) in yaffs_obj_cache_dirty()
1388 struct yaffs_cache *cache; in yaffs_flush_file_cache() local
1395 cache = NULL; in yaffs_flush_file_cache()
1399 if (dev->cache[i].object == obj && in yaffs_flush_file_cache()
1400 dev->cache[i].dirty) { in yaffs_flush_file_cache()
1401 if (!cache || in yaffs_flush_file_cache()
1402 dev->cache[i].chunk_id < lowest) { in yaffs_flush_file_cache()
1403 cache = &dev->cache[i]; in yaffs_flush_file_cache()
1404 lowest = cache->chunk_id; in yaffs_flush_file_cache()
1409 if (cache && !cache->locked) { in yaffs_flush_file_cache()
1412 yaffs_wr_data_obj(cache->object, in yaffs_flush_file_cache()
1413 cache->chunk_id, in yaffs_flush_file_cache()
1414 cache->data, in yaffs_flush_file_cache()
1415 cache->n_bytes, 1); in yaffs_flush_file_cache()
1416 cache->dirty = 0; in yaffs_flush_file_cache()
1417 cache->object = NULL; in yaffs_flush_file_cache()
1419 } while (cache && chunk_written > 0); in yaffs_flush_file_cache()
1421 if (cache) in yaffs_flush_file_cache()
1444 if (dev->cache[i].object && dev->cache[i].dirty) in yaffs_flush_whole_cache()
1445 obj = dev->cache[i].object; in yaffs_flush_whole_cache()
1464 if (!dev->cache[i].object) in yaffs_grab_chunk_worker()
1465 return &dev->cache[i]; in yaffs_grab_chunk_worker()
1473 struct yaffs_cache *cache; in yaffs_grab_chunk_cache() local
1483 cache = yaffs_grab_chunk_worker(dev); in yaffs_grab_chunk_cache()
1485 if (!cache) { in yaffs_grab_chunk_cache()
1494 the_obj = dev->cache[0].object; in yaffs_grab_chunk_cache()
1496 cache = NULL; in yaffs_grab_chunk_cache()
1499 if (dev->cache[i].object && in yaffs_grab_chunk_cache()
1500 !dev->cache[i].locked && in yaffs_grab_chunk_cache()
1501 (dev->cache[i].last_use < usage || in yaffs_grab_chunk_cache()
1502 !cache)) { in yaffs_grab_chunk_cache()
1503 usage = dev->cache[i].last_use; in yaffs_grab_chunk_cache()
1504 the_obj = dev->cache[i].object; in yaffs_grab_chunk_cache()
1505 cache = &dev->cache[i]; in yaffs_grab_chunk_cache()
1509 if (!cache || cache->dirty) { in yaffs_grab_chunk_cache()
1512 cache = yaffs_grab_chunk_worker(dev); in yaffs_grab_chunk_cache()
1515 return cache; in yaffs_grab_chunk_cache()
1529 if (dev->cache[i].object == obj && in yaffs_find_chunk_cache()
1530 dev->cache[i].chunk_id == chunk_id) { in yaffs_find_chunk_cache()
1533 return &dev->cache[i]; in yaffs_find_chunk_cache()
1540 static void yaffs_use_cache(struct yaffs_dev *dev, struct yaffs_cache *cache, in yaffs_use_cache() argument
1552 dev->cache[i].last_use = 0; in yaffs_use_cache()
1557 cache->last_use = dev->cache_last_use; in yaffs_use_cache()
1560 cache->dirty = 1; in yaffs_use_cache()
1569 struct yaffs_cache *cache; in yaffs_invalidate_chunk_cache() local
1572 cache = yaffs_find_chunk_cache(object, chunk_id); in yaffs_invalidate_chunk_cache()
1574 if (cache) in yaffs_invalidate_chunk_cache()
1575 cache->object = NULL; in yaffs_invalidate_chunk_cache()
1590 if (dev->cache[i].object == in) in yaffs_invalidate_whole_cache()
1591 dev->cache[i].object = NULL; in yaffs_invalidate_whole_cache()
3419 struct yaffs_cache *cache; in yaffs_file_rd() local
3436 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_file_rd()
3442 if (cache || n_copy != dev->data_bytes_per_chunk || in yaffs_file_rd()
3449 if (!cache) { in yaffs_file_rd()
3450 cache = in yaffs_file_rd()
3452 cache->object = in; in yaffs_file_rd()
3453 cache->chunk_id = chunk; in yaffs_file_rd()
3454 cache->dirty = 0; in yaffs_file_rd()
3455 cache->locked = 0; in yaffs_file_rd()
3457 cache->data); in yaffs_file_rd()
3458 cache->n_bytes = 0; in yaffs_file_rd()
3461 yaffs_use_cache(dev, cache, 0); in yaffs_file_rd()
3463 cache->locked = 1; in yaffs_file_rd()
3465 memcpy(buffer, &cache->data[start], n_copy); in yaffs_file_rd()
3467 cache->locked = 0; in yaffs_file_rd()
3567 struct yaffs_cache *cache; in yaffs_do_file_wr() local
3571 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_do_file_wr()
3573 if (!cache && in yaffs_do_file_wr()
3575 cache = yaffs_grab_chunk_cache(dev); in yaffs_do_file_wr()
3576 cache->object = in; in yaffs_do_file_wr()
3577 cache->chunk_id = chunk; in yaffs_do_file_wr()
3578 cache->dirty = 0; in yaffs_do_file_wr()
3579 cache->locked = 0; in yaffs_do_file_wr()
3581 cache->data); in yaffs_do_file_wr()
3582 } else if (cache && in yaffs_do_file_wr()
3583 !cache->dirty && in yaffs_do_file_wr()
3590 cache = NULL; in yaffs_do_file_wr()
3593 if (cache) { in yaffs_do_file_wr()
3594 yaffs_use_cache(dev, cache, 1); in yaffs_do_file_wr()
3595 cache->locked = 1; in yaffs_do_file_wr()
3597 memcpy(&cache->data[start], buffer, in yaffs_do_file_wr()
3600 cache->locked = 0; in yaffs_do_file_wr()
3601 cache->n_bytes = n_writeback; in yaffs_do_file_wr()
3606 (cache->object, in yaffs_do_file_wr()
3607 cache->chunk_id, in yaffs_do_file_wr()
3608 cache->data, in yaffs_do_file_wr()
3609 cache->n_bytes, 1); in yaffs_do_file_wr()
3610 cache->dirty = 0; in yaffs_do_file_wr()
4760 dev->cache = NULL; in yaffs_guts_initialise()
4772 dev->cache = kmalloc(cache_bytes, GFP_NOFS); in yaffs_guts_initialise()
4774 buf = (u8 *) dev->cache; in yaffs_guts_initialise()
4776 if (dev->cache) in yaffs_guts_initialise()
4777 memset(dev->cache, 0, cache_bytes); in yaffs_guts_initialise()
4780 dev->cache[i].object = NULL; in yaffs_guts_initialise()
4781 dev->cache[i].last_use = 0; in yaffs_guts_initialise()
4782 dev->cache[i].dirty = 0; in yaffs_guts_initialise()
4783 dev->cache[i].data = buf = in yaffs_guts_initialise()
4905 if (dev->param.n_caches > 0 && dev->cache) { in yaffs_deinitialise()
4908 kfree(dev->cache[i].data); in yaffs_deinitialise()
4909 dev->cache[i].data = NULL; in yaffs_deinitialise()
4912 kfree(dev->cache); in yaffs_deinitialise()
4913 dev->cache = NULL; in yaffs_deinitialise()
4967 if (dev->cache[i].dirty) in yaffs_get_n_free_chunks()