From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V3 4/4] FAT: implement fat_set_blk_dev(), convert cmd_fat.c
Date: Wed, 10 Oct 2012 20:44:38 +0200 (CEST) [thread overview]
Message-ID: <1473477470.6559151.1349894678909.JavaMail.root@advansee.com> (raw)
In-Reply-To: <1349892842-11994-4-git-send-email-swarren@wwwdotorg.org>
On Wednesday, October 10, 2012 8:14:02 PM, Stephen Warren wrote:
> This makes the FAT filesystem API more consistent with other
> block-based
> filesystems. If in the future standard multi-filesystem commands such
> as
> "ls" or "load" are implemented, having FAT work the same way as other
> filesystems will be necessary.
>
> Convert cmd_fat.c to the new API, so the code looks more like other
> files
> implementing the same commands for other filesystems.
>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v3: Rebase on new fat.c cleanup patch.
> v2: Fix inverted test of get_partition_info() result in
> fat_register_device().
> ---
> common/cmd_fat.c | 8 +++---
> fs/fat/fat.c | 69
> +++++++++++++++++++++++++-----------------------------
> include/fat.h | 1 +
> 3 files changed, 37 insertions(+), 41 deletions(-)
>
> diff --git a/common/cmd_fat.c b/common/cmd_fat.c
> index 5a5698b..c38302d 100644
> --- a/common/cmd_fat.c
> +++ b/common/cmd_fat.c
> @@ -55,7 +55,7 @@ int do_fat_fsload (cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[])
> return 1;
>
> dev = dev_desc->dev;
> - if (fat_register_device(dev_desc,part)!=0) {
> + if (fat_set_blk_dev(dev_desc, &info) != 0) {
> printf("\n** Unable to use %s %d:%d for fatload **\n",
> argv[1], dev, part);
> return 1;
> @@ -111,7 +111,7 @@ int do_fat_ls (cmd_tbl_t *cmdtp, int flag, int
> argc, char * const argv[])
> return 1;
>
> dev = dev_desc->dev;
> - if (fat_register_device(dev_desc,part)!=0) {
> + if (fat_set_blk_dev(dev_desc, &info) != 0) {
> printf("\n** Unable to use %s %d:%d for fatls **\n",
> argv[1], dev, part);
> return 1;
> @@ -149,7 +149,7 @@ int do_fat_fsinfo (cmd_tbl_t *cmdtp, int flag,
> int argc, char * const argv[])
> return 1;
>
> dev = dev_desc->dev;
> - if (fat_register_device(dev_desc,part)!=0) {
> + if (fat_set_blk_dev(dev_desc, &info) != 0) {
> printf("\n** Unable to use %s %d:%d for fatinfo **\n",
> argv[1], dev, part);
> return 1;
> @@ -185,7 +185,7 @@ static int do_fat_fswrite(cmd_tbl_t *cmdtp, int
> flag,
>
> dev = dev_desc->dev;
>
> - if (fat_register_device(dev_desc, part) != 0) {
> + if (fat_set_blk_dev(dev_desc, &info) != 0) {
> printf("\n** Unable to use %s %d:%d for fatwrite **\n",
> argv[1], dev, part);
> return 1;
> diff --git a/fs/fat/fat.c b/fs/fat/fat.c
> index 2863c4b..a6fc07c 100644
> --- a/fs/fat/fat.c
> +++ b/fs/fat/fat.c
> @@ -61,46 +61,12 @@ static int disk_read(__u32 block, __u32
> nr_blocks, void *buf)
> cur_part_info.start + block, nr_blocks, buf);
> }
>
> -int fat_register_device(block_dev_desc_t * dev_desc, int part_no)
> +int fat_set_blk_dev(block_dev_desc_t *dev_desc, disk_partition_t
> *info)
> {
> ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz);
>
> - /* First close any currently found FAT filesystem */
> - cur_dev = NULL;
> -
> -#if (defined(CONFIG_CMD_IDE) || \
> - defined(CONFIG_CMD_SATA) || \
> - defined(CONFIG_CMD_SCSI) || \
> - defined(CONFIG_CMD_USB) || \
> - defined(CONFIG_MMC) || \
> - defined(CONFIG_SYSTEMACE) )
> -
> - /* Read the partition table, if present */
> - if (!get_partition_info(dev_desc, part_no, &cur_part_info)) {
> - cur_dev = dev_desc;
> - }
> -#endif
> -
> - /* Otherwise it might be a superfloppy (whole-disk FAT filesystem)
> */
> - if (!cur_dev) {
> - if (part_no != 0) {
> - printf("** Partition %d not valid on device %d **\n",
> - part_no, dev_desc->dev);
> - return -1;
> - }
> -
> - cur_dev = dev_desc;
> - cur_part_info.part = 0;
> - cur_part_info.start = 0;
> - cur_part_info.size = dev_desc->lba;
> - cur_part_info.blksz = dev_desc->blksz;
> - cur_part_info.name[0] = 0;
> - cur_part_info.type[0] = 0;
> - cur_part_info.bootable = 0;
> -#ifdef CONFIG_PARTITION_UUIDS
> - cur_part_info.uuid[0] = 0;
> -#endif
> - }
> + cur_dev = dev_desc;
> + cur_part_info = *info;
>
> /* Make sure it has a valid FAT header */
> if (disk_read(0, 1, buffer) != 1) {
> @@ -124,6 +90,35 @@ int fat_register_device(block_dev_desc_t *
> dev_desc, int part_no)
> return -1;
> }
>
> +int fat_register_device(block_dev_desc_t *dev_desc, int part_no)
> +{
> + disk_partition_t info;
> +
> + /* First close any currently found FAT filesystem */
> + cur_dev = NULL;
> +
> + /* Read the partition table, if present */
> + if (get_partition_info(dev_desc, part_no, &info)) {
> + if (part_no != 0) {
> + printf("** Partition %d not valid on device %d **\n",
> + part_no, dev_desc->dev);
> + return -1;
> + }
> +
> + info.part = 0;
> + info.start = 0;
> + info.size = dev_desc->lba;
> + info.blksz = dev_desc->blksz;
> + info.name[0] = 0;
> + info.type[0] = 0;
> + info.bootable = 0;
> +#ifdef CONFIG_PARTITION_UUIDS
> + info.uuid[0] = 0;
> +#endif
> + }
> +
> + return fat_set_blk_dev(dev_desc, &info);
> +}
>
> /*
> * Get the first occurence of a directory delimiter ('/' or '\') in
> a string.
> diff --git a/include/fat.h b/include/fat.h
> index cc85b06..706cd7a 100644
> --- a/include/fat.h
> +++ b/include/fat.h
> @@ -212,6 +212,7 @@ long file_fat_read_at(const char *filename,
> unsigned long pos, void *buffer,
> unsigned long maxsize);
> long file_fat_read(const char *filename, void *buffer, unsigned long
> maxsize);
> const char *file_getfsname(int idx);
> +int fat_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info);
> int fat_register_device(block_dev_desc_t *dev_desc, int part_no);
>
> int file_fat_write(const char *filename, void *buffer, unsigned long
> maxsize);
For the V3 of this series:
Reviewed-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
Best regards,
Beno?t
prev parent reply other threads:[~2012-10-10 18:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-10 18:13 [U-Boot] [PATCH V3 1/4] part: add partition number to disk_partition_t Stephen Warren
2012-10-10 18:14 ` [U-Boot] [PATCH V3 2/4] FAT: make use of disk_partition_t.part Stephen Warren
2012-10-13 19:38 ` Pavel Herrmann
2012-10-15 16:40 ` Stephen Warren
2012-10-15 18:07 ` Pavel Herrmann
2012-10-17 16:23 ` Tom Rini
2012-10-10 18:14 ` [U-Boot] [PATCH V3 3/4] FAT: initialize all fields in cur_part_info, simplify init Stephen Warren
2012-10-10 18:14 ` [U-Boot] [PATCH V3 4/4] FAT: implement fat_set_blk_dev(), convert cmd_fat.c Stephen Warren
2012-10-10 18:44 ` Benoît Thébaudeau [this message]
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=1473477470.6559151.1349894678909.JavaMail.root@advansee.com \
--to=benoit.thebaudeau@advansee.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.