qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] virtfs: 9p: local: add default uid and gid options
@ 2025-12-01 18:00 Andrey Erokhin
  2025-12-03 10:33 ` Christian Schoenebeck
  0 siblings, 1 reply; 6+ messages in thread
From: Andrey Erokhin @ 2025-12-01 18:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: Christian Schoenebeck, Greg Kurz

I was trying to boot from a directory tree owned by an ordinary user,
and some daemons weren't happy about non-root ownership of some files

Example use:
-virtfs local,path=rootfs,mount_tag=root,security_model=mapped,uid=0,gid=0

Works with any security_model

Signed-off-by: Andrey Erokhin <language.lawyer@gmail.com>
---
 fsdev/file-op-9p.h      |  5 +++++
 fsdev/qemu-fsdev-opts.c | 12 ++++++++++++
 fsdev/qemu-fsdev.c      |  2 ++
 hw/9pfs/9p-local.c      | 15 +++++++++++++++
 hw/9pfs/9p.c            |  2 ++
 system/vl.c             |  9 +++++++++
 6 files changed, 45 insertions(+)

diff --git a/fsdev/file-op-9p.h b/fsdev/file-op-9p.h
index b9dae8c84c..46fb88001e 100644
--- a/fsdev/file-op-9p.h
+++ b/fsdev/file-op-9p.h
@@ -15,6 +15,7 @@
 #define FILE_OP_9P_H
 
 #include <dirent.h>
+#include <sys/types.h>
 #include <utime.h>
 #include "qemu-fsdev-throttle.h"
 #include "p9array.h"
@@ -94,6 +95,8 @@ typedef struct FsDriverEntry {
     FsThrottle fst;
     mode_t fmode;
     mode_t dmode;
+    uid_t dflt_uid;
+    gid_t dflt_gid;
 } FsDriverEntry;
 
 struct FsContext {
@@ -107,6 +110,8 @@ struct FsContext {
     void *private;
     mode_t fmode;
     mode_t dmode;
+    uid_t dflt_uid;
+    gid_t dflt_gid;
 };
 
 struct V9fsPath {
diff --git a/fsdev/qemu-fsdev-opts.c b/fsdev/qemu-fsdev-opts.c
index 07a18c6e48..c99abb3de6 100644
--- a/fsdev/qemu-fsdev-opts.c
+++ b/fsdev/qemu-fsdev-opts.c
@@ -46,6 +46,12 @@ static QemuOptsList qemu_fsdev_opts = {
         }, {
             .name = "dmode",
             .type = QEMU_OPT_NUMBER,
+        }, {
+            .name = "uid",
+            .type = QEMU_OPT_NUMBER,
+        }, {
+            .name = "gid",
+            .type = QEMU_OPT_NUMBER,
         },
 
         THROTTLE_OPTS,
@@ -92,6 +98,12 @@ static QemuOptsList qemu_virtfs_opts = {
         }, {
             .name = "dmode",
             .type = QEMU_OPT_NUMBER,
+        }, {
+            .name = "uid",
+            .type = QEMU_OPT_NUMBER,
+        }, {
+            .name = "gid",
+            .type = QEMU_OPT_NUMBER,
         },
 
         { /*End of list */ }
diff --git a/fsdev/qemu-fsdev.c b/fsdev/qemu-fsdev.c
index 57877dad0a..faa84dc033 100644
--- a/fsdev/qemu-fsdev.c
+++ b/fsdev/qemu-fsdev.c
@@ -58,6 +58,8 @@ static FsDriverTable FsDrivers[] = {
             "writeout",
             "fmode",
             "dmode",
+            "uid",
+            "gid",
             "multidevs",
             "throttling.bps-total",
             "throttling.bps-read",
diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
index 5ce97b76a6..cecf4aa50c 100644
--- a/hw/9pfs/9p-local.c
+++ b/hw/9pfs/9p-local.c
@@ -198,6 +198,12 @@ static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)
     if (err) {
         goto err_out;
     }
+    if (fs_ctx->dflt_uid != -1) {
+        stbuf->st_uid = fs_ctx->dflt_uid;
+    }
+    if (fs_ctx->dflt_gid != -1) {
+        stbuf->st_gid = fs_ctx->dflt_gid;
+    }
     if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
         /* Actual credentials are part of extended attrs */
         uid_t tmp_uid;
@@ -788,6 +794,12 @@ static int local_fstat(FsContext *fs_ctx, int fid_type,
     if (err) {
         return err;
     }
+    if (fs_ctx->dflt_uid != -1) {
+        stbuf->st_uid = fs_ctx->dflt_uid;
+    }
+    if (fs_ctx->dflt_gid != -1) {
+        stbuf->st_gid = fs_ctx->dflt_gid;
+    }
     if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
         /* Actual credentials are part of extended attrs */
         uid_t tmp_uid;
@@ -1570,6 +1582,9 @@ static int local_parse_opts(QemuOpts *opts, FsDriverEntry *fse, Error **errp)
         return -1;
     }
 
+    fse->dflt_uid = qemu_opt_get_number(opts, "uid", -1);
+    fse->dflt_gid = qemu_opt_get_number(opts, "gid", -1);
+
     if (fse->export_flags & V9FS_SM_MAPPED ||
         fse->export_flags & V9FS_SM_MAPPED_FILE) {
         fse->fmode =
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index acfa7db4e1..492379d361 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -4317,6 +4317,8 @@ int v9fs_device_realize_common(V9fsState *s, const V9fsTransport *t,
 
     s->ctx.fmode = fse->fmode;
     s->ctx.dmode = fse->dmode;
+    s->ctx.dflt_uid = fse->dflt_uid;
+    s->ctx.dflt_gid = fse->dflt_gid;
 
     s->fids = g_hash_table_new(NULL, NULL);
     qemu_co_rwlock_init(&s->rename_lock);
diff --git a/system/vl.c b/system/vl.c
index 3b7057e6c6..d363b046a6 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -3253,6 +3253,7 @@ void qemu_init(int argc, char **argv)
                 QemuOpts *fsdev;
                 QemuOpts *device;
                 const char *writeout, *sock_fd, *socket, *path, *security_model,
+                           *uid, *gid,
                            *multidevs;
 
                 olist = qemu_find_opts("virtfs");
@@ -3301,6 +3302,14 @@ void qemu_init(int argc, char **argv)
                     qemu_opt_set(fsdev, "security_model", security_model,
                                  &error_abort);
                 }
+                uid = qemu_opt_get(opts, "uid");
+                if (uid) {
+                    qemu_opt_set(fsdev, "uid", uid, &error_abort);
+                }
+                gid = qemu_opt_get(opts, "gid");
+                if (gid) {
+                    qemu_opt_set(fsdev, "gid", gid, &error_abort);
+                }
                 socket = qemu_opt_get(opts, "socket");
                 if (socket) {
                     qemu_opt_set(fsdev, "socket", socket, &error_abort);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] virtfs: 9p: local: add default uid and gid options
  2025-12-01 18:00 [RFC PATCH] virtfs: 9p: local: add default uid and gid options Andrey Erokhin
@ 2025-12-03 10:33 ` Christian Schoenebeck
  2025-12-06 17:10   ` Andrey Erokhin
  0 siblings, 1 reply; 6+ messages in thread
From: Christian Schoenebeck @ 2025-12-03 10:33 UTC (permalink / raw)
  To: Greg Kurz, Andrey Erokhin; +Cc: qemu-devel

On Monday, 1 December 2025 19:00:53 CET Andrey Erokhin wrote:
> I was trying to boot from a directory tree owned by an ordinary user,
> and some daemons weren't happy about non-root ownership of some files
> 
> Example use:
> -virtfs local,path=rootfs,mount_tag=root,security_model=mapped,uid=0,gid=0
> 
> Works with any security_model

First I thought do we really want to open that rabbit hole and add permission 
management to the CLI options? However I get why this might be useful for 
mapped[-*] security models.

But for passthrough it is not of any use, is it? Just saying, because you 
write it "Works with any security_model".

Also while it is very handy to have a short option name like "uid" and "gid", 
for the sake of long term progression and clarity an option name like 
"default-uid" would be more appropriate.

The patch is also missing the required documentation changes for these new 
options BTW.

/Christian

> Signed-off-by: Andrey Erokhin <language.lawyer@gmail.com>
> ---
>  fsdev/file-op-9p.h      |  5 +++++
>  fsdev/qemu-fsdev-opts.c | 12 ++++++++++++
>  fsdev/qemu-fsdev.c      |  2 ++
>  hw/9pfs/9p-local.c      | 15 +++++++++++++++
>  hw/9pfs/9p.c            |  2 ++
>  system/vl.c             |  9 +++++++++
>  6 files changed, 45 insertions(+)
> 
> diff --git a/fsdev/file-op-9p.h b/fsdev/file-op-9p.h
> index b9dae8c84c..46fb88001e 100644
> --- a/fsdev/file-op-9p.h
> +++ b/fsdev/file-op-9p.h
> @@ -15,6 +15,7 @@
>  #define FILE_OP_9P_H
> 
>  #include <dirent.h>
> +#include <sys/types.h>
>  #include <utime.h>
>  #include "qemu-fsdev-throttle.h"
>  #include "p9array.h"
> @@ -94,6 +95,8 @@ typedef struct FsDriverEntry {
>      FsThrottle fst;
>      mode_t fmode;
>      mode_t dmode;
> +    uid_t dflt_uid;
> +    gid_t dflt_gid;
>  } FsDriverEntry;
> 
>  struct FsContext {
> @@ -107,6 +110,8 @@ struct FsContext {
>      void *private;
>      mode_t fmode;
>      mode_t dmode;
> +    uid_t dflt_uid;
> +    gid_t dflt_gid;
>  };
> 
>  struct V9fsPath {
> diff --git a/fsdev/qemu-fsdev-opts.c b/fsdev/qemu-fsdev-opts.c
> index 07a18c6e48..c99abb3de6 100644
> --- a/fsdev/qemu-fsdev-opts.c
> +++ b/fsdev/qemu-fsdev-opts.c
> @@ -46,6 +46,12 @@ static QemuOptsList qemu_fsdev_opts = {
>          }, {
>              .name = "dmode",
>              .type = QEMU_OPT_NUMBER,
> +        }, {
> +            .name = "uid",
> +            .type = QEMU_OPT_NUMBER,
> +        }, {
> +            .name = "gid",
> +            .type = QEMU_OPT_NUMBER,
>          },
> 
>          THROTTLE_OPTS,
> @@ -92,6 +98,12 @@ static QemuOptsList qemu_virtfs_opts = {
>          }, {
>              .name = "dmode",
>              .type = QEMU_OPT_NUMBER,
> +        }, {
> +            .name = "uid",
> +            .type = QEMU_OPT_NUMBER,
> +        }, {
> +            .name = "gid",
> +            .type = QEMU_OPT_NUMBER,
>          },
> 
>          { /*End of list */ }
> diff --git a/fsdev/qemu-fsdev.c b/fsdev/qemu-fsdev.c
> index 57877dad0a..faa84dc033 100644
> --- a/fsdev/qemu-fsdev.c
> +++ b/fsdev/qemu-fsdev.c
> @@ -58,6 +58,8 @@ static FsDriverTable FsDrivers[] = {
>              "writeout",
>              "fmode",
>              "dmode",
> +            "uid",
> +            "gid",
>              "multidevs",
>              "throttling.bps-total",
>              "throttling.bps-read",
> diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
> index 5ce97b76a6..cecf4aa50c 100644
> --- a/hw/9pfs/9p-local.c
> +++ b/hw/9pfs/9p-local.c
> @@ -198,6 +198,12 @@ static int local_lstat(FsContext *fs_ctx, V9fsPath
> *fs_path, struct stat *stbuf) if (err) {
>          goto err_out;
>      }
> +    if (fs_ctx->dflt_uid != -1) {
> +        stbuf->st_uid = fs_ctx->dflt_uid;
> +    }
> +    if (fs_ctx->dflt_gid != -1) {
> +        stbuf->st_gid = fs_ctx->dflt_gid;
> +    }
>      if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
>          /* Actual credentials are part of extended attrs */
>          uid_t tmp_uid;
> @@ -788,6 +794,12 @@ static int local_fstat(FsContext *fs_ctx, int fid_type,
> if (err) {
>          return err;
>      }
> +    if (fs_ctx->dflt_uid != -1) {
> +        stbuf->st_uid = fs_ctx->dflt_uid;
> +    }
> +    if (fs_ctx->dflt_gid != -1) {
> +        stbuf->st_gid = fs_ctx->dflt_gid;
> +    }
>      if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
>          /* Actual credentials are part of extended attrs */
>          uid_t tmp_uid;
> @@ -1570,6 +1582,9 @@ static int local_parse_opts(QemuOpts *opts,
> FsDriverEntry *fse, Error **errp) return -1;
>      }
> 
> +    fse->dflt_uid = qemu_opt_get_number(opts, "uid", -1);
> +    fse->dflt_gid = qemu_opt_get_number(opts, "gid", -1);
> +
>      if (fse->export_flags & V9FS_SM_MAPPED ||
>          fse->export_flags & V9FS_SM_MAPPED_FILE) {
>          fse->fmode =
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index acfa7db4e1..492379d361 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -4317,6 +4317,8 @@ int v9fs_device_realize_common(V9fsState *s, const
> V9fsTransport *t,
> 
>      s->ctx.fmode = fse->fmode;
>      s->ctx.dmode = fse->dmode;
> +    s->ctx.dflt_uid = fse->dflt_uid;
> +    s->ctx.dflt_gid = fse->dflt_gid;
> 
>      s->fids = g_hash_table_new(NULL, NULL);
>      qemu_co_rwlock_init(&s->rename_lock);
> diff --git a/system/vl.c b/system/vl.c
> index 3b7057e6c6..d363b046a6 100644
> --- a/system/vl.c
> +++ b/system/vl.c
> @@ -3253,6 +3253,7 @@ void qemu_init(int argc, char **argv)
>                  QemuOpts *fsdev;
>                  QemuOpts *device;
>                  const char *writeout, *sock_fd, *socket, *path,
> *security_model, +                           *uid, *gid,
>                             *multidevs;
> 
>                  olist = qemu_find_opts("virtfs");
> @@ -3301,6 +3302,14 @@ void qemu_init(int argc, char **argv)
>                      qemu_opt_set(fsdev, "security_model", security_model,
>                                   &error_abort);
>                  }
> +                uid = qemu_opt_get(opts, "uid");
> +                if (uid) {
> +                    qemu_opt_set(fsdev, "uid", uid, &error_abort);
> +                }
> +                gid = qemu_opt_get(opts, "gid");
> +                if (gid) {
> +                    qemu_opt_set(fsdev, "gid", gid, &error_abort);
> +                }
>                  socket = qemu_opt_get(opts, "socket");
>                  if (socket) {
>                      qemu_opt_set(fsdev, "socket", socket, &error_abort);




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] virtfs: 9p: local: add default uid and gid options
  2025-12-03 10:33 ` Christian Schoenebeck
