From mboxrd@z Thu Jan 1 00:00:00 1970 From: Josh Wu Date: Tue, 23 Jul 2013 18:16:18 +0800 Subject: [U-Boot] [PATCH] fs: fat: fix bug when write size is less than a sector size In-Reply-To: <20130719112034.C5F09380ADF@gemini.denx.de> References: <1374134870-10154-1-git-send-email-josh.wu@atmel.com> <20130718082445.2BBA0380DF1@gemini.denx.de> <51E90A3D.6000007@atmel.com> <20130719112034.C5F09380ADF@gemini.denx.de> Message-ID: <51EE57F2.9040408@atmel.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, Dear Wolfgang Denk On 7/19/2013 7:20 PM, Wolfgang Denk wrote: > Dear Josh Wu, > > In message <51E90A3D.6000007@atmel.com> you wrote: >>> Why would this be needed? The case of a partial write is covered >>> further down below in the code, in the "if (size % mydata->sect_size)" >>> part... >> The call of disk_write() will pass the sector size as 0. That will cause >> the mmc driver stalled. > I think instead of "sector size" you mean the number of sectors. The > sector size is fixed. yes, I mean the number of sectors. > > Big question: why should we call disk_write() at all when the count is > zero? Maybe a simple > > if ((size / mydata->sect_size) > 0) { > if (disk_write(startsect, size / mydata->sect_size, buffer) < 0) { > ... > } > } > > would fix this issue? I agree with above changes. It make the logical clearer: Step 1. write buffer in sectors. If buffer size is less than one sector we don't need to call disk_write() with zero sector. Step 2. write remain buffer in one sector. So I think I will send a v2 patch according to your suggestion. Thanks. > > > Best regards, > > Wolfgang Denk > Best Regards, Josh Wu