| #
1d8c5dbb |
| 09-Sep-2017 |
Rob Clark <robdclark@gmail.com> |
UPSTREAM: fs/fat: Clean up open-coded sector <-> cluster conversions
Use the clust_to_sect() helper that was introduced earlier, and add an inverse sect_to_clust(), plus update the various spots tha
UPSTREAM: fs/fat: Clean up open-coded sector <-> cluster conversions
Use the clust_to_sect() helper that was introduced earlier, and add an inverse sect_to_clust(), plus update the various spots that open-coded this conversion previously.
Change-Id: Ifb6a59cefda1491639dcd6e8ea32fd2490af13b5 Signed-off-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit 265edc03d5a19550d92cbd6e10631d5a15bdd1d5)
show more ...
|
| #
271eb208 |
| 09-Sep-2017 |
Rob Clark <robdclark@gmail.com> |
UPSTREAM: fs/fat: fix case for FAT shortnames
Noticed when comparing our output to linux. There are some lcase bits which control whether filename and/or extension should be downcase'd.
Change-Id:
UPSTREAM: fs/fat: fix case for FAT shortnames
Noticed when comparing our output to linux. There are some lcase bits which control whether filename and/or extension should be downcase'd.
Change-Id: I55dc1f9ef025dc3174158d06ed78d1f8b54e1335 Signed-off-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Łukasz Majewski <lukma@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit 21a24c3bf35bac83d66ce4a48eb0c7dd8a7227cb)
show more ...
|
| #
76216211 |
| 13-Aug-2017 |
Reno Farnesi <nfarnesi4@gmail.com> |
fs: fat: fix fatwrite overflow calculation
The overflow calculation was incorrect. Adding the start block of the partition is not needed because the sectors are already relative to the beginning of
fs: fat: fix fatwrite overflow calculation
The overflow calculation was incorrect. Adding the start block of the partition is not needed because the sectors are already relative to the beginning of the partition. If you attempted to write a file smaller than cur_part_info.start blocks on a full partition the old calculation fails to catch the overflow. This would cause an infinite loop in the determine_fatent function.
Old, incorrect calculation:
ending sector of new file = start sector + file size (in sectors) last sector = partition start + total sectors on the partition
Adding the partition start block number is not needed because sectors are already relative to the start of the partition.
New calculation:
ending sector of new file = start sector + file size (in sectors) last sector = total sectors on the partition
Signed-off-by: Reno Farnesi <nfarnesi4@gmail.com>
show more ...
|
| #
b8948d2a |
| 16-Dec-2016 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
fs/fat: merge readwrite get_fatent_value() with readonly get_fatent()
get_fatent_value(...) flushes changed FAT entries to disk when fetching the next FAT blocks, in every other aspect it is identic
fs/fat: merge readwrite get_fatent_value() with readonly get_fatent()
get_fatent_value(...) flushes changed FAT entries to disk when fetching the next FAT blocks, in every other aspect it is identical to get_fatent(...).
Provide a stub implementation for flush_dirty_fat_buffer if CONFIG_FAT_WRITE is not set. Calling flush_dirty_fat_buffer during read only operation is fine as it checks if any buffers needs flushing.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
show more ...
|
| #
6c1a8080 |
| 16-Dec-2016 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
fs/fat: Avoid corruption of sectors following the FAT
The FAT is read/flushed in segments of 6 (FATBUFBLOCKS) disk sectors. The last segment may be less than 6 sectors, cap the length.
Signed-off-b
fs/fat: Avoid corruption of sectors following the FAT
The FAT is read/flushed in segments of 6 (FATBUFBLOCKS) disk sectors. The last segment may be less than 6 sectors, cap the length.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
show more ...
|
| #
49abbd9c |
| 15-Dec-2016 |
Philipp Skadorov <philipp.skadorov@savoirfairelinux.com> |
fat: fatwrite: fix the command for FAT12
The u-boot command fatwrite empties FAT clusters from the beginning till the end of the file. Specifically for FAT12 it fails to detect the end of the file a
fat: fatwrite: fix the command for FAT12
The u-boot command fatwrite empties FAT clusters from the beginning till the end of the file. Specifically for FAT12 it fails to detect the end of the file and goes beyond the file bounds thus corrupting the file system.
Additionally, FAT entry chaining-up into a file is not implemented for FAT12.
The users normally workaround this by re-formatting the partition as FAT16/FAT32, like here: https://github.com/FEDEVEL/openrex-uboot-v2015.10/issues/1
The patch fixes the bounds of a file and FAT12 entries chaining into a file, including EOF markup.
Signed-off-by: Philipp Skadorov <philipp.skadorov@savoirfairelinux.com>
show more ...
|
| #
7aa1a6b7 |
| 28-Jul-2016 |
Tien Fong Chee <tfchee@altera.com> |
fs/fat/fatwrite: Local variable as buffer to store dir_slot entries
fill_dir_slot use get_contents_vfatname_block as a temporary buffer for constructing a list of dir_slot entries. To save the memor
fs/fat/fatwrite: Local variable as buffer to store dir_slot entries
fill_dir_slot use get_contents_vfatname_block as a temporary buffer for constructing a list of dir_slot entries. To save the memory and providing correct type of memory for above usage, a local buffer with accurate size declaration is introduced.
The local array size 640 is used because for long file name entry, each entry use 32 bytes, one entry can store up to 13 characters. The maximum number of entry possible is 20. So, total size is 32*20=640bytes.
Signed-off-by: Genevieve Chan <ccheauya@altera.com> Signed-off-by: Tien Fong Chee <tfchee@altera.com>
show more ...
|
| #
ae1755be |
| 11-Sep-2016 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
fs/fat: Correct description of determine_fatent function
Current description does not match the function behaviour.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Acked-by: Lukasz Majew
fs/fat: Correct description of determine_fatent function
Current description does not match the function behaviour.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Acked-by: Lukasz Majewski <l.majewski@samsung.com>
show more ...
|
| #
3c0ed9c3 |
| 11-Sep-2016 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
fs/fat: Do not write unmodified fat entries to disk
The code caches 6 sectors of the FAT. On FAT traversal, the old contents needs to be flushed to disk, but only if any FAT entries had been modifie
fs/fat: Do not write unmodified fat entries to disk
The code caches 6 sectors of the FAT. On FAT traversal, the old contents needs to be flushed to disk, but only if any FAT entries had been modified. Explicitly flag the buffer on modification.
Currently, creating a new file traverses the whole FAT up to the first free cluster and rewrites the on-disk blocks.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
show more ...
|
| #
ed76f912 |
| 11-Sep-2016 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
fs/fat: Remove two statements without effect
fatlength is a local variable which is no more used after the assignment. s_name is not used in the function, save the strncpy.
Signed-off-by: Stefan Br
fs/fat: Remove two statements without effect
fatlength is a local variable which is no more used after the assignment. s_name is not used in the function, save the strncpy.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Acked-by: Lukasz Majewski <l.majewski@samsung.com> Acked-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
show more ...
|
| #
0af49b95 |
| 15-Mar-2016 |
Vagrant Cascadian <vagrant@debian.org> |
Fix spelling of "supported/unsupported".
Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Pet
Fix spelling of "supported/unsupported".
Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
show more ...
|
| #
88033d73 |
| 14-Mar-2016 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-dm
|
| #
2a981dc2 |
| 29-Feb-2016 |
Simon Glass <sjg@chromium.org> |
dm: block: Adjust device calls to go through helpers function
To ease conversion to driver model, add helper functions which deal with calling each block device method. With driver model we can reim
dm: block: Adjust device calls to go through helpers function
To ease conversion to driver model, add helper functions which deal with calling each block device method. With driver model we can reimplement these functions with the same arguments.
Use inline functions to avoid increasing code size on some boards.
Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Stephen Warren <swarren@nvidia.com>
show more ...
|
| #
7c4213f6 |
| 07-Dec-2015 |
Stephen Warren <swarren@nvidia.com> |
block: pass block dev not num to read/write/erase()
This will allow the implementation to make use of data in the block_dev structure beyond the base device number. This will be useful so that eMMC
block: pass block dev not num to read/write/erase()
This will allow the implementation to make use of data in the block_dev structure beyond the base device number. This will be useful so that eMMC block devices can encompass the HW partition ID rather than treating this out-of-band. Equally, the existence of the priv field is crying out for this patch to exist.
Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Tom Rini <trini@konsulko.com>
show more ...
|
| #
f74dc51b |
| 15-Oct-2015 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot
|
| #
13a39725 |
| 14-Oct-2015 |
Albert ARIBAUD <albert.u.boot@aribaud.net> |
Merge remote-tracking branch 'u-boot/master'
|
| #
1254b44a |
| 28-Sep-2015 |
Benoît Thébaudeau <benoit@wsystem.com> |
fs/fat/fat_write: Fix management of empty files
Overwriting an empty file not created by U-Boot did not work, and it could even corrupt the FAT. Moreover, creating empty files or emptying existing f
fs/fat/fat_write: Fix management of empty files
Overwriting an empty file not created by U-Boot did not work, and it could even corrupt the FAT. Moreover, creating empty files or emptying existing files allocated a cluster, which is not standard.
Fix this by always keeping empty files clusterless as specified by Microsoft (the start cluster must be set to 0 in the directory entry in that case), and by supporting overwriting such files.
Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
show more ...
|
| #
e876be4b |
| 28-Sep-2015 |
Benoît Thébaudeau <benoit@wsystem.com> |
fs/fat/fat_write: Factor out duplicate code
Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
|
| #
5e1a860e |
| 28-Sep-2015 |
Benoît Thébaudeau <benoit@wsystem.com> |
fs/fat/fat_write: Fix curclust/newclust mix-up
curclust was used instead of newclust in the debug() calls and in one CHECK_CLUST() call, which could skip a failure case.
Signed-off-by: Benoît Théba
fs/fat/fat_write: Fix curclust/newclust mix-up
curclust was used instead of newclust in the debug() calls and in one CHECK_CLUST() call, which could skip a failure case.
Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
show more ...
|
| #
1d7f2ece |
| 28-Sep-2015 |
Benoît Thébaudeau <benoit@wsystem.com> |
fs/fat/fat_write: Merge calls to set_cluster()
set_contents() had uselessly split calls to set_cluster(). Merge these calls, which removes some cases of set_cluster() being called with a size of zer
fs/fat/fat_write: Merge calls to set_cluster()
set_contents() had uselessly split calls to set_cluster(). Merge these calls, which removes some cases of set_cluster() being called with a size of zero.
Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
show more ...
|
| #
8133f43d |
| 28-Sep-2015 |
Benoît Thébaudeau <benoit@wsystem.com> |
fs/fat/fat_write: Fix buffer alignments
set_cluster() was using a temporary buffer without enforcing its alignment for DMA and cache. Moreover, it did not check the alignment of the passed buffer, w
fs/fat/fat_write: Fix buffer alignments
set_cluster() was using a temporary buffer without enforcing its alignment for DMA and cache. Moreover, it did not check the alignment of the passed buffer, which can come directly from applicative code or from the user.
This could cause random data corruption, which has been observed on i.MX25 writing to an SD card.
Fix this by only passing ARCH_DMA_MINALIGN-aligned buffers to disk_write(), which requires the introduction of a buffer bouncing mechanism for the misaligned buffers passed to set_cluster().
By the way, improve the handling of the corresponding return values from disk_write(): - print them with debug() in case of error, - consider that there is an error is disk_write() returns a smaller block count than the requested one, not only if its return value is negative.
After this change, set_cluster() and get_cluster() are almost symmetrical.
Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
show more ...
|
| #
0a04ed86 |
| 03-Sep-2015 |
Łukasz Majewski <l.majewski@samsung.com> |
FIX: fat: Provide correct return code from disk_{read|write} to upper layers
It is very common that FAT code is using following pattern: if (disk_{read|write}() < 0) return -1;
Up till now
FIX: fat: Provide correct return code from disk_{read|write} to upper layers
It is very common that FAT code is using following pattern: if (disk_{read|write}() < 0) return -1;
Up till now the above code was dead, since disk_{read|write) could only return value >= 0. As a result some errors from medium layer (i.e. eMMC/SD) were not caught.
The above behavior was caused by block_{read|write|erase} declared at struct block_dev_desc (@part.h). It returns unsigned long, where 0 indicates error and > 0 indicates that medium operation was correct.
This patch as error regards 0 returned from block_{read|write|erase} when nr_blocks is grater than zero. Read/Write operation with nr_blocks=0 should return 0 and hence is not considered as an error.
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Test HW: Odroid XU3 - Exynos 5433
show more ...
|
| #
9e374e7b |
| 24-Nov-2014 |
Tom Rini <trini@ti.com> |
fs/ext4/ext4fs.c, fs/fs.c fs/fat/fat_write.c: Adjust 64bit math methods
The changes to introduce loff_t into filesize means that we need to do 64bit math on 32bit platforms. Make sure we use the ri
fs/ext4/ext4fs.c, fs/fs.c fs/fat/fat_write.c: Adjust 64bit math methods
The changes to introduce loff_t into filesize means that we need to do 64bit math on 32bit platforms. Make sure we use the right wrappers for these operations.
Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Suriyan Ramasami <suriyan.r@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@ti.com> Tested-by: Pierre Aubert <p.aubert@staubli.com>
show more ...
|
| #
1ad0b98a |
| 17-Nov-2014 |
Suriyan Ramasami <suriyan.r@gmail.com> |
fat: Prepare API change for files greater than 2GB
Change the internal FAT functions to use loff_t for offsets.
Signed-off-by: Suriyan Ramasami <suriyan.r@gmail.com> Acked-by: Simon Glass <sjg@chro
fat: Prepare API change for files greater than 2GB
Change the internal FAT functions to use loff_t for offsets.
Signed-off-by: Suriyan Ramasami <suriyan.r@gmail.com> Acked-by: Simon Glass <sjg@chromium.org> [trini: Fix fs/fat/fat.c for min3 updates] Signed-off-by: Tom Rini <trini@ti.com>
show more ...
|
| #
dab5e346 |
| 16-Jul-2014 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot
Signed-off-by: Stefano Babic <sbabic@denx.de>
Conflicts: boards.cfg
|