Lines Matching refs: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)) {
230 struct cachefiles_object *object,
240 trace_cachefiles_unlink(object, d_inode(dentry)->i_ino, why);
254 trace_cachefiles_vfs_error(object, d_backing_inode(dir), ret,
260 * Delete an object representation from the cache
268 struct cachefiles_object *object,
289 ret = cachefiles_unlink(cache, object, dir, rep, why);
297 _debug("move stale object to graveyard");
364 trace_cachefiles_rename(object, d_inode(rep)->i_ino, why);
369 trace_cachefiles_vfs_error(object, d_inode(dir), ret,
376 __cachefiles_unmark_inode_in_use(object, d_inode(rep));
385 int cachefiles_delete_object(struct cachefiles_object *object,
388 struct cachefiles_volume *volume = object->volume;
389 struct dentry *dentry = object->file->f_path.dentry;
390 struct dentry *fan = volume->fanout[(u8)object->cookie->key_hash];
393 _enter(",OBJ%x{%pD}", object->debug_id, object->file);
399 ret = cachefiles_unlink(volume->cache, object, fan, dentry, why);
406 * time comes to discard the object from memory.
408 struct file *cachefiles_create_tmpfile(struct cachefiles_object *object)
410 struct cachefiles_volume *volume = object->volume;
413 struct dentry *fan = volume->fanout[(u8)object->cookie->key_hash];
431 trace_cachefiles_vfs_error(object, d_inode(fan), ret,
434 cachefiles_io_error_obj(object, "Failed to create tmpfile");
438 trace_cachefiles_tmpfile(object, file_inode(file));
441 if (!cachefiles_mark_inode_in_use(object, file_inode(file)))
444 ret = cachefiles_ondemand_init_object(object);
448 ni_size = object->cookie->object_size;
452 trace_cachefiles_trunc(object, file_inode(file), 0, ni_size,
459 object, file_inode(file), ret,
477 cachefiles_do_unmark_inode_in_use(object, file_inode(file));
487 static bool cachefiles_create_file(struct cachefiles_object *object)
492 ret = cachefiles_has_space(object->volume->cache, 1, 0,
497 file = cachefiles_create_tmpfile(object);
501 set_bit(FSCACHE_COOKIE_NEEDS_UPDATE, &object->cookie->flags);
502 set_bit(CACHEFILES_OBJECT_USING_TMPFILE, &object->flags);
504 object->file = file;
512 static bool cachefiles_open_file(struct cachefiles_object *object,
515 struct cachefiles_cache *cache = object->volume->cache;
522 if (!cachefiles_mark_inode_in_use(object, d_inode(dentry))) {
536 trace_cachefiles_vfs_error(object, d_backing_inode(dentry),
549 ret = cachefiles_ondemand_init_object(object);
553 ret = cachefiles_check_auxdata(object, file);
557 clear_bit(FSCACHE_COOKIE_NO_DATA_TO_READ, &object->cookie->flags);
559 object->file = file;
561 /* Always update the atime on an object we've just looked up (this is
569 fscache_cookie_lookup_negative(object->cookie);
570 cachefiles_unmark_inode_in_use(object, file);
573 return cachefiles_create_file(object);
579 cachefiles_do_unmark_inode_in_use(object, d_inode(dentry));
584 * walk from the parent object to the child object through the backing
587 bool cachefiles_look_up_object(struct cachefiles_object *object)
589 struct cachefiles_volume *volume = object->volume;
590 struct dentry *dentry, *fan = volume->fanout[(u8)object->cookie->key_hash];
593 _enter("OBJ%x,%s,", object->debug_id, object->d_name);
599 &QSTR(object->d_name), fan);
602 trace_cachefiles_lookup(object, fan, dentry);
607 cachefiles_io_error_obj(object, "Lookup failed");
617 ret = cachefiles_bury_object(volume->cache, object,
626 ret = cachefiles_open_file(object, dentry);
631 _leave(" = t [%llu]", file_inode(object->file)->i_ino);
635 fscache_cookie_lookup_negative(object->cookie);
636 return cachefiles_create_file(object);
643 struct cachefiles_object *object)
645 struct cachefiles_volume *volume = object->volume;
646 struct dentry *dentry, *fan = volume->fanout[(u8)object->cookie->key_hash];
650 _enter(",%pD", object->file);
654 dentry = start_creating(&nop_mnt_idmap, fan, &QSTR(object->d_name));
658 trace_cachefiles_vfs_error(object, d_inode(fan), PTR_ERR(dentry),
666 * races to create the object we are trying to create.
669 ret = cachefiles_unlink(volume->cache, object, fan, dentry,
679 &QSTR(object->d_name));
683 trace_cachefiles_vfs_error(object, d_inode(fan), PTR_ERR(dentry),
692 ret = vfs_link(object->file->f_path.dentry, &nop_mnt_idmap,
695 trace_cachefiles_vfs_error(object, d_inode(fan), ret,
699 trace_cachefiles_link(object, file_inode(object->file));
700 spin_lock(&object->lock);
702 clear_bit(CACHEFILES_OBJECT_USING_TMPFILE, &object->flags);
703 spin_unlock(&object->lock);
754 * Cull an object if it's not in use
770 /* check to see if someone is using this object */
815 * Find out if an object is in use or not
817 * - returns -EBUSY or 0 to indicate whether an object is in use or not