Lines Matching refs:ma

80 static void	free_mntarg(struct mntarg *ma);
1055 struct mntarg *ma = NULL;
1095 ma = mount_argsu(ma, "fstype", uap->type, MFSNAMELEN);
1096 ma = mount_argsu(ma, "fspath", uap->path, MNAMELEN);
1097 ma = mount_argb(ma, flags & MNT_RDONLY, "noro");
1098 ma = mount_argb(ma, !(flags & MNT_NOSUID), "nosuid");
1099 ma = mount_argb(ma, !(flags & MNT_NOEXEC), "noexec");
1102 return (vfsp->vfc_vfsops_sd->vfs_cmount(ma, uap->data, flags));
1103 return (vfsp->vfc_vfsops->vfs_cmount(ma, uap->data, flags));
2811 mount_argb(struct mntarg *ma, int flag, const char *name)
2817 return (mount_arg(ma, name + (flag ? 2 : 0), NULL, 0));
2824 mount_argf(struct mntarg *ma, const char *name, const char *fmt, ...)
2831 if (ma == NULL) {
2832 ma = malloc(sizeof *ma, M_MOUNT, M_WAITOK | M_ZERO);
2833 SLIST_INIT(&ma->list);
2835 if (ma->error)
2836 return (ma);
2838 ma->v = realloc(ma->v, sizeof *ma->v * (ma->len + 2),
2840 ma->v[ma->len].iov_base = (void *)(uintptr_t)name;
2841 ma->v[ma->len].iov_len = strlen(name) + 1;
2842 ma->len++;
2851 SLIST_INSERT_HEAD(&ma->list, maa, next);
2855 ma->v[ma->len].iov_base = maa + 1;
2856 ma->v[ma->len].iov_len = len;
2857 ma->len++;
2859 return (ma);
2866 mount_argsu(struct mntarg *ma, const char *name, const void *val, int len)
2872 return (ma);
2873 if (ma == NULL) {
2874 ma = malloc(sizeof *ma, M_MOUNT, M_WAITOK | M_ZERO);
2875 SLIST_INIT(&ma->list);
2877 if (ma->error)
2878 return (ma);
2880 SLIST_INSERT_HEAD(&ma->list, maa, next);
2882 ma->error = copyinstr(val, tbuf, len, NULL);
2883 return (mount_arg(ma, name, tbuf, -1));
2892 mount_arg(struct mntarg *ma, const char *name, const void *val, int len)
2895 if (ma == NULL) {
2896 ma = malloc(sizeof *ma, M_MOUNT, M_WAITOK | M_ZERO);
2897 SLIST_INIT(&ma->list);
2899 if (ma->error)
2900 return (ma);
2902 ma->v = realloc(ma->v, sizeof *ma->v * (ma->len + 2),
2904 ma->v[ma->len].iov_base = (void *)(uintptr_t)name;
2905 ma->v[ma->len].iov_len = strlen(name) + 1;
2906 ma->len++;
2908 ma->v[ma->len].iov_base = (void *)(uintptr_t)val;
2910 ma->v[ma->len].iov_len = strlen(val) + 1;
2912 ma->v[ma->len].iov_len = len;
2913 ma->len++;
2914 return (ma);
2921 free_mntarg(struct mntarg *ma)
2925 while (!SLIST_EMPTY(&ma->list)) {
2926 maa = SLIST_FIRST(&ma->list);
2927 SLIST_REMOVE_HEAD(&ma->list, next);
2930 free(ma->v, M_MOUNT);
2931 free(ma, M_MOUNT);
2938 kernel_mount(struct mntarg *ma, uint64_t flags)
2943 KASSERT(ma != NULL, ("kernel_mount NULL ma"));
2944 KASSERT(ma->error != 0 || ma->v != NULL, ("kernel_mount NULL ma->v"));
2945 KASSERT(!(ma->len & 1), ("kernel_mount odd ma->len (%d)", ma->len));
2947 error = ma->error;
2949 auio.uio_iov = ma->v;
2950 auio.uio_iovcnt = ma->len;
2954 free_mntarg(ma);