From mboxrd@z Thu Jan 1 00:00:00 1970 From: Josh Wu Date: Fri, 19 Jul 2013 17:43:25 +0800 Subject: [U-Boot] [PATCH] fs: fat: fix bug when write size is less than a sector size In-Reply-To: <20130718082445.2BBA0380DF1@gemini.denx.de> References: <1374134870-10154-1-git-send-email-josh.wu@atmel.com> <20130718082445.2BBA0380DF1@gemini.denx.de> Message-ID: <51E90A3D.6000007@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 Dear Wolfgang Denk, Thank you for the quick reply. On 7/18/2013 4:24 PM, Wolfgang Denk wrote: > Dear Josh Wu, > > In message <1374134870-10154-1-git-send-email-josh.wu@atmel.com> you wrote: >> Tested in at91sam9x5ek and sama5d3x-ek in mmc fat. >> >> Signed-off-by: Josh Wu >> --- >> When I debugging this issue, I also find the thread talking about this: >> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/158698 >> But finally no patch is send for this bug. So I send this and cc all the >> people in that thread. Hope it can be merged in 2013.07. > Definitely not. This needs thurough testing before it can go > mainline. got it. > > >> - __u32 startsect; >> + __u32 startsect, nr_sectors; >> >> if (clustnum > 0) >> startsect = mydata->data_begin + >> @@ -571,7 +571,11 @@ set_cluster(fsdata *mydata, __u32 clustnum, __u8 *buffer, >> >> debug("clustnum: %d, startsect: %d\n", clustnum, startsect); >> >> - if (disk_write(startsect, size / mydata->sect_size, buffer) < 0) { >> + nr_sectors = size / mydata->sect_size; >> + if (nr_sectors == 0) >> + nr_sectors = 1; > 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. And after a search, the fix patch is already sent by Ruud Commandeur and merge in mainline: "mmc write bug fix" commit a586c0aa211fb79ecaa06aee3299bfdd81329876 Author: Ruud Commandeur Date: Wed May 22 13:19:43 2013 +0200 So please forget this patch. Since it is fixed in mmc driver layer. I will test it in my board. Sorry for the noise. > > > > Best regards, > > Wolfgang Denk > Best Regards, Josh Wu