<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MFS Invalid Sector Errors in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774291#M17849</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H3 id="toc-hId-1597799413"&gt;&lt;STRONG&gt;EDIT 2018-04-12:&lt;/STRONG&gt; nio_error of MFS_FILE_NOT_FOUND was caused by a different call to _nio_open outside of the loop.&amp;nbsp; I did not correctly reset nio_error to 0 before I started the loop.&amp;nbsp; The issue I am describing&amp;nbsp;below does not exist.&lt;/H3&gt;&lt;P&gt;Update: I am still trying to find the root cause of this issue.&amp;nbsp; Interestingly, I am writing one character repeatedly to the file, 'A', which happens to be a value of 0x41.&amp;nbsp; This is the value seen for the cluster number above.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As this error occurred again today, I noticed the error&amp;nbsp;value was&amp;nbsp;0x3002 (MFS_FILE_NOT_FOUND) before the call to write.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How did this happen? I have a check to make sure the file descriptor is not &amp;lt; 0:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;chk_error &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_close&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;chk_error &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

index_fd &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_open&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;myfilenames&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; O_RDWR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; O_APPEND&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Check that we can access the file descriptor&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I added logic to not only check if the file descriptor is OK, but also to check the nio_error value:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;index_fd &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_open&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;myfilenames&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; O_RDWR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; O_APPEND&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Check that we can access the file descriptor&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;||&lt;/SPAN&gt; nio_error &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&amp;nbsp; _task_block();&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;And it turns out that the _nio_open function can return a valid&amp;nbsp;file descriptor even when an error has occurred in the _nio_open function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has anyone else seen a case like this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Apr 2018 17:07:57 GMT</pubDate>
    <dc:creator>jschepler</dc:creator>
    <dc:date>2018-04-10T17:07:57Z</dc:date>
    <item>
      <title>MFS Invalid Sector Errors</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774290#M17848</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using KSDK 1.3.0 with MQX and MFS.&amp;nbsp; We are using a 16 GB SD Card.&lt;/P&gt;&lt;P&gt;I am evaluating the reliability of the MFS file writes by using 1 task that writes to files.&amp;nbsp; I was running into issues with timeouts originally (see &lt;A _jive_internal="true" href="https://community.nxp.com/thread/473184"&gt;here&lt;/A&gt;).&amp;nbsp; I have a tick time of 1 ms for my system so I set the timeouts to the following until I hear back from what they should be set to in my other post:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;#define ESDHC_CMD_TICK_TIMEOUT 40 // 40ms&amp;nbsp;&lt;BR /&gt;#define ESDHC_CMD12_TICK_TIMEOUT 1000 // 1 Sec&lt;BR /&gt;#define ESDHC_TRANSFER_TIMEOUT_MS 750 // 750ms&lt;/BLOCKQUOTE&gt;&lt;P&gt;I am still using&amp;nbsp;a similiar&amp;nbsp;test procedure as before:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;1. Create a new text file.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;2. Write 1 KB of data into the file.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;3. After 1024 Writes (1 MB), close the file.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;4. Open the same file, seek to the end.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;5. Perform steps 2 - 4 until I write&amp;nbsp;1,000 MB to the file.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;6. After 1,000 MB has been written, close the current file and create a new one. Repeat steps 2-4 until 8 files have been created. (We are using a 16 GB card)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;The farthest I have gotten is 5 files written before a failure during the writing of the 6th.&amp;nbsp; The errors I am receiving are the following:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;MFS_SECTOR_NOT_FOUND&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;MFS_INVALID_CLUSTER_NUMBER&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;These appear to happen at random.&amp;nbsp; Again, all I am doing in my program is writing to files.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;The latest error happened in the function "MFS_get_cluster_from_fat".&amp;nbsp; I set a breakpoint here so I am able to see the context of variables:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_8.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/18147i34925620FCA3354A/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_8.png" alt="pastedImage_8.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;drive_ptr information and fat_entry:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_9.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/19040i4B8252909C9B5AA2/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_9.png" alt="pastedImage_9.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;So, fat_entry is a value of 0x0141_4141, but the LAST_CLUSTER is 0x001D_1C5B, so we are trying to write into a cluster that is greater than the max, which is why it fails.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;However, I am not sure how fat_entry gets its value.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;How did it become greater than the LAST_CLUSTER?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;I noticed there are a some places where "location" is a byte value, and then other places where "location" is converted into a sector number.&amp;nbsp;&amp;nbsp;Could it be related to some 32-bit overflow issue?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Although I don't plan on creating such large files in my application, I am still concerned with the errors that are happening because I do not know the root cause.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Apr 2018 15:12:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774290#M17848</guid>
      <dc:creator>jschepler</dc:creator>
      <dc:date>2018-04-06T15:12:24Z</dc:date>
    </item>
    <item>
      <title>Re: MFS Invalid Sector Errors</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774291#M17849</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H3 id="toc-hId-1597799413"&gt;&lt;STRONG&gt;EDIT 2018-04-12:&lt;/STRONG&gt; nio_error of MFS_FILE_NOT_FOUND was caused by a different call to _nio_open outside of the loop.&amp;nbsp; I did not correctly reset nio_error to 0 before I started the loop.&amp;nbsp; The issue I am describing&amp;nbsp;below does not exist.&lt;/H3&gt;&lt;P&gt;Update: I am still trying to find the root cause of this issue.&amp;nbsp; Interestingly, I am writing one character repeatedly to the file, 'A', which happens to be a value of 0x41.&amp;nbsp; This is the value seen for the cluster number above.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As this error occurred again today, I noticed the error&amp;nbsp;value was&amp;nbsp;0x3002 (MFS_FILE_NOT_FOUND) before the call to write.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How did this happen? I have a check to make sure the file descriptor is not &amp;lt; 0:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;chk_error &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_close&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;chk_error &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

