Re: API Extensions

Tyler Dauwalder <tyler-cyCl/[email protected]>
Newsgroups gmane.os.openbeos.storage
Message-ID <[email protected]>

On 2003-01-06 at 14:35:14 [-0800], [email protected] wrote:
> 
> > > > > And the user functions:
> > > > > status=5Ft partition=5Fsession(int deviceFD, int32
> > > > > sessionIndex,
> > > > > const
> > > > > char
> > > > > *identifier, uint32 version, void *parameters, size=5Ft
> > > > > paramLen);
> > > > > status=5Ft initialize=5Fpartition(int deviceFD, int32
> > > > > sessionIndex,
> > > > > int32
> > > > > partitionIndex, const char *identifier, uint32 version, char *
> > > > > volumeName, void *parameters, size=5Ft paramLen);
> > > > 
> > > > I would replace the second with:
> > > > status=5Ft initialize=5Fvolume(const char *where, const char *
> > > > fileSystem,
> > > > const char *volumeName, const char *parameters);
> > > > 
> > > > Or something similar, probably in unistd.h (accompanying
> > > > mount()).
> > > 
> > > Mmh, I could live with that, though it doesn't fit with the rest 
> > > of
> > > the
> > > functions.
> > 
> > Why not have both? If you're using the device API, getting
> > session_info's and partition_info's and what not, you're going to be
> > really annoyed if you have to convert that info to a path name to
> > initialize the partition; thus you want Ingo's version. But if you
> > just
> > feel like initializing a volume for whatever reason, Axel's version
> > would be nicer (and would probably make sense living in unistd.h).
> 
> That's fine as a compromise. Though, one might object, that it isn't a
> good idea to have different APIs (at the same abstraction level) that
> do the same thing.

Well, I guess I'm thinking of Axel's version as more of a POSIX-ish 
type interface, and then your version as device API interface. If we 
had to go with one, I'd vote for the latter.

> > > Perhaps it's also better to drop that `version' stuff. I thought,
> > > it
> > > could help to deal better with situations when different versions
> > > of a
> > > FS exist, but probably that's a bit too esoteric.
> > 
> > Perhaps set things up so the latest version is used unless specified
> > (does C allow for default parameters? I can't remember...)?
> 
> Sadly C doesn't know default parameters. And, if the versions really
> matter, one would simply set up two differently named modules/FS add-
> ons (cf. bfs vs. ofs) -- with priorities one can gracefully deal with
> such a situation. Therefore it is not really necessary to explicitly
> reflect versions stuff in the API.

Sounds reasonable to me. :)

> > > > OTOH we can use this information to display names for partitions
> > > > with
> > > > unknown or initialized file systems - so that Tracker displays
> > > > "Be
> > > > volume" or "QNX volume" if the  recognizes a BFS/QNX partition
> > > > but
> > > > it
> > > > cannot read the file system for whatever reason.
> > > 
> > > The extended_partition_info features both the type code
> > > (`partition_code') and a human readable interpretation
> > > (`partition_type'). partition_code is uint8 currently -- maybe it
> > > should be resized to uint32.
> > 
> > Do you know offhand if anyone else has done this yet (and would the
> > intel partition specs allow the expansion to happen gracefully?).
> > IIRC,
> > there are very few type codes in the 8-bit range that haven't been
> > used, so it seems like something will have to be done one of these
> > days.
> 
> I don't really get the point, I'm afraid. The Intel/DOS/IBM/whatever
> partition layout specs are what they are, i.e. simply non-existent. 
> ;-)
> But nevertheless one has no way to get around them. :-P So we can't
> just modify them, without risking, that other tools and operating
> systems will break.

I guess I was thinking in terms of whether or not someone might try to 
hack an extension into the specs (or lack thereof :) sometime, a la FAT 
-> FAT32.

> The reason for proposing a uint32 was merely to be
> prepared for other partitioning styles. 

Understood.

> I don't know about what it
> looks like on PPC. In the worst case it is even a string. Anyway,
> `partition_code' is merely a read-only field of informational
> (entertainment? ;-) use. 

Maybe we should just make it a string then, and let the partition 
module convert the codes to appropriate string, if it can.

-Tyler
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.