On Sat, Sep 24, 2022 at 08:32:55AM -0400, Dave Voutila wrote: > > Matthew Martin <phy1...@gmail.com> writes: > > > When vmd/vmctl switched to handling memory in bytes, seems a few places > > for user VMs were missed. Additionally the first hunk removes the quota > > hit if the VM will not be created. > > > > Thanks, I'll take a deeper look this week. I don't use the user quota > pieces, so I'll need to read through some of this to confirm. If you > don't hear from me by end of week (October) you're welcome to nudge me.
October nudge > > diff --git config.c config.c > > index 374d7de6629..425c901f36a 100644 > > --- config.c > > +++ config.c > > @@ -241,8 +241,10 @@ config_setvm(struct privsep *ps, struct vmd_vm *vm, > > uint32_t peerid, uid_t uid) > > /* increase the user reference counter and check user limits */ > > if (vm->vm_user != NULL && user_get(vm->vm_user->usr_id.uid) != NULL) { > > user_inc(vcp, vm->vm_user, 1); > > - if (user_checklimit(vm->vm_user, vcp) == -1) > > + if (user_checklimit(vm->vm_user, vcp) == -1) { > > + user_inc(vcp, vm->vm_user, 0); > > return (EPERM); > > + } > > } > > > > /* > > diff --git vmd.c vmd.c > > index 2f3ac1a76f2..a7687d6ce93 100644 > > --- vmd.c > > +++ vmd.c > > @@ -1966,7 +1966,7 @@ user_inc(struct vm_create_params *vcp, struct > > vmd_user *usr, int inc) > > usr->usr_maxifs += vcp->vcp_nnics * inc; > > > > if (log_getverbose() > 1) { > > - (void)fmt_scaled(usr->usr_maxmem * 1024 * 1024, mem); > > + (void)fmt_scaled(usr->usr_maxmem, mem); > > log_debug("%s: %c uid %d ref %d cpu %llu mem %s ifs %llu", > > __func__, inc == 1 ? '+' : '-', > > usr->usr_id.uid, usr->usr_refcnt, > > diff --git vmd.h vmd.h > > index 9010ad6eb9f..8be7db3d059 100644 > > --- vmd.h > > +++ vmd.h > > @@ -67,7 +67,7 @@ > > > > /* default user instance limits */ > > #define VM_DEFAULT_USER_MAXCPU 4 > > -#define VM_DEFAULT_USER_MAXMEM 2048 > > +#define VM_DEFAULT_USER_MAXMEM 2L * 1024 * 1024 * 1024 /* 2 GiB */ > > #define VM_DEFAULT_USER_MAXIFS 8 > > > > /* vmd -> vmctl error codes */