index_fd &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_open&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;myfilenames&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; O_RDWR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; O_APPEND&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Check that we can access the file descriptor&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I added logic to not only check if the file descriptor is OK, but also to check the nio_error value:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;index_fd &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_open&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;myfilenames&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; O_RDWR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; O_APPEND&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// Check that we can access the file descriptor&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;index_fd &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;||&lt;/SPAN&gt; nio_error &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="token function"&gt;testfunction&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&amp;nbsp; _task_block();&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;And it turns out that the _nio_open function can return a valid&amp;nbsp;file descriptor even when an error has occurred in the _nio_open function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has anyone else seen a case like this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Apr 2018 17:07:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774291#M17849</guid>
      <dc:creator>jschepler</dc:creator>
      <dc:date>2018-04-10T17:07:57Z</dc:date>
    </item>
    <item>
      <title>Re: MFS Invalid Sector Errors</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774292#M17850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="230295" data-username="jschepler" href="https://community.nxp.com/people/jschepler"&gt;jschepler&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would suggest you try this test with MQX 4.2 first.&amp;nbsp; Because in KSDK 1.3, MQX &amp;amp; MFS &amp;amp; SDHC modues are ported from MQX 4.2.&amp;nbsp;&amp;nbsp; The only difference is there is a NIO layer in KSDK1.3,&amp;nbsp; classic MQX 4.2 not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I guess this issue maybe related with 32-bit overflow issue somewhere.&amp;nbsp; for cluster?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Apr 2018 03:11:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774292#M17850</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2018-04-11T03:11:54Z</dc:date>
    </item>
    <item>
      <title>Re: MFS Invalid Sector Errors</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774293#M17851</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The root cause of this issue is an overflow of a unsigned 32-bit number when trying to access the sector.&amp;nbsp; It is confusing to follow through the functions because sometimes the LOCATION is referred to by a SECTOR, and sometimes it is referred to by BYTE.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my SD Card, a sector is 512 bytes. In the function mfs_rw.c a sector location is converted into a byte location.&amp;nbsp; This is accomplished by multiplying the byte location by the number of bytes in a sector.&amp;nbsp; This is all done with 32-bit variables.&amp;nbsp; This variable will overflow when the sector is 0x0080_0000.&amp;nbsp; When multiplying by 512 the byte location becomes 0x0001_0000_0000.&amp;nbsp; Since it is a 32-bit value it will be saved as 0x0000_0000 and writing to this location will corrupt the file system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the way, a sector location of 0x0080_0000 with 512 bytes per sector corresponds to 4 GB.&amp;nbsp; When I tested with a 4 GB SD card I never saw the issue.&amp;nbsp; We will be using 16 GB going forward.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following changes pass the test I created as described in the original post:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3 id="toc-hId-1597799415"&gt;mfs_format.c&lt;/H3&gt;&lt;P&gt;&lt;STRONG&gt;Original&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/* sector size is obtained during open operation and stored in the drive structure */&lt;/SPAN&gt;
 sector_size &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;SECTOR_SIZE&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;/* get the number of sectors */&lt;/SPAN&gt;
 error_code &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ioctl&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; IO_IOCTL_GET_NUM_SECTORS&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;num_sectors&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#if !MQX_USE_IO_OLD&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;error_code &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; errno &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; NIO_ENOTSUP&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 num_sectors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_END&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt; sector_size&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 error_code &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; MFS_NO_ERROR&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Changes&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;error_code &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; errno &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; NIO_ENOTSUP&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;//num_sectors = lseek(drive_ptr-&amp;gt;DEV_FILE_PTR, 0, SEEK_END) / sector_size;&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;/* lseek returns 32-bit value, so if &amp;gt; 4 GB we would have an issue */&lt;/SPAN&gt;

 num_sectors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_END&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt; sector_size&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 error_code &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; MFS_NO_ERROR&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Explanation&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;lseek returns a 32-bit value (off_t) for my compiler.&amp;nbsp; lseek is going to return the number of bytes, which when greater than 4 GB will overflow. (This might actually be 2 GB if its signed...)&amp;nbsp; _nio_lseek returns a 64-bit number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3 id="toc-hId--954357546"&gt;mfs_rw.c&lt;/H3&gt;&lt;P&gt;Changes are made to the functions MFS_Write_device_sectors and MFS_Read_device_sectors&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;uint32_t attempts&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
