On Monday 19 December 2005 21:19, Jim Carter wrote:
> On Fri, 16 Dec 2005, Blaisorblade wrote:
> > On Thursday 15 December 2005 21:15, Jeff Dike wrote:
> > > On Thu, Dec 15, 2005 at 05:26:44PM +0100, Blaisorblade wrote:
> > > > The problem is that the same declaration is used in kernel sources.
> > > > I.e., we have (likely) COW files generated from 64-bit machines using
> > > > a different format from 32-bit ones. So we have two incompatible
> > > > formats out there in the wild.

> > > Hummm, this seems to call for a V4.

> > In short, not needed.

> > Very short term solution is to build 32-bit and 64-bit uml_moo versions.
> > With the existing code - i.e. compile -m32, compile normally.

> When I sabotaged the byteswap in uml_mkcow and recompiled, my re-created
> COW file was useable.  An alternative would be to force v2 format, I think.

I verified the code to write out a V2 header is missing, as expectable.

> As compiled on i386 with gcc-4.0.2 dated 2005-09-01, uml_mkcow produced for
> cow_header_v3.size an 8-byte field aligned on a 4-byte boundary.  While
> this doesn't seem to bother the Pentium-M which has no 64-bit data on the
> bus,

Pentium 1 (yes, the one produced in 1992 or so) uses an 8 byte bus, even if 
it's a 32-bit machine...

> I would be inclined to re-order the data members so the size naturally 
> comes out on a 8-byte boundary, on the likely assumption that __u32 takes 4
> bytes.  Even though time_t is 4 bytes, I would also stick mtime after the
> size so that in however many years (when I'm pushing daisies) when time_t
> is widened, that change will happen with no padding added.

Both changes are a good idea - actually switching mtime to "unsigned long 
long" would do the job, but for now I'm trying to avoid creation of a V4.

> Why (in format v3) is everything in network byte order?

I'm not entitled to answer - I wasn't here when it was born, and the decision 
traces to V2.

> Obviously so a COW 
> file can be created on a host of one endianness, and then used on a host
> that goes the other way, e.g. create on Sparc or PPC, execute on i386.  If
> the kernel auto-creates the COW file, clearly this could never happen.
> Perhaps there are scenarios I haven't thought of,

> but dumps of COW headers 
> will be a lot easier to read if the native order is used. 

Exactly the opposite, unless you use an Arabian editor.

Don't think so - big-endian is much more natural to read. Some books (say 
Intel manuals) make little-endian seem as much as natural, but they are 
cheating - they write numbers with byte 0 at the right, i.e. they write from 
right to left! And when reading a file, unless you have an editor writing 
right-to-left.

> You would rely 
> on a mismatch of the magic number to recognize an endian mismatch.

This is already done to distinguish V1 from V2, to read ->version field (yep, 
it too changed endianness).

> I wish each patch had a title which could be printed when the UML boots --
> guest and host separately, since they might be different versions.

-- 
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894)
http://www.user-mode-linux.org/~blaisorblade

        

        
                
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to