Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/fuse/fuse_internal.c
| Show First 20 Lines • Show All 976 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| int err = 0; | int err = 0; | ||||
| struct fuse_data *data = tick->tk_data; | struct fuse_data *data = tick->tk_data; | ||||
| struct fuse_init_out *fiio = NULL; | struct fuse_init_out *fiio = NULL; | ||||
| if ((err = tick->tk_aw_ohead.error)) { | if ((err = tick->tk_aw_ohead.error)) { | ||||
| goto out; | goto out; | ||||
| } | } | ||||
| if ((err = fticket_pull(tick, uio))) { | |||||
| if (!fsess_get_virtiofs(data) && (err = fticket_pull(tick, uio))) { | |||||
| goto out; | goto out; | ||||
| } | } | ||||
| fiio = fticket_resp(tick)->base; | fiio = fticket_resp(tick)->base; | ||||
| data->fuse_libabi_major = fiio->major; | data->fuse_libabi_major = fiio->major; | ||||
| data->fuse_libabi_minor = fiio->minor; | data->fuse_libabi_minor = fiio->minor; | ||||
| if (!fuse_libabi_geq(data, 7, 4)) { | if (!fuse_libabi_geq(data, 7, 4)) { | ||||
| /* | /* | ||||
| * With a little work we could support servers as old as 7.1. | * With a little work we could support servers as old as 7.1. | ||||
| * But there would be little payoff. | * But there would be little payoff. | ||||
| */ | */ | ||||
| SDT_PROBE2(fusefs, , internal, trace, 1, | SDT_PROBE2(fusefs, , internal, trace, 1, | ||||
| "userspace version too low"); | "userspace version too low"); | ||||
| err = EPROTONOSUPPORT; | err = EPROTONOSUPPORT; | ||||
| goto out; | goto out; | ||||
| } | } | ||||
| if (fuse_libabi_geq(data, 7, 5)) { | if (fuse_libabi_geq(data, 7, 5)) { | ||||
| if (fticket_resp(tick)->len == sizeof(struct fuse_init_out) || | if (fsess_get_virtiofs(data) || | ||||
| fticket_resp(tick)->len == sizeof(struct fuse_init_out) || | |||||
| fticket_resp(tick)->len == FUSE_COMPAT_22_INIT_OUT_SIZE) { | fticket_resp(tick)->len == FUSE_COMPAT_22_INIT_OUT_SIZE) { | ||||
| data->max_write = fiio->max_write; | data->max_write = fiio->max_write; | ||||
| if (fiio->flags & FUSE_ASYNC_READ) | if (fiio->flags & FUSE_ASYNC_READ) | ||||
| data->dataflags |= FSESS_ASYNC_READ; | data->dataflags |= FSESS_ASYNC_READ; | ||||
| if (fiio->flags & FUSE_POSIX_LOCKS) | if (fiio->flags & FUSE_POSIX_LOCKS) | ||||
| data->dataflags |= FSESS_POSIX_LOCKS; | data->dataflags |= FSESS_POSIX_LOCKS; | ||||
| if (fiio->flags & FUSE_EXPORT_SUPPORT) | if (fiio->flags & FUSE_EXPORT_SUPPORT) | ||||
| data->dataflags |= FSESS_EXPORT_SUPPORT; | data->dataflags |= FSESS_EXPORT_SUPPORT; | ||||
| ▲ Show 20 Lines • Show All 306 Lines • Show Last 20 Lines | |||||