@ 2025-12-06 17:10   ` Andrey Erokhin
  2025-12-07 11:34     ` Warner Losh
  0 siblings, 1 reply; 6+ messages in thread
From: Andrey Erokhin @ 2025-12-06 17:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Christian Schoenebeck

On 03/12/2025 15:33, Christian Schoenebeck wrote:
> On Monday, 1 December 2025 19:00:53 CET Andrey Erokhin wrote:
>> I was trying to boot from a directory tree owned by an ordinary user,
>> and some daemons weren't happy about non-root ownership of some files
>>
>> Example use:
>> -virtfs local,path=rootfs,mount_tag=root,security_model=mapped,uid=0,gid=0
>>
>> Works with any security_model
> 
> First I thought do we really want to open that rabbit hole and add permission management to the CLI options? However I get why this might be useful for  mapped[-*] security models.
> But for passthrough it is not of any use, is it?

Prolly none, just a side effect of how it's implemented.
Can either make it an error when used with passthrough, or ignore them (use default -1 value) when copying options to 9p fs context (with or without a warning)
 
> Also while it is very handy to have a short option name like "uid" and "gid", for the sake of long term progression and clarity an option name like "default-uid" would be more appropriate.

Or rather default_uid, to match other options style? But uid/gid also kinda match fmode/dmode :\

