• Home
  • Raw
  • Download

Lines Matching full:object

21 	struct cachefiles_object *object = file->private_data;  in cachefiles_ondemand_fd_release()  local
28 if (!object) in cachefiles_ondemand_fd_release()
31 info = object->ondemand; in cachefiles_ondemand_fd_release()
32 cache = object->volume->cache; in cachefiles_ondemand_fd_release()
39 cachefiles_ondemand_set_object_close(object); in cachefiles_ondemand_fd_release()
53 trace_cachefiles_ondemand_fd_release(object, object_id); in cachefiles_ondemand_fd_release()
54 cachefiles_put_object(object, cachefiles_obj_put_ondemand_fd); in cachefiles_ondemand_fd_release()
62 struct cachefiles_object *object = kiocb->ki_filp->private_data; in cachefiles_ondemand_fd_write_iter() local
63 struct cachefiles_cache *cache = object->volume->cache; in cachefiles_ondemand_fd_write_iter()
70 spin_lock(&object->lock); in cachefiles_ondemand_fd_write_iter()
71 file = object->file; in cachefiles_ondemand_fd_write_iter()
73 spin_unlock(&object->lock); in cachefiles_ondemand_fd_write_iter()
77 spin_unlock(&object->lock); in cachefiles_ondemand_fd_write_iter()
80 ret = __cachefiles_prepare_write(object, file, &pos, &len, true); in cachefiles_ondemand_fd_write_iter()
85 trace_cachefiles_ondemand_fd_write(object, file_inode(file), pos, len); in cachefiles_ondemand_fd_write_iter()
86 ret = __cachefiles_write(object, file, pos, iter, NULL, NULL); in cachefiles_ondemand_fd_write_iter()
100 struct cachefiles_object *object = filp->private_data; in cachefiles_ondemand_fd_llseek() local
104 spin_lock(&object->lock); in cachefiles_ondemand_fd_llseek()
105 file = object->file; in cachefiles_ondemand_fd_llseek()
107 spin_unlock(&object->lock); in cachefiles_ondemand_fd_llseek()
111 spin_unlock(&object->lock); in cachefiles_ondemand_fd_llseek()
122 struct cachefiles_object *object = filp->private_data; in cachefiles_ondemand_fd_ioctl() local
123 struct cachefiles_cache *cache = object->volume->cache; in cachefiles_ondemand_fd_ioctl()
136 req->object != object) { in cachefiles_ondemand_fd_ioctl()
143 trace_cachefiles_ondemand_cread(object, id); in cachefiles_ondemand_fd_ioctl()
159 * <cache_size> indicates the object size if >=0, error code if negative
198 !req->object->ondemand->ondemand_id) { in cachefiles_ondemand_copen()
205 info = req->object->ondemand; in cachefiles_ondemand_copen()
236 * cachefiles_ondemand_set_object_close(object) in cachefiles_ondemand_copen()
251 cookie = req->object->cookie; in cachefiles_ondemand_copen()
257 trace_cachefiles_ondemand_copen(req->object, id, size); in cachefiles_ondemand_copen()
259 cachefiles_ondemand_set_object_open(req->object); in cachefiles_ondemand_copen()
265 /* Need to set object close to avoid reopen status continuing */ in cachefiles_ondemand_copen()
267 cachefiles_ondemand_set_object_close(req->object); in cachefiles_ondemand_copen()
299 struct cachefiles_object *object; in cachefiles_ondemand_get_fd() local
305 object = cachefiles_grab_object(req->object, in cachefiles_ondemand_get_fd()
307 cache = object->volume->cache; in cachefiles_ondemand_get_fd()
322 &cachefiles_ondemand_fd_fops, object, O_WRONLY); in cachefiles_ondemand_get_fd()
328 spin_lock(&object->ondemand->lock); in cachefiles_ondemand_get_fd()
329 if (object->ondemand->ondemand_id > 0) { in cachefiles_ondemand_get_fd()
330 spin_unlock(&object->ondemand->lock); in cachefiles_ondemand_get_fd()
341 object->ondemand->ondemand_id = object_id; in cachefiles_ondemand_get_fd()
342 spin_unlock(&object->ondemand->lock); in cachefiles_ondemand_get_fd()
345 trace_cachefiles_ondemand_open(object, &req->msg, load); in cachefiles_ondemand_get_fd()
357 spin_lock(&object->ondemand->lock); in cachefiles_ondemand_get_fd()
358 /* Avoid marking an opened object as closed. */ in cachefiles_ondemand_get_fd()
359 if (object->ondemand->ondemand_id <= 0) in cachefiles_ondemand_get_fd()
360 cachefiles_ondemand_set_object_close(object); in cachefiles_ondemand_get_fd()
361 spin_unlock(&object->ondemand->lock); in cachefiles_ondemand_get_fd()
362 cachefiles_put_object(object, cachefiles_obj_put_ondemand_fd); in cachefiles_ondemand_get_fd()
371 cachefiles_ondemand_init_object(info->object); in ondemand_object_worker()
376 * closed object, reopen it.
377 * Skip read requests whose related object is reopening.
383 struct cachefiles_object *object; in cachefiles_ondemand_select_req() local
389 object = req->object; in cachefiles_ondemand_select_req()
390 info = object->ondemand; in cachefiles_ondemand_select_req()
391 if (cachefiles_ondemand_object_is_close(object)) { in cachefiles_ondemand_select_req()
392 cachefiles_ondemand_set_object_reopening(object); in cachefiles_ondemand_select_req()
396 if (cachefiles_ondemand_object_is_reopening(object)) in cachefiles_ondemand_select_req()
454 cachefiles_grab_object(req->object, cachefiles_obj_get_read_req); in cachefiles_ondemand_daemon_read()
464 msg->object_id = req->object->ondemand->ondemand_id; in cachefiles_ondemand_daemon_read()
478 cachefiles_put_object(req->object, cachefiles_obj_put_read_req); in cachefiles_ondemand_daemon_read()
488 static int cachefiles_ondemand_send_req(struct cachefiles_object *object, in cachefiles_ondemand_send_req() argument
494 struct cachefiles_cache *cache = object->volume->cache; in cachefiles_ondemand_send_req()
514 req->object = object; in cachefiles_ondemand_send_req()
542 cachefiles_ondemand_object_is_dropping(object)) { in cachefiles_ondemand_send_req()
552 !cachefiles_ondemand_object_is_open(object)) { in cachefiles_ondemand_send_req()
553 WARN_ON_ONCE(object->ondemand->ondemand_id == 0); in cachefiles_ondemand_send_req()
601 /* Reset the object to close state in error handling path. in cachefiles_ondemand_send_req()
603 * cachefiles_ondemand_fd_release() will set object to close. in cachefiles_ondemand_send_req()
606 !cachefiles_ondemand_object_is_dropping(object)) in cachefiles_ondemand_send_req()
607 cachefiles_ondemand_set_object_close(object); in cachefiles_ondemand_send_req()
615 struct cachefiles_object *object = req->object; in cachefiles_ondemand_init_open_req() local
616 struct fscache_cookie *cookie = object->cookie; in cachefiles_ondemand_init_open_req()
617 struct fscache_volume *volume = object->volume->vcookie; in cachefiles_ondemand_init_open_req()
633 if (!(object->cookie->advice & FSCACHE_ADV_WANT_CACHE_SIZE)) { in cachefiles_ondemand_init_open_req()
649 struct cachefiles_object *object = req->object; in cachefiles_ondemand_init_close_req() local
651 if (!cachefiles_ondemand_object_is_open(object)) in cachefiles_ondemand_init_close_req()
654 trace_cachefiles_ondemand_close(object, &req->msg); in cachefiles_ondemand_init_close_req()
666 struct cachefiles_object *object = req->object; in cachefiles_ondemand_init_read_req() local
672 trace_cachefiles_ondemand_read(object, &req->msg, load); in cachefiles_ondemand_init_read_req()
676 int cachefiles_ondemand_init_object(struct cachefiles_object *object) in cachefiles_ondemand_init_object() argument
678 struct fscache_cookie *cookie = object->cookie; in cachefiles_ondemand_init_object()
679 struct fscache_volume *volume = object->volume->vcookie; in cachefiles_ondemand_init_object()
682 if (!object->ondemand) in cachefiles_ondemand_init_object()
689 * allocated object ID if any. in cachefiles_ondemand_init_object()
691 if (cachefiles_ondemand_object_is_open(object)) in cachefiles_ondemand_init_object()
699 return cachefiles_ondemand_send_req(object, CACHEFILES_OP_OPEN, in cachefiles_ondemand_init_object()
703 void cachefiles_ondemand_clean_object(struct cachefiles_object *object) in cachefiles_ondemand_clean_object() argument
709 if (!object->ondemand) in cachefiles_ondemand_clean_object()
712 cachefiles_ondemand_send_req(object, CACHEFILES_OP_CLOSE, 0, in cachefiles_ondemand_clean_object()
715 if (!object->ondemand->ondemand_id) in cachefiles_ondemand_clean_object()
718 /* Cancel all requests for the object that is being dropped. */ in cachefiles_ondemand_clean_object()
719 cache = object->volume->cache; in cachefiles_ondemand_clean_object()
721 cachefiles_ondemand_set_object_dropping(object); in cachefiles_ondemand_clean_object()
723 if (req->object == object) { in cachefiles_ondemand_clean_object()
732 cancel_work_sync(&object->ondemand->ondemand_work); in cachefiles_ondemand_clean_object()
735 int cachefiles_ondemand_init_obj_info(struct cachefiles_object *object, in cachefiles_ondemand_init_obj_info() argument
741 object->ondemand = kzalloc(sizeof(struct cachefiles_ondemand_info), in cachefiles_ondemand_init_obj_info()
743 if (!object->ondemand) in cachefiles_ondemand_init_obj_info()
746 object->ondemand->object = object; in cachefiles_ondemand_init_obj_info()
747 spin_lock_init(&object->ondemand->lock); in cachefiles_ondemand_init_obj_info()
748 INIT_WORK(&object->ondemand->ondemand_work, ondemand_object_worker); in cachefiles_ondemand_init_obj_info()
752 void cachefiles_ondemand_deinit_obj_info(struct cachefiles_object *object) in cachefiles_ondemand_deinit_obj_info() argument
754 kfree(object->ondemand); in cachefiles_ondemand_deinit_obj_info()
755 object->ondemand = NULL; in cachefiles_ondemand_deinit_obj_info()
758 int cachefiles_ondemand_read(struct cachefiles_object *object, in cachefiles_ondemand_read() argument
763 return cachefiles_ondemand_send_req(object, CACHEFILES_OP_READ, in cachefiles_ondemand_read()