Lines Matching defs:object

17 static bool __cachefiles_mark_inode_in_use(struct cachefiles_object *object,
24 trace_cachefiles_mark_active(object, inode);
27 trace_cachefiles_mark_failed(object, inode);
33 static bool cachefiles_mark_inode_in_use(struct cachefiles_object *object,
39 can_use = __cachefiles_mark_inode_in_use(object, inode);
47 static void __cachefiles_unmark_inode_in_use(struct cachefiles_object *object,
51 trace_cachefiles_mark_inactive(object, inode);
54 static void cachefiles_do_unmark_inode_in_use(struct cachefiles_object *object,
58 __cachefiles_unmark_inode_in_use(object, inode);
66 void cachefiles_unmark_inode_in_use(struct cachefiles_object *object,
69 struct cachefiles_cache *cache = object->volume->cache;
72 cachefiles_do_unmark_inode_in_use(object, inode);
74 if (!test_bit(CACHEFILES_OBJECT_USING_TMPFILE, &object->flags)) {
229 struct cachefiles_object *object,
239 trace_cachefiles_unlink(object, d_inode(dentry)->i_ino, why);
253 trace_cachefiles_vfs_error(object, d_backing_inode(dir), ret,
259 * Delete an object representation from the cache
265 struct cachefiles_object *object,
288 ret = cachefiles_unlink(cache, object, dir, rep, why);
297 _debug("move stale object to graveyard");
339 trace_cachefiles_vfs_error(object, d_inode(cache->graveyard),
392 trace_cachefiles_rename(object, d_inode(rep)->i_ino, why);
397 trace_cachefiles_vfs_error(object, d_inode(dir), ret,
404 __cachefiles_unmark_inode_in_use(object, d_inode(rep));
414 int cachefiles_delete_object(struct cachefiles_object *object,
417 struct cachefiles_volume *volume = object->volume;
418 struct dentry *dentry = object->file->f_path.dentry;
419 struct dentry *fan = volume->fanout[(u8)object->cookie->key_hash];
422 _enter(",OBJ%x{%pD}", object->debug_id, object->file);
428 ret = cachefiles_unlink(volume->cache, object, fan, dentry, why);
436 * time comes to discard the object from memory.
438 struct file *cachefiles_create_tmpfile(struct cachefiles_object *object)
440 struct cachefiles_volume *volume = object->volume;
443 struct dentry *fan = volume->fanout[(u8)object->cookie->key_hash];
461 trace_cachefiles_vfs_error(object, d_inode(fan), ret,
464 cachefiles_io_error_obj(object, "Failed to create tmpfile");
468 trace_cachefiles_tmpfile(object, file_inode(file));
471 if (!cachefiles_mark_inode_in_use(object, file_inode(file)))
474 ret = cachefiles_ondemand_init_object(object);
478 ni_size = object->cookie->object_size;
482 trace_cachefiles_trunc(object, file_inode(file), 0, ni_size,
489 object, file_inode(file), ret,
507 cachefiles_do_unmark_inode_in_use(object, file_inode(file));
517 static bool cachefiles_create_file(struct cachefiles_object *object)
522 ret = cachefiles_has_space(object->volume->cache, 1, 0,
527 file = cachefiles_create_tmpfile(object);
531 set_bit(FSCACHE_COOKIE_NEEDS_UPDATE, &object->cookie->flags);
532 set_bit(CACHEFILES_OBJECT_USING_TMPFILE, &object->flags);
534 object->file = file;
542 static bool cachefiles_open_file(struct cachefiles_object *object,
545 struct cachefiles_cache *cache = object->volume->cache;
552 if (!cachefiles_mark_inode_in_use(object, d_inode(dentry))) {
567 trace_cachefiles_vfs_error(object, d_backing_inode(dentry),
580 ret = cachefiles_ondemand_init_object(object);
584 ret = cachefiles_check_auxdata(object, file);
588 clear_bit(FSCACHE_COOKIE_NO_DATA_TO_READ, &object->cookie->flags);
590 object->file = file;
592 /* Always update the atime on an object we've just looked up (this is
601 fscache_cookie_lookup_negative(object->cookie);
602 cachefiles_unmark_inode_in_use(object, file);
606 return cachefiles_create_file(object);
612 cachefiles_do_unmark_inode_in_use(object, d_inode(dentry));
618 * walk from the parent object to the child object through the backing
621 bool cachefiles_look_up_object(struct cachefiles_object *object)
623 struct cachefiles_volume *volume = object->volume;
624 struct dentry *dentry, *fan = volume->fanout[(u8)object->cookie->key_hash];
627 _enter("OBJ%x,%s,", object->debug_id, object->d_name);
632 dentry = lookup_positive_unlocked(object->d_name, fan,
633 object->d_name_len);
636 trace_cachefiles_lookup(object, fan, dentry);
641 cachefiles_io_error_obj(object, "Lookup failed");
648 ret = cachefiles_bury_object(volume->cache, object, fan, dentry,
656 if (!cachefiles_open_file(object, dentry))
659 _leave(" = t [%lu]", file_inode(object->file)->i_ino);
663 fscache_cookie_lookup_negative(object->cookie);
664 return cachefiles_create_file(object);
671 struct cachefiles_object *object)
673 struct cachefiles_volume *volume = object->volume;
674 struct dentry *dentry, *fan = volume->fanout[(u8)object->cookie->key_hash];
678 _enter(",%pD", object->file);
683 dentry = lookup_one_len(object->d_name, fan, object->d_name_len);
687 trace_cachefiles_vfs_error(object, d_inode(fan), PTR_ERR(dentry),
694 if (d_backing_inode(dentry) == file_inode(object->file)) {
699 ret = cachefiles_unlink(volume->cache, object, fan, dentry,
707 dentry = lookup_one_len(object->d_name, fan, object->d_name_len);
711 trace_cachefiles_vfs_error(object, d_inode(fan), PTR_ERR(dentry),
720 ret = vfs_link(object->file->f_path.dentry, &nop_mnt_idmap,
723 trace_cachefiles_vfs_error(object, d_inode(fan), ret,
727 trace_cachefiles_link(object, file_inode(object->file));
728 spin_lock(&object->lock);
730 clear_bit(CACHEFILES_OBJECT_USING_TMPFILE, &object->flags);
731 spin_unlock(&object->lock);
789 * Cull an object if it's not in use
805 /* check to see if someone is using this object */
846 * Find out if an object is in use or not
848 * - returns -EBUSY or 0 to indicate whether an object is in use or not