[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v9 04/12] xen: add basic hypervisor filesystem support
On 15.05.2020 13:58, Juergen Gross wrote: > --- /dev/null > +++ b/xen/common/hypfs.c > @@ -0,0 +1,418 @@ > +/****************************************************************************** > + * > + * hypfs.c > + * > + * Simple sysfs-like file system for the hypervisor. > + */ > + > +#include <xen/err.h> > +#include <xen/guest_access.h> > +#include <xen/hypercall.h> > +#include <xen/hypfs.h> > +#include <xen/lib.h> > +#include <xen/rwlock.h> > +#include <public/hypfs.h> > + > +#ifdef CONFIG_COMPAT > +#include <compat/hypfs.h> > +CHECK_hypfs_dirlistentry; > +#endif > + > +#define DIRENTRY_NAME_OFF offsetof(struct xen_hypfs_dirlistentry, name) > +#define DIRENTRY_SIZE(name_len) \ > + (DIRENTRY_NAME_OFF + \ > + ROUNDUP((name_len) + 1, alignof(struct xen_hypfs_direntry))) > + > +static DEFINE_RWLOCK(hypfs_lock); > +enum hypfs_lock_state { > + hypfs_unlocked, > + hypfs_read_locked, > + hypfs_write_locked > +}; > +static DEFINE_PER_CPU(enum hypfs_lock_state, hypfs_locked); > + > +HYPFS_DIR_INIT(hypfs_root, ""); > + > +static void hypfs_read_lock(void) > +{ > + read_lock(&hypfs_lock); > + this_cpu(hypfs_locked) = hypfs_read_locked; > +} Perhaps at least ASSERT(this_cpu(hypfs_locked) != hypfs_write_locked); first thing in the function? > +static void hypfs_write_lock(void) > +{ > + write_lock(&hypfs_lock); > + this_cpu(hypfs_locked) = hypfs_write_locked; > +} If so, ASSERT(this_cpu(hypfs_locked) == hypfs_unlocked); here then. > +static struct hypfs_entry *hypfs_get_entry_rel(struct hypfs_entry_dir *dir, > + const char *path) > +{ > + const char *end; > + struct hypfs_entry *entry; > + unsigned int name_len; > + bool again = true; > + > + while ( again ) > + { > + if ( dir->e.type != XEN_HYPFS_TYPE_DIR ) > + return NULL; > + > + if ( !*path ) > + return &dir->e; > + > + end = strchr(path, '/'); > + if ( !end ) > + end = strchr(path, '\0'); > + name_len = end - path; > + > + again = false; Hard tab slipped in. With at least the latter taken care of, non-XSM pieces Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |