Reinoud Zandijk
2024-06-20 20:46:06 UTC
Dear folks,
I'd like to add a function implementing fsck/fsutil.c's blockcheck()
char *blockcheck(const char *origname);
as
char *canonical_rdev(char *buf, size_t buflen, const char *origname,
int *flags);
that returns a canonical raw device name when passed a device name in one of
the following ways:
/dev/ld0
name="UUID"
name="ROOT.x"
/dev/dk1
/some/mountpoint
some/file/name
or a softlink to any of these. It could return various flags that might be of
interest. At a minimum it needs to return if the device is the root device as
the current users of blockcheck() rely on it.
Usable flags could be:
IS_ROOT (is a byproduct)
NOTEXISTING (saves a stat)
NODEV (no device)
with a possibly interesting
IS_UNIQUE (no aliases exist in /dev/)
The goal is to have a uniform code that accepts all ways to specify a raw
device. Currently every program has its own logic and oddities/omissions like
fsck_ffs does accept files but fsck_msdos only grocks raw devices etc.
If it fails, a second call can be made prepending `/dev/' to the name so `dk0'
could be accepted then too. Thus could be made a feature but the current code
does not take that into account.
What are your thoughts about this?
With regards,
Reinoud
The current blockcheck() is called from:
sbin/fsck/fsutil.h
sbin/fsck/fsck.c
sbin/fsck/fsutil.c
sbin/fsck/preen.c
sbin/fsck_ext2fs/main.c
sbin/fsck_ffs/main.c
sbin/fsck_lfs/main.c
sbin/fsck_v7fs/fsck_v7fs.c
usr.sbin/quotacheck/quotacheck.c
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
I'd like to add a function implementing fsck/fsutil.c's blockcheck()
char *blockcheck(const char *origname);
as
char *canonical_rdev(char *buf, size_t buflen, const char *origname,
int *flags);
that returns a canonical raw device name when passed a device name in one of
the following ways:
/dev/ld0
name="UUID"
name="ROOT.x"
/dev/dk1
/some/mountpoint
some/file/name
or a softlink to any of these. It could return various flags that might be of
interest. At a minimum it needs to return if the device is the root device as
the current users of blockcheck() rely on it.
Usable flags could be:
IS_ROOT (is a byproduct)
NOTEXISTING (saves a stat)
NODEV (no device)
with a possibly interesting
IS_UNIQUE (no aliases exist in /dev/)
The goal is to have a uniform code that accepts all ways to specify a raw
device. Currently every program has its own logic and oddities/omissions like
fsck_ffs does accept files but fsck_msdos only grocks raw devices etc.
If it fails, a second call can be made prepending `/dev/' to the name so `dk0'
could be accepted then too. Thus could be made a feature but the current code
does not take that into account.
What are your thoughts about this?
With regards,
Reinoud
The current blockcheck() is called from:
sbin/fsck/fsutil.h
sbin/fsck/fsck.c
sbin/fsck/fsutil.c
sbin/fsck/preen.c
sbin/fsck_ext2fs/main.c
sbin/fsck_ffs/main.c
sbin/fsck_lfs/main.c
sbin/fsck_v7fs/fsck_v7fs.c
usr.sbin/quotacheck/quotacheck.c
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de