Lines Matching full:client
76 NFSClient *client; member
191 static void nfs_set_events(NFSClient *client) in nfs_set_events() argument
193 int ev = nfs_which_events(client->context); in nfs_set_events()
194 if (ev != client->events) { in nfs_set_events()
195 aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context), in nfs_set_events()
198 NULL, NULL, client); in nfs_set_events()
201 client->events = ev; in nfs_set_events()
206 NFSClient *client = arg; in nfs_process_read() local
208 qemu_mutex_lock(&client->mutex); in nfs_process_read()
209 nfs_service(client->context, POLLIN); in nfs_process_read()
210 nfs_set_events(client); in nfs_process_read()
211 qemu_mutex_unlock(&client->mutex); in nfs_process_read()
216 NFSClient *client = arg; in nfs_process_write() local
218 qemu_mutex_lock(&client->mutex); in nfs_process_write()
219 nfs_service(client->context, POLLOUT); in nfs_process_write()
220 nfs_set_events(client); in nfs_process_write()
221 qemu_mutex_unlock(&client->mutex); in nfs_process_write()
229 .client = bs->opaque, in nfs_co_init_task()
259 replay_bh_schedule_oneshot_event(task->client->aio_context, in nfs_co_generic_cb()
267 NFSClient *client = bs->opaque; in nfs_co_preadv() local
273 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_preadv()
274 if (nfs_pread_async(client->context, client->fh, in nfs_co_preadv()
279 nfs_set_events(client); in nfs_co_preadv()
301 NFSClient *client = bs->opaque; in nfs_co_pwritev() local
319 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_pwritev()
320 if (nfs_pwrite_async(client->context, client->fh, in nfs_co_pwritev()
329 nfs_set_events(client); in nfs_co_pwritev()
348 NFSClient *client = bs->opaque; in nfs_co_flush() local
353 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_flush()
354 if (nfs_fsync_async(client->context, client->fh, nfs_co_generic_cb, in nfs_co_flush()
359 nfs_set_events(client); in nfs_co_flush()
370 NFSClient *client = bs->opaque; in nfs_detach_aio_context() local
372 aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context), in nfs_detach_aio_context()
374 client->events = 0; in nfs_detach_aio_context()
380 NFSClient *client = bs->opaque; in nfs_attach_aio_context() local
382 client->aio_context = new_context; in nfs_attach_aio_context()
383 nfs_set_events(client); in nfs_attach_aio_context()
386 static void nfs_client_close(NFSClient *client) in nfs_client_close() argument
388 if (client->context) { in nfs_client_close()
389 qemu_mutex_lock(&client->mutex); in nfs_client_close()
390 aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context), in nfs_client_close()
392 qemu_mutex_unlock(&client->mutex); in nfs_client_close()
393 if (client->fh) { in nfs_client_close()
394 nfs_close(client->context, client->fh); in nfs_client_close()
395 client->fh = NULL; in nfs_client_close()
398 nfs_umount(client->context); in nfs_client_close()
400 nfs_destroy_context(client->context); in nfs_client_close()
401 client->context = NULL; in nfs_client_close()
403 g_free(client->path); in nfs_client_close()
404 qemu_mutex_destroy(&client->mutex); in nfs_client_close()
405 qapi_free_NFSServer(client->server); in nfs_client_close()
406 client->server = NULL; in nfs_client_close()
411 NFSClient *client = bs->opaque; in nfs_file_close() local
412 nfs_client_close(client); in nfs_file_close()
415 static int64_t nfs_client_open(NFSClient *client, BlockdevOptionsNfs *opts, in nfs_client_open() argument
426 qemu_mutex_init(&client->mutex); in nfs_client_open()
428 client->path = g_strdup(opts->path); in nfs_client_open()
430 strp = strrchr(client->path, '/'); in nfs_client_open()
440 client->server = opts->server; in nfs_client_open()
443 client->context = nfs_init_context(); in nfs_client_open()
444 if (client->context == NULL) { in nfs_client_open()
450 client->uid = opts->user; in nfs_client_open()
451 nfs_set_uid(client->context, client->uid); in nfs_client_open()
455 client->gid = opts->group; in nfs_client_open()
456 nfs_set_gid(client->context, client->gid); in nfs_client_open()
460 client->tcp_syncnt = opts->tcp_syn_count; in nfs_client_open()
461 nfs_set_tcp_syncnt(client->context, client->tcp_syncnt); in nfs_client_open()
471 client->readahead = opts->readahead_size; in nfs_client_open()
472 if (client->readahead > QEMU_NFS_MAX_READAHEAD_SIZE) { in nfs_client_open()
475 client->readahead = QEMU_NFS_MAX_READAHEAD_SIZE; in nfs_client_open()
477 nfs_set_readahead(client->context, client->readahead); in nfs_client_open()
479 nfs_set_pagecache_ttl(client->context, 0); in nfs_client_open()
481 client->cache_used = true; in nfs_client_open()
492 client->pagecache = opts->page_cache_size; in nfs_client_open()
493 if (client->pagecache > QEMU_NFS_MAX_PAGECACHE_SIZE) { in nfs_client_open()
496 client->pagecache = QEMU_NFS_MAX_PAGECACHE_SIZE; in nfs_client_open()
498 nfs_set_pagecache(client->context, client->pagecache); in nfs_client_open()
499 nfs_set_pagecache_ttl(client->context, 0); in nfs_client_open()
500 client->cache_used = true; in nfs_client_open()
506 client->debug = opts->debug; in nfs_client_open()
509 if (client->debug > QEMU_NFS_MAX_DEBUG_LEVEL) { in nfs_client_open()
512 client->debug = QEMU_NFS_MAX_DEBUG_LEVEL; in nfs_client_open()
514 nfs_set_debug(client->context, client->debug); in nfs_client_open()
518 ret = nfs_mount(client->context, client->server->host, client->path); in nfs_client_open()
521 nfs_get_error(client->context)); in nfs_client_open()
526 ret = nfs_creat(client->context, file, 0600, &client->fh); in nfs_client_open()
529 nfs_get_error(client->context)); in nfs_client_open()
533 ret = nfs_open(client->context, file, flags, &client->fh); in nfs_client_open()
536 nfs_get_error(client->context)); in nfs_client_open()
541 ret = nfs_fstat(client->context, client->fh, &st); in nfs_client_open()
544 nfs_get_error(client->context)); in nfs_client_open()
550 client->st_blocks = st.st_blocks; in nfs_client_open()
552 client->has_zero_init = S_ISREG(st.st_mode); in nfs_client_open()
557 nfs_client_close(client); in nfs_client_open()
590 static int64_t nfs_client_open_qdict(NFSClient *client, QDict *options, in nfs_client_open_qdict() argument
602 ret = nfs_client_open(client, opts, flags, open_flags, errp); in nfs_client_open_qdict()
610 NFSClient *client = bs->opaque; in nfs_file_open() local
613 client->aio_context = bdrv_get_aio_context(bs); in nfs_file_open()
615 ret = nfs_client_open_qdict(client, options, in nfs_file_open()
623 if (client->has_zero_init) { in nfs_file_open()
645 NFSClient *client = g_new0(NFSClient, 1); in nfs_file_co_create() local
650 client->aio_context = qemu_get_aio_context(); in nfs_file_co_create()
652 ret = nfs_client_open(client, opts->location, O_CREAT, 0, errp); in nfs_file_co_create()
656 ret = nfs_ftruncate(client->context, client->fh, opts->size); in nfs_file_co_create()
657 nfs_client_close(client); in nfs_file_co_create()
660 g_free(client); in nfs_file_co_create()
708 NFSClient *client = bs->opaque; in nfs_has_zero_init() local
709 return client->has_zero_init; in nfs_has_zero_init()
726 replay_bh_schedule_oneshot_event(task->client->aio_context, in nfs_get_allocated_file_size_cb()
732 NFSClient *client = bs->opaque; in nfs_co_get_allocated_file_size() local
738 return client->st_blocks * 512; in nfs_co_get_allocated_file_size()
743 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_get_allocated_file_size()
744 if (nfs_fstat_async(client->context, client->fh, nfs_get_allocated_file_size_cb, in nfs_co_get_allocated_file_size()
749 nfs_set_events(client); in nfs_co_get_allocated_file_size()
764 NFSClient *client = bs->opaque; in nfs_file_co_truncate() local
773 ret = nfs_ftruncate(client->context, client->fh, offset); in nfs_file_co_truncate()
787 NFSClient *client = state->bs->opaque; in nfs_reopen_prepare() local
800 if ((state->flags & BDRV_O_NOCACHE) && client->cache_used) { in nfs_reopen_prepare()
808 ret = nfs_fstat(client->context, client->fh, &st); in nfs_reopen_prepare()
811 nfs_get_error(client->context)); in nfs_reopen_prepare()
815 client->st_blocks = st.st_blocks; in nfs_reopen_prepare()
824 NFSClient *client = bs->opaque; in nfs_refresh_filename() local
826 if (client->uid && !client->gid) { in nfs_refresh_filename()
828 "nfs://%s%s?uid=%" PRId64, client->server->host, client->path, in nfs_refresh_filename()
829 client->uid); in nfs_refresh_filename()
830 } else if (!client->uid && client->gid) { in nfs_refresh_filename()
832 "nfs://%s%s?gid=%" PRId64, client->server->host, client->path, in nfs_refresh_filename()
833 client->gid); in nfs_refresh_filename()
834 } else if (client->uid && client->gid) { in nfs_refresh_filename()
837 client->server->host, client->path, client->uid, client->gid); in nfs_refresh_filename()
840 "nfs://%s%s", client->server->host, client->path); in nfs_refresh_filename()
846 NFSClient *client = bs->opaque; in nfs_dirname() local
848 if (client->uid || client->gid) { in nfs_dirname()
855 return g_strdup_printf("nfs://%s%s/", client->server->host, client->path); in nfs_dirname()
862 NFSClient *client = bs->opaque; in nfs_co_invalidate_cache() local
863 nfs_pagecache_invalidate(client->context, client->fh); in nfs_co_invalidate_cache()