X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f6ab9c9ababa2cf6e5c723b83ffb9362094054e8..270869139db617e29a35bb9ded41087bb702f9ac:/lunaix-os/kernel/fs/iso9660/mount.c diff --git a/lunaix-os/kernel/fs/iso9660/mount.c b/lunaix-os/kernel/fs/iso9660/mount.c index 1989560..aeb6e3b 100644 --- a/lunaix-os/kernel/fs/iso9660/mount.c +++ b/lunaix-os/kernel/fs/iso9660/mount.c @@ -1,23 +1,29 @@ #include -#include -#include +#include #include +#include #include -#include +#include "iso9660.h" struct cake_pile* drec_cache_pile; extern void iso9660_init_inode(struct v_superblock* vsb, struct v_inode* inode); -u32_t -iso9660_rd_capacity(struct v_superblock* vsb) +static size_t +__iso9660_rd_capacity(struct v_superblock* vsb) { struct iso_superblock* isovsb = (struct iso_superblock*)vsb->data; return isovsb->volume_size; } +static void +__vsb_release(struct v_superblock* vsb) +{ + vfree(vsb->data); +} + int iso9660_mount(struct v_superblock* vsb, struct v_dnode* mount_point) { @@ -54,7 +60,9 @@ iso9660_mount(struct v_superblock* vsb, struct v_dnode* mount_point) vsb->data = isovsb; vsb->ops.init_inode = iso9660_init_inode; - vsb->ops.read_capacity = iso9660_rd_capacity; + vsb->ops.read_capacity = __iso9660_rd_capacity; + vsb->ops.release = __vsb_release; + vsb->blksize = ISO9660_BLKSZ; struct v_inode* rootino = vfs_i_alloc(vsb); struct iso_var_mdu* mdu = (struct iso_var_mdu*)vprim->root_record; @@ -89,24 +97,24 @@ done: return errno; } + + int iso9660_unmount(struct v_superblock* vsb) { - vfree(vsb->data); - return 0; } void iso9660_init() { + struct filesystem* fs; + fs = fsapi_fs_declare("iso9660", FSTYPE_ROFS); + + fsapi_fs_set_mntops(fs, iso9660_mount, iso9660_unmount); + fsapi_fs_finalise(fs); + drec_cache_pile = cake_new_pile("iso_drec", sizeof(struct iso_drecache), 1, 0); - - struct filesystem* fs = fsm_new_fs("iso9660", -1); - fs->types |= FSTYPE_ROFS; - fs->mount = iso9660_mount; - fs->unmount = iso9660_unmount; - - fsm_register(fs); -} \ No newline at end of file +} +EXPORT_FILE_SYSTEM(iso9660, iso9660_init); \ No newline at end of file