int32_t num&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; expect_num&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; seek_loc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;char&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;data_ptr&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
_mfs_error error&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="token function"&gt;MFS_LOG&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"MFS_Write_device_sectors %d %d\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; sector_number&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; sector_count&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;sector_number &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;MEGA_SECTORS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; MFS_SECTOR_NOT_FOUND&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;BLOCK_MODE&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 shifter &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 seek_loc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_number&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 expect_num &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_count&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 shifter &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;SECTOR_POWER&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 seek_loc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_number &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 expect_num &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_count &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

&lt;SPAN class="property macro token"&gt;#if MQX_USE_IO_OLD&lt;/SPAN&gt;
 &lt;SPAN class="token function"&gt;fseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; seek_loc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; IO_SEEK_SET&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#else&lt;/SPAN&gt;
 &lt;SPAN class="token function"&gt;lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; seek_loc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_SET&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//TODO: check errno lseek&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#endif‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Changes&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;uint32_t attempts&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
int64_t seek_loc&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Added for LSEEK issue */&lt;/SPAN&gt;
int32_t expect_num&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Can be 32-bit because its just a count of sectors */&lt;/SPAN&gt;
int32_t num&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; nio_error&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Added for LSEEK issue */&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;char&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;data_ptr&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 _mfs_error error&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;// MFS_LOG(printf("MFS_Write_device_sectors %d %d\n", sector_number, sector_count));&lt;/SPAN&gt;
 
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;sector_number &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;MEGA_SECTORS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; MFS_SECTOR_NOT_FOUND&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;BLOCK_MODE&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 shifter &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 seek_loc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_number&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 expect_num &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_count&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 shifter &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;SECTOR_POWER&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 seek_loc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;int64_t&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;sector_number &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Need to typecast to avoid overflow */&lt;/SPAN&gt;
 expect_num &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sector_count &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; shifter&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

