All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 3/4] ubifs: Add generic fs support
Date: Mon, 14 Sep 2015 19:35:30 +0200	[thread overview]
Message-ID: <55F70562.6000004@redhat.com> (raw)
In-Reply-To: <55E6047A.8040305@wwwdotorg.org>

Hi,

On 01-09-15 22:03, Stephen Warren wrote:
> On 08/22/2015 11:04 AM, Hans de Goede wrote:
>> Add generic fs support, so that commands like ls, load and test -e can be
>> used on ubifs.
>
>> @@ -530,6 +531,28 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
>>   		return 0;
>>   	}
>>
>> +#ifdef CONFIG_CMD_UBIFS
>> +	/*
>> +	 * Special-case ubi, ubi goes through a mtd, rathen then through
>> +	 * a regular block device.
>> +	 */
>> +	if (0 == strcmp(ifname, "ubi")) {
>> +		if (!ubifs_mounted) {
>> +			printf("UBIFS not mounted, use ubifsmount to mount volume first!\n");
>> +			return -1;
>> +		}
>> +
>> +		*dev_desc = NULL;
>> +		memset(info, 0, sizeof(*info));
>> +		strcpy((char *)info->type, BOOT_PART_TYPE);
>> +		strcpy((char *)info->name, "UBI");
>> +#ifdef CONFIG_PARTITION_UUIDS
>> +		info->uuid[0] = 0;
>> +#endif
>> +		return 0;
>> +	}
>> +#endif
>
> We now have two paths through this function that can "Return" a NULL
> dev_desc. This makes it impossible for sandbox and ubifs to successfully
> co-exist in the same U-Boot binary, since the sandbox and ubifs fs probe
> functions won't be able to tell if "hostfs" or "ubifs" was passed to
> get_device_and_partition(). Perhaps there's no ubifs support in sandbox
> right now, so there's no issue?

Right, ubifs is for raw nand, sandbox is for access to a host filesystem
in a sandbox build. I basically never expect both CONFIG_CMD_UBIFS and
CONFIG_SANDBOX to be set at the same time. I'll add a pre-processor
check + #error to enforce this in the next version.

> If this is an issue that needs to be solved now, I think the best
> solution would be for the two special cases in
> get_device_and_partition() to "return" a real dev_desc rather than NULL.
> Since there's nothing meaningful to put there, how about returning a
> hard-coded value that can then be checked in the fs probe functions to
> make sure it matches:
>
> get_device_and_partition():
>
> 	if (hostfs) {
> 		...
> 		*dev_desc = &hostfs_fake_dev_desc;
> 		...
> 		return 0;
> 	}
> 	if (ubi) {
> 		...
> 		*dev_desc = &ubifs_fake_dev_desc;
> 		...
> 		return 0;
> 	}
>
> ubifs_set_blk_dev():
>
> 	if (rbdd != &ubifs_fake_dev_desc)
> 		return -1;
> 	...
> 	return 0;
>
> ... that said, I wonder if the ubifs special case in
> get_device_and_partition() shouldn't actually perform the ubifs_mount()
> call itself, based on the user-supplied parameters?

That is not possible as the supplied parameter for a generic fs call
is a device index + partition number, where as ubi volumes use
names (strings).

Regards,

Hans

  reply	other threads:[~2015-09-14 17:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-22 18:04 [U-Boot] [PATCH v2 0/4] distro_bootcmd: Add support for booting from ubifs Hans de Goede
2015-08-22 18:04 ` [U-Boot] [PATCH v2 1/4] ubifs: Modify ubifs u-boot wrapper function prototypes for generic fs use Hans de Goede
2015-08-25 11:00   ` Heiko Schocher
2015-08-25 11:32     ` Hans de Goede
2015-08-28 14:52       ` Tom Rini
2015-08-28 15:33         ` Heiko Schocher
2015-08-31 16:08         ` Hans de Goede
2015-09-01  3:46           ` Heiko Schocher
2015-09-01 10:57             ` Heiko Schocher
2015-08-22 18:04 ` [U-Boot] [PATCH v2 2/4] ubifs: Add functions " Hans de Goede
2015-08-25 11:02   ` Heiko Schocher
2015-09-01 19:57   ` Stephen Warren
2015-09-01 20:01     ` Michael Trimarchi
2015-09-14 17:29     ` Hans de Goede
2015-08-22 18:04 ` [U-Boot] [PATCH v2 3/4] ubifs: Add generic fs support Hans de Goede
2015-08-25 11:20   ` Heiko Schocher
2015-09-01 20:03   ` Stephen Warren
2015-09-14 17:35     ` Hans de Goede [this message]
2015-09-21 18:11       ` Stephen Warren
2015-08-22 18:04 ` [U-Boot] [PATCH v2 4/4] distro_bootcmd: Add support for booting from ubifs Hans de Goede
2015-09-01 20:13   ` Stephen Warren
2015-09-14 17:48     ` Hans de Goede
2015-08-24 16:57 ` [U-Boot] [PATCH v2 0/4] " Scott Wood
2015-08-25  7:15   ` Hans de Goede
2015-08-25  7:31     ` Heiko Schocher

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=55F70562.6000004@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.