From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: barebox@lists.infradead.org
Subject: [PATCH 1/4] fs/mount: add autodetection type support
Date: Sun, 12 Aug 2012 13:49:36 +0200 [thread overview]
Message-ID: <1344772179-13591-1-git-send-email-plagnioj@jcrosoft.com> (raw)
In-Reply-To: <20120812114647.GF6271@game.jcrosoft.org>
if NULL is pass as type mount will try to autodetect the filesystem type
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
fs/Kconfig | 5 +++++
fs/fs.c | 28 ++++++++++++++++++++++++++++
include/fs.h | 5 +++++
3 files changed, 38 insertions(+)
diff --git a/fs/Kconfig b/fs/Kconfig
index b75820f..4c66543 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1,6 +1,11 @@
menu "Filesystem support "
+config FS
+ bool
+ default y
+ select FILETYPE
+
config FS_AUTOMOUNT
bool
diff --git a/fs/fs.c b/fs/fs.c
index 0b376a5..7126577 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -954,6 +954,28 @@ int register_fs_driver(struct fs_driver_d *fsdrv)
}
EXPORT_SYMBOL(register_fs_driver);
+static const char * detect_fs(const char *filename)
+{
+ enum filetype type = file_name_detect_type(filename);
+ struct driver_d *drv;
+ struct fs_driver_d *fdrv;
+
+ if (type == filetype_unknown)
+ return NULL;
+
+ for_each_driver(drv) {
+ fdrv = drv_to_fs_driver(drv);
+
+ if (drv->bus != &fs_bus)
+ continue;
+
+ if(type == fdrv->type)
+ return drv->name;
+ }
+
+ return NULL;
+}
+
/*
* Mount a device to a directory.
* We do this by registering a new device on which the filesystem
@@ -985,6 +1007,12 @@ int mount(const char *device, const char *fsname, const char *_path)
}
}
+ if (!fsname)
+ fsname = detect_fs(device);
+
+ if (!fsname)
+ return -ENOENT;
+
fsdev = xzalloc(sizeof(struct fs_device_d));
fsdev->backingstore = xstrdup(device);
safe_strncpy(fsdev->dev.name, fsname, MAX_DRIVER_NAME);
diff --git a/include/fs.h b/include/fs.h
index c0b9f71..22470e6 100644
--- a/include/fs.h
+++ b/include/fs.h
@@ -2,6 +2,7 @@
#define __FS_H
#include <driver.h>
+#include <filetype.h>
#define PATH_MAX 1024 /* include/linux/limits.h */
@@ -72,6 +73,8 @@ struct fs_driver_d {
struct driver_d drv;
+ enum filetype type;
+
unsigned long flags;
};
@@ -93,6 +96,8 @@ struct fs_device_d {
struct list_head list;
};
+#define drv_to_fs_driver(d) container_of(d, struct fs_driver_d, drv)
+
/*
* standard posix file functions
*/
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2012-08-12 11:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-12 11:46 [PATCH 0/4] fs/mount: add autodetection support Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 11:49 ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2012-08-12 11:49 ` [PATCH 2/4] filetype: add fat filesystem support Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 11:49 ` [PATCH 3/4] fs/fat: add filetype Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 11:49 ` [PATCH 4/4] command/mount: add autodetection support Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 12:43 ` Sascha Hauer
2012-08-12 12:46 ` [PATCH 1/4] fs/mount: add autodetection type support Sascha Hauer
2012-08-13 7:08 ` Uwe Kleine-König
2012-08-13 7:30 ` Jean-Christophe PLAGNIOL-VILLARD
2012-08-13 8:16 ` Uwe Kleine-König
2012-08-13 10:56 ` Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 18:05 [PATCH 0/4 v2] fs/mount: add autodetection support Jean-Christophe PLAGNIOL-VILLARD
2012-08-12 18:10 ` [PATCH 1/4] fs/mount: add autodetection type support Jean-Christophe PLAGNIOL-VILLARD
2012-08-13 18:49 ` Sascha Hauer
2012-08-15 7:25 ` Jean-Christophe PLAGNIOL-VILLARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1344772179-13591-1-git-send-email-plagnioj@jcrosoft.com \
--to=plagnioj@jcrosoft.com \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox