tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: mounting wedges by name
mm_lists%pulsar-zone.net@localhost (Matthew Mondor) writes:
>On Sun, 17 Oct 2010 11:07:40 +0000 (UTC)
>mlelstv%serpens.de@localhost (Michael van Elst) wrote:
>> http://ftp.netbsd.org/pub/NetBSD/misc/mlelstv/mount.diff is a patch
>> to mount(8) that allows you to mount a partition by using the syntax
>> "NAME=string" as the special file where 'string' is the Unicode name
>> of the wedge. The same syntax can be used in fstab.
>I think this is very useful.
>Are disk names provided by sysctl already converted to UTF-8 as
>necessary? As I see that GPT labels appear to be UTF-16LE encoded. A
>quick look at kern/subri_iostat.c did not show any encoding conversion
>and I didn't check further yet. I'm honestly unfamiliar with that code,
>but your comparision code would seem to work for me in the case of
>ASCII or UTF-8 only.
sysctl only delivers the driver instance names ('cd0','sd0','dk0',...)
that I need to list all wedges. I don't think there is any defined
encoding for driver names and so far everything is ascii.
The wedges themselves have a name stored as UTF-8:
struct dkwedge_info {
char dkw_devname[16];/* device-style name (e.g. "dk0") */
uint8_t dkw_wname[128]; /* wedge name (Unicode, UTF-8) */
...
For GPT autodiscovered wedges the UTF-8 encoding is converted from
the UTF-16LE data stored in the GPT.
So, my code wants to see partition names in UTF-8.
N.B. so far, only GPT derived wedges have such a name. If you
generate wedges with DKWEDGE_METHOD_BSDLABEL (which is usually a bad
idea) their names will be the same as the traditional partition names,
for example: "sd0a". If you use DKWEDGE_METHOD_MBR you get the
same but starting with partition 'e'.
--
--
Michael van Elst
Internet: mlelstv%serpens.de@localhost
"A potential Snark may lurk in every tree."
Home |
Main Index |
Thread Index |
Old Index