&lt;SPAN class="property macro token"&gt;#if MQX_USE_IO_OLD&lt;/SPAN&gt;
 &lt;SPAN class="token function"&gt;fseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; seek_loc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; IO_SEEK_SET&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#else&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; lseek(drive_ptr-&amp;gt;DEV_FILE_PTR, seek_loc, SEEK_SET);&lt;/SPAN&gt;
 &lt;SPAN class="token function"&gt;_nio_lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;drive_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; seek_loc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_SET&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;nio_error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* off_t issue */&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//TODO: check errno lseek&lt;/SPAN&gt;
&lt;SPAN class="property macro token"&gt;#endif‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Explanation&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Commented out MFS_LOG since it is not needed.&amp;nbsp; Changed seek_loc to int64_t since it will be converted into a BYTE location from a SECTOR.&amp;nbsp; Type-cast sector_number with an (int64_t) since it will be multiplied by 512 and will overflow if it stays at 32-bit.&amp;nbsp; Changed call from lseek to _nio_lseek due to off_t issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3 id="toc-hId-788452789"&gt;part_mgr.c&lt;/H3&gt;&lt;P&gt;These changes need to be applied to the _io_part_mgr_write and _io_part_mgr_read functions.&amp;nbsp; (Note: Make sure to call read when editing the _mgr_read)&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;uint64_t location&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
uint64_t part_start&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
uint64_t part_end&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
int32_t result&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;/* Perform seek and data transfer */&lt;/SPAN&gt;
result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pm_struct_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; location&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_SET&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;result &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;write&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pm_struct_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; data_ptr&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; num&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Changes&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;int64_t location&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* _nio_lseek returns a signed 64-bit number. */&lt;/SPAN&gt;
int64_t part_start&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
int64_t part_end&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
int32_t result&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;/* Perform seek and data transfer */&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// result = lseek(pm_struct_ptr-&amp;gt;DEV_FILE_PTR, location, SEEK_SET, error);&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;/*&amp;nbsp; Return could be a byte address so put into location which is an int64_t else
 *&amp;nbsp; we will have an overflow issue.
 */&lt;/SPAN&gt;

location &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_nio_lseek&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pm_struct_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; location&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; SEEK_SET&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;location &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;write&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pm_struct_ptr&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DEV_FILE_PTR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; data_ptr&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; num&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 
 &lt;SPAN class="comment token"&gt;// JS: Return -1 if the seek fails&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;error&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;error &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; MFS_ERROR_SEEK&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&amp;nbsp; result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Explanation&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;_nio_lseek returns a signed 64-bit number because a value less than 0 is an error.&amp;nbsp; Changed location, part_start, part_start, and part_end to signed as well.&amp;nbsp; My application will only address up to 16 GB, so the signed / unsigned will not impact it.&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3 id="toc-hId--1763704172"&gt;Additional notes:&lt;/H3&gt;&lt;P&gt;off_t is described by my compiler (GCC) as 32-bits.&amp;nbsp; It was mentioned in another post that the comp.h file for an IAR project explicitly defines off_t as 64-bits signed.&amp;nbsp; I tried redefining off_t in comp.h for the GCC project, but I ran into many issues and didn't feel like trying to solve them, fearing I could unintentionally break something else.&amp;nbsp; My solution was to remove all calls to lseek and replace them with _nio_lseek.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;comp.h can be found at&amp;nbsp;\KSDK_1.3.0\rtos\mqx\mqx\source\psp\cortex_m\compiler\iar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Apr 2018 21:00:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MFS-Invalid-Sector-Errors/m-p/774293#M17851</guid>
      <dc:creator>jschepler</dc:creator>
      <dc:date>2018-04-12T21:00:57Z</dc:date>
    </item>
  </channel>
</rss>

