summaryrefslogtreecommitdiff
path: root/src/sys/include
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-09-21 20:11:58 -0400
committerIan Moffett <ian@osmora.org>2025-09-21 20:11:58 -0400
commit2df3bcd48260e3038cc3a84d244e3814c8debc0e (patch)
tree51df25367ff90af32b4367d06280132bc8989828 /src/sys/include
parent9116f57c6220e6d4de9e8ecc5c10c7c3003387cc (diff)
kern: vfs: Add support for image-like paths
Typically filesystems are tree-like, however certain filesystems in the form of images have fixed paths baked into them. This optimizes handling so there isn't a need to unpack it into a rootfs/tmpfs Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/include')
-rw-r--r--src/sys/include/sys/mount.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/sys/include/sys/mount.h b/src/sys/include/sys/mount.h
index c93eb2b..c9f686c 100644
--- a/src/sys/include/sys/mount.h
+++ b/src/sys/include/sys/mount.h
@@ -48,6 +48,7 @@
#define MOUNT_INITRD "initrd" /* Initial ramdisk */
/* Forward declarations */
+struct fs_info;
struct vfsops;
struct mount;
@@ -58,11 +59,13 @@ extern struct vfsops g_omar_vfsops;
* Represents a mountpoint
*
* @vp: Vnode of mount
+ * @fs: The filesystem backing this mountpoint
* @name: Mountname
* @link: TAILQ link
*/
struct mount {
struct vnode *vp;
+ struct fs_info *fs;
char name[FSNAME_MAX];
TAILQ_ENTRY(mount) link;
};
@@ -98,15 +101,27 @@ struct mount_args {
*
* @name: Filesystem type name
* @vfsops: VFS operations vector
+ * @attr: Attribute mask that may be set by fs
* @refcount: Mount count of this type
+ *
+ * XXX: The attributes mask is set by the filesystem and
+ * intended as an optimization to provide a way for
+ * filesystems set flags to modify behavior during
+ * things like the lookup stage.
*/
struct fs_info {
char name[FSNAME_MAX];
const struct vfsops *vfsops;
+ uint16_t attr;
int refcount;
};
/*
+ * Filesystem attributes mask
+ */
+#define FS_ATTR_IMAGE BIT (0) /* Is an image kind e.g., OSMORA OMAR */
+
+/*
* VFS operations vector
*
* @init: Initialize the filesystem