> The patch is also missing the required documentation changes for these new options BTW.

Haven’t added them yet, wasn’t sure there would be interest in this feature


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] virtfs: 9p: local: add default uid and gid options
  2025-12-06 17:10   ` Andrey Erokhin
@ 2025-12-07 11:34     ` Warner Losh
  2025-12-09 10:21       ` Christian Schoenebeck
  0 siblings, 1 reply; 6+ messages in thread
From: Warner Losh @ 2025-12-07 11:34 UTC (permalink / raw)
  To: Andrey Erokhin; +Cc: QEMU Developers, Christian Schoenebeck

[-- Attachment #1: Type: text/plain, Size: 1982 bytes --]

On Sat, Dec 6, 2025, 10:12 AM Andrey Erokhin <language.lawyer@gmail.com>
wrote:

> On 03/12/2025 15:33, Christian Schoenebeck wrote:
> > On Monday, 1 December 2025 19:00:53 CET Andrey Erokhin wrote:
> >> I was trying to boot from a directory tree owned by an ordinary user,
> >> and some daemons weren't happy about non-root ownership of some files
> >>
> >> Example use:
> >> -virtfs
> local,path=rootfs,mount_tag=root,security_model=mapped,uid=0,gid=0
> >>
> >> Works with any security_model
> >
> > First I thought do we really want to open that rabbit hole and add
> permission management to the CLI options? However I get why this might be
> useful for  mapped[-*] security models.
> > But for passthrough it is not of any use, is it?
>
> Prolly none, just a side effect of how it's implemented.
> Can either make it an error when used with passthrough, or ignore them
> (use default -1 value) when copying options to 9p fs context (with or
> without a warning)
>
> > Also while it is very handy to have a short option name like "uid" and
> "gid", for the sake of long term progression and clarity an option name
> like "default-uid" would be more appropriate.
>
> Or rather default_uid, to match other options style? But uid/gid also
> kinda match fmode/dmode :\
>

FreeBSD has a mode where you can build the image where the files in the
filesystem are owned by the user with random permission bits, but the
actual owners / modes are in an mtree formatted file. The nopriv imagers
combine the two when making images. It would be nice to have p9 do a
simular mapping for the guest so I can boot test these images more directly
w/o the copyout to the "bootable image". The set the uid feature would
help, true, but leaves me wanting more.

Warner

> The patch is also missing the required documentation changes for these
> new options BTW.
>
> Haven’t added them yet, wasn’t sure there would be interest in this feature
>
>

[-- Attachment #2: Type: text/html, Size: 2711 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] virtfs: 9p: local: add default uid and gid options
  2025-12-07 11:34     ` Warner Losh
