From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GKXLb-0000Kf-Lb for qemu-devel@nongnu.org; Tue, 05 Sep 2006 05:35:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GKXLZ-0000Jh-3f for qemu-devel@nongnu.org; Tue, 05 Sep 2006 05:35:59 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GKXLY-0000Jb-My for qemu-devel@nongnu.org; Tue, 05 Sep 2006 05:35:56 -0400 Received: from [211.5.2.73] (helo=nm01omta015.dion.ne.jp) by monty-python.gnu.org with smtp (Exim 4.52) id 1GKXWG-00075B-RB for qemu-devel@nongnu.org; Tue, 05 Sep 2006 05:47:01 -0400 Message-ID: <001c01c6d0ce$b494aa40$0464a8c0@athlon> From: "Kazu" References: <002a01c6d07d$e1c98e50$7d00a8c0@DELL3G> Subject: Re: [Qemu-devel] block-vvfat RW patch Date: Tue, 5 Sep 2006 18:36:02 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi, I confirmed it works. Thank you. Regards, Kazu Sent: Tuesday, September 05, 2006 8:57 AM Roger Lathrop wrote: > Attached patch fixes 3 issues I found while trying to write files from guest > to a vfat drive using this configuration: > Host: Windows XP (NTFS) > Guest: DOS 5 (yeah, really!) > Compiler: gcc version 3.4.2 (mingw-special) > Qemu Version: 0.8.2 > Command line: qemu ....-hdb fat:rw:c:\dev\qemu\work... > > Problem: Qemu would fault when copying files from guest to d:\ > > Changes: > > 1) Fixed assert macro for mingw. Original causes spurious faults when > there's a dangling else after the assert. > 2) Added O_BINARY to open call in commit_one_file(). Without it, binary > files get LF-->CR/LF translations on Windows. > 3) Changed sector2cluster to return a signed int, and added type casts to > force the division to be signed. > > First 2 changes are straight forward and should be safe. 3'rd solved my > problem, but should be looked at by someone who understands vvfat better > than me. I've only tested on the above configuration. > The problem I saw was DOS writing to sectors less than s->faked_sectors. The > unsigned divide returned a large positive number, which would fault in this > bit of code in vvfat_write: > if (i >= 0) > s->used_clusters[i] |= USED_ALLOCATED; > > This fix seems reasonable, since the callers of sector2cluster seem to > expect a signed result. I suppose an alternate fix would be to test for the > special case and always return -1. But I hate special cases ;-) > > Patch is against 0.8.2, not current CVS, sorry. Doesn't appear to have been > fixed since 0.8.2 > > Good to have this working. Our app is an embedded system with really crude > (read, no TCP/IP) network support. Until now, getting log files off the > guest has been a pain. So, a big THANKS to whoever wrote block-vvfat, > despite the little buglets. > > Roger