aboutsummaryrefslogtreecommitdiff
path: root/lib/fs/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fs/fs.c')
-rw-r--r--lib/fs/fs.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/fs/fs.c b/lib/fs/fs.c
index 0bd21e86..13458661 100644
--- a/lib/fs/fs.c
+++ b/lib/fs/fs.c
@@ -165,6 +165,26 @@ static status_t mount(const char *path, const char *device, const struct fs_api
}
+status_t fs_format_device(const char *fsname, const char *device, const void *args)
+{
+ const struct fs_impl *fs = find_fs(fsname);
+ if (!fs)
+ return ERR_NOT_FOUND;
+
+ if (fs->api->format == NULL) {
+ return ERR_NOT_SUPPORTED;
+ }
+
+ bdev_t *dev = NULL;
+ if (device && device[0] != '\0') {
+ dev = bio_open(device);
+ if (!dev)
+ return ERR_NOT_FOUND;
+ }
+
+ return fs->api->format(dev, args);
+}
+
status_t fs_mount(const char *path, const char *fsname, const char *device)
{
const struct fs_impl *fs = find_fs(fsname);