@ 2025-12-09 10:21       ` Christian Schoenebeck
  2025-12-09 10:38         ` Warner Losh
  0 siblings, 1 reply; 6+ messages in thread
From: Christian Schoenebeck @ 2025-12-09 10:21 UTC (permalink / raw)
  To: Andrey Erokhin, Warner Losh; +Cc: qemu-devel, QEMU Developers

On Sunday, 7 December 2025 12:34:24 CET Warner Losh wrote:
> On Sat, Dec 6, 2025, 10:12 AM Andrey Erokhin <language.lawyer@gmail.com> 
> wrote:
> > On 03/12/2025 15:33, Christian Schoenebeck wrote:
> > > On Monday, 1 December 2025 19:00:53 CET Andrey Erokhin wrote:
[...]
> > > But for passthrough it is not of any use, is it?
> > 
> > Prolly none, just a side effect of how it's implemented.
> > Can either make it an error when used with passthrough, or ignore them
> > (use default -1 value) when copying options to 9p fs context (with or
> > without a warning)
> > 
> > > Also while it is very handy to have a short option name like "uid" and
> > 
> > "gid", for the sake of long term progression and clarity an option name
> > like "default-uid" would be more appropriate.
> > 
> > Or rather default_uid, to match other options style? But uid/gid also
> > kinda match fmode/dmode :\

