tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Adding functions to libutil, part 2



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



Home | Main Index | Thread Index | Old Index