mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-03 17:40:04 +00:00
UBIFS: support mounting of UBI volume character devices
This patch makes it possible to mount UBI character device nodes, and use something like: $ mount -t ubifs /dev/ubi_volume_name /mnt/ubifs instead of the old restrictive 'nodev' semantics: $ mount -t ubifs ubi0_0 /mnt/ubifs [Comments and the patch were amended a bit by Artem] Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
b571028418
commit
9722324e65
1 changed files with 15 additions and 5 deletions
|
@ -1842,22 +1842,32 @@ const struct super_operations ubifs_super_operations = {
|
|||
* @name: UBI volume name
|
||||
* @mode: UBI volume open mode
|
||||
*
|
||||
* There are several ways to specify UBI volumes when mounting UBIFS:
|
||||
* o ubiX_Y - UBI device number X, volume Y;
|
||||
* o ubiY - UBI device number 0, volume Y;
|
||||
* The primary method of mounting UBIFS is by specifying the UBI volume
|
||||
* character device node path. However, UBIFS may also be mounted withoug any
|
||||
* character device node using one of the following methods:
|
||||
*
|
||||
* o ubiX_Y - mount UBI device number X, volume Y;
|
||||
* o ubiY - mount UBI device number 0, volume Y;
|
||||
* o ubiX:NAME - mount UBI device X, volume with name NAME;
|
||||
* o ubi:NAME - mount UBI device 0, volume with name NAME.
|
||||
*
|
||||
* Alternative '!' separator may be used instead of ':' (because some shells
|
||||
* like busybox may interpret ':' as an NFS host name separator). This function
|
||||
* returns ubi volume object in case of success and a negative error code in
|
||||
* case of failure.
|
||||
* returns UBI volume description object in case of success and a negative
|
||||
* error code in case of failure.
|
||||
*/
|
||||
static struct ubi_volume_desc *open_ubi(const char *name, int mode)
|
||||
{
|
||||
struct ubi_volume_desc *ubi;
|
||||
int dev, vol;
|
||||
char *endptr;
|
||||
|
||||
/* First, try to open using the device node path method */
|
||||
ubi = ubi_open_volume_path(name, mode);
|
||||
if (!IS_ERR(ubi))
|
||||
return ubi;
|
||||
|
||||
/* Try the "nodev" method */
|
||||
if (name[0] != 'u' || name[1] != 'b' || name[2] != 'i')
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
|
|
Loading…
Reference in a new issue