Using statfs.f_fstypename rather than statfs.f_type whilst performing fstype
comparsion as nullfs will copy f_type from underlayer FS. PR: bin/156258 Submitted by: Marcin Wisnicki <mwisnicki+freebsd@gmail.com> MFC after: 1 month
This commit is contained in:
parent
76170c392d
commit
6ab780e5f0
@ -846,7 +846,8 @@ f_fstype(PLAN *plan, FTSENT *entry)
|
||||
static dev_t curdev; /* need a guaranteed illegal dev value */
|
||||
static int first = 1;
|
||||
struct statfs sb;
|
||||
static int val_type, val_flags;
|
||||
static int val_flags;
|
||||
static char fstype[sizeof(sb.f_fstypename)];
|
||||
char *p, save[2] = {0,0};
|
||||
|
||||
if ((plan->flags & F_MTMASK) == F_MTUNKNOWN)
|
||||
@ -888,13 +889,13 @@ f_fstype(PLAN *plan, FTSENT *entry)
|
||||
* always copy both of them.
|
||||
*/
|
||||
val_flags = sb.f_flags;
|
||||
val_type = sb.f_type;
|
||||
strlcpy(fstype, sb.f_fstypename, sizeof(fstype));
|
||||
}
|
||||
switch (plan->flags & F_MTMASK) {
|
||||
case F_MTFLAG:
|
||||
return val_flags & plan->mt_data;
|
||||
case F_MTTYPE:
|
||||
return val_type == plan->mt_data;
|
||||
return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0);
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
@ -905,22 +906,11 @@ c_fstype(OPTION *option, char ***argvp)
|
||||
{
|
||||
char *fsname;
|
||||
PLAN *new;
|
||||
struct xvfsconf vfc;
|
||||
|
||||
fsname = nextarg(option, argvp);
|
||||
ftsoptions &= ~FTS_NOSTAT;
|
||||
|
||||
new = palloc(option);
|
||||
|
||||
/*
|
||||
* Check first for a filesystem name.
|
||||
*/
|
||||
if (getvfsbyname(fsname, &vfc) == 0) {
|
||||
new->flags |= F_MTTYPE;
|
||||
new->mt_data = vfc.vfc_typenum;
|
||||
return new;
|
||||
}
|
||||
|
||||
switch (*fsname) {
|
||||
case 'l':
|
||||
if (!strcmp(fsname, "local")) {
|
||||
@ -938,12 +928,8 @@ c_fstype(OPTION *option, char ***argvp)
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* We need to make filesystem checks for filesystems
|
||||
* that exists but aren't in the kernel work.
|
||||
*/
|
||||
fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname);
|
||||
new->flags |= F_MTUNKNOWN;
|
||||
new->flags |= F_MTTYPE;
|
||||
new->c_data = fsname;
|
||||
return new;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user