Right, that would render it strange having default_uid/default_gid vs. fmod/
gmode when all of them actually mean default values.

OK, as fmode/dmode are already there, then let's stick to your initial 
suggestion of just using uid/gid.

But similar to fmode/dmode it should be made clear on documentation level that 
uid/gid are only useful for mapped security models.

> FreeBSD has a mode where you can build the image where the files in the
> filesystem are owned by the user with random permission bits, but the
> actual owners / modes are in an mtree formatted file. The nopriv imagers
> combine the two when making images. It would be nice to have p9 do a
> simular mapping for the guest so I can boot test these images more directly
> w/o the copyout to the "bootable image". The set the uid feature would
> help, true, but leaves me wanting more.

And a host level (not yet existing) tool like qemu-9p-chown, qemu-9p-chmod 
would be less appropriate for your use case?

/Christian




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH] virtfs: 9p: local: add default uid and gid options
  2025-12-09 10:21       ` Christian Schoenebeck
@ 2025-12-09 10:38         ` Warner Losh
  0 siblings, 0 replies; 6+ messages in thread
From: Warner Losh @ 2025-12-09 10:38 UTC (permalink / raw)
  To: Christian Schoenebeck; +Cc: Andrey Erokhin, QEMU Developers

[-- Attachment #1: Type: text/plain, Size: 2777 bytes --]

On Tue, Dec 9, 2025 at 3:21 AM Christian Schoenebeck <qemu_oss@crudebyte.com>
wrote:

> On Sunday, 7 December 2025 12:34:24 CET Warner Losh wrote:
> > On Sat, Dec 6, 2025, 10:12 AM Andrey Erokhin <language.lawyer@gmail.com>
>
> > wrote:
> > > On 03/12/2025 15:33, Christian Schoenebeck wrote:
> > > > On Monday, 1 December 2025 19:00:53 CET Andrey Erokhin wrote:
> [...]
> > > > But for passthrough it is not of any use, is it?
> > >
> > > Prolly none, just a side effect of how it's implemented.
> > > Can either make it an error when used with passthrough, or ignore them
> > > (use default -1 value) when copying options to 9p fs context (with or
> > > without a warning)
> > >
> > > > Also while it is very handy to have a short option name like "uid"
> and
> > >
> > > "gid", for the sake of long term progression and clarity an option name
> > > like "default-uid" would be more appropriate.
> > >
> > > Or rather default_uid, to match other options style? But uid/gid also
> > > kinda match fmode/dmode :\
>
> Right, that would render it strange having default_uid/default_gid vs.
> fmod/
> gmode when all of them actually mean default values.
>
> OK, as fmode/dmode are already there, then let's stick to your initial
> suggestion of just using uid/gid.
>
> But similar to fmode/dmode it should be made clear on documentation level
> that
> uid/gid are only useful for mapped security models.
>
> > FreeBSD has a mode where you can build the image where the files in the
> > filesystem are owned by the user with random permission bits, but the
> > actual owners / modes are in an mtree formatted file. The nopriv imagers
> > combine the two when making images. It would be nice to have p9 do a
> > simular mapping for the guest so I can boot test these images more
> directly
> > w/o the copyout to the "bootable image". The set the uid feature would
> > help, true, but leaves me wanting more.
>
> And a host level (not yet existing) tool like qemu-9p-chown, qemu-9p-chmod
> would be less appropriate for your use case?
>

I can't answer directly, since I can't look them up :)
But... I want to own all the files on the host, but I want them to conform
to a spec on
view p9 gives to the guest:

/etc/rc.d type=dir uname=root gname=wheel mode=755
./etc/rc.d/accounting type=file uname=root gname=wheel mode=555
./usr/bin type=dir uname=root gname=wheel mode=755
./usr type=dir uname=root gname=wheel mode=755
./usr/bin/last type=file uname=root gname=wheel mode=555

is a small excerpt of the file we happen to use (though I'm agnostic as to
the actual
format). But these files are long:
wc _.armv7.14.3.metalog
    5316   26759  399552 _.armv7.14.3.metalog
which might pose problems...

Warner

[-- Attachment #2: Type: text/html, Size: 3595 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-12-09 10:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-01 18:00 [RFC PATCH] virtfs: 9p: local: add default uid and gid options Andrey Erokhin
2025-12-03 10:33 ` Christian Schoenebeck
2025-12-06 17:10   ` Andrey Erokhin
2025-12-07 11:34     ` Warner Losh
2025-12-09 10:21       ` Christian Schoenebeck
2025-12-09 10:38         ` Warner Losh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).