Nov 22, 2024

Fixed a complie error when FF_FS_LOCK != 0. (appeared at R0.15)

Fixed a potential issue when work FatFs concurrency with FF_FS_REENTRANT, FF_VOLUMES >= 2 and FF_FS_LOCK > 0.

Made f_setlabel accept a volume label with Unix style volume ID when FF_STR_VOLUME_ID == 2.

Made FatFs update PercInUse field in exFAT VBR. (A preceding f_getfree is needed for the accuracy)
This commit is contained in:
Christopher Williams
2024-11-25 16:44:32 -07:00
parent b11f089319
commit 44b3c38b23
59 changed files with 940 additions and 939 deletions
+7 -8
View File
@@ -3,8 +3,6 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="up" title="FatFs" href="../00index_e.html">
<link rel="alternate" hreflang="ja" title="Japanese" href="../ja/lseek.html">
<link rel="stylesheet" href="../css_e.css" type="text/css" media="screen" title="ELM Default">
<title>FatFs - f_expand</title>
</head>
@@ -28,7 +26,7 @@ FRESULT f_expand (
<h4>Parameters</h4>
<dl class="par">
<dt>fp</dt>
<dd>Pointer to the open file object.</dd>
<dd>Pointer to the open file object. If a null pointer is given, the function fails with <tt>FR_INVALID_OBJECT</tt>.</dd>
<dt>fsz</dt>
<dd>Number of bytes in size to prepare or allocate for the file. The data type <tt>FSIZE_t</tt> is an alias of either <tt>DWORD</tt>(32-bit) or <tt>QWORD</tt>(64-bit) depends on the configuration option <tt>FF_FS_EXFAT</tt>.</dd>
<dt>opt</dt>
@@ -61,7 +59,7 @@ FRESULT f_expand (
</ul>
<p>When <tt class="arg">opt</tt> is 0, the function finds a contiguous data area and set it as suggested point for next allocation. The subsequent cluster allocation begins at top of the contiguous area found by this function. Thus the file allocation is guaranteed be contiguous and without allocation delay until the file size reaches this size unless any other changes to the volume is performed.</p>
<p>The contiguous file has an advantage for time-critical read/write operations. It eliminates some overheads in the filesystem and the storage device caused by random access for fragmented file.</p>
<p>Also the contiguous file can be easily accessed directly via low-level disk functions. However, this is not recommended in consideration of portability and future compatibility. If the file has not been confirmed be contiguous, use <a href="../res/app5.c">this function</a> to examine if the file is contiguous or not.</p>
<p>The contiguou files can easily be accessed via low-level disk functions. However, this is not recommended in consideration of portability and future compatibility. If the file has not been confirmed be contiguous, use <a href="../res/app5.c">this function</a> to examine if the file is contiguous or not.</p>
</div>
<div class="para comp">
@@ -76,16 +74,16 @@ FRESULT f_expand (
<span class="c">/* Creating a contiguous file */</span>
<span class="c">/* Create a new file */</span>
res = f_open(fp = malloc(sizeof (FIL)), "file.dat", FA_WRITE|FA_CREATE_ALWAYS);
res = <em>f_open</em>(fp = malloc(sizeof (FIL)), "file.dat", FA_WRITE|FA_CREATE_ALWAYS);
if (res) { <span class="c">/* Check if the file has been opened */</span>
free(fp);
die("Failed to open the file.");
}
<span class="c">/* Alloacte a 100 MiB of contiguous area to the file */</span>
<span class="c">/* Allocate a 100 MiB of contiguous area to the file */</span>
res = <em>f_expand</em>(fp, 104857600, 1);
if (res) { <span class="c">/* Check if the file has been expanded */</span>
f_close(fp);
<em>f_close</em>(fp);
free(fp);
die("Failed to allocate contiguous area.");
}
@@ -101,7 +99,7 @@ FRESULT f_expand (
lba = fp-&gt;obj.fs-&gt;database + fp-&gt;obj.fs-&gt;csize * (fp-&gt;obj.sclust - 2);
<span class="c">/* Write 2048 sectors from top of the file at a time */</span>
res = disk_write(drv, buffer, lba, 2048);
res = <em>disk_write</em>(drv, data, lba, 2048);
</pre>
</div>
@@ -112,6 +110,7 @@ FRESULT f_expand (
<p><tt><a href="open.html">f_open</a>, <a href="lseek.html">f_lseek</a>, <a href="sfile.html">FIL</a></tt></p>
</div>
<p class="foot"><a href="../00index_e.html">Return</a></p>
</body>
</html>