EFI loaders provide both block device and file system access to software running under it. For file system access, we will just want to get a mount if available and mount at a default location if not. Provide a helper that does just that. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- fs/fs.c | 19 +++++++++++++++++++ include/fs.h | 1 + 2 files changed, 20 insertions(+) diff --git a/fs/fs.c b/fs/fs.c index 78878e7112d5..a314a49b2db7 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -999,6 +999,25 @@ const char *cdev_mount_default(struct cdev *cdev, const char *fsoptions) return cdev_get_mount_path(cdev); } +/* + * cdev_mount - return existing mount or mount a cdev to the default path + * + * If a cdev is already mounted anywhere return the path + * it's mounted on. + * Otherwise mount it to /mnt/<cdevname> and return the path. Returns an + * error pointer on failure. + */ +const char *cdev_mount(struct cdev *cdev) +{ + const char *path; + + path = cdev_get_mount_path(cdev); + if (path) + return path; + + return cdev_mount_default(cdev, NULL); +} + /* * mount_all - iterate over block devices and mount all devices we are able to */ diff --git a/include/fs.h b/include/fs.h index 894cae3e4c2f..9ea522dc2cc3 100644 --- a/include/fs.h +++ b/include/fs.h @@ -164,6 +164,7 @@ int fs_init_legacy(struct fs_device_d *fsdev); int fsdev_open_cdev(struct fs_device_d *fsdev); const char *cdev_get_mount_path(struct cdev *cdev); const char *cdev_mount_default(struct cdev *cdev, const char *fsoptions); +const char *cdev_mount(struct cdev *cdev); void mount_all(void); void fsdev_set_linux_rootarg(struct fs_device_d *fsdev, const char *str); -- 2.30.2