diff options
| author | dminer <none@none> | 2006-11-09 08:35:31 -0800 |
|---|---|---|
| committer | dminer <none@none> | 2006-11-09 08:35:31 -0800 |
| commit | 1e9d8f9f40b034b8ec51ffb485e216edd7d9ea77 (patch) | |
| tree | 01910c563d6c59eae6ddc2bfea7c3f33c002d473 /usr/src | |
| parent | 0d0c8d4ba091e011eca697b381d5f1a44939cdea (diff) | |
| download | illumos-joyent-1e9d8f9f40b034b8ec51ffb485e216edd7d9ea77.tar.gz | |
6489671 lumount problems after luupgrade
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/cmd/zoneadmd/vplat.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/usr/src/cmd/zoneadmd/vplat.c b/usr/src/cmd/zoneadmd/vplat.c index dfb1a4ef77..ca93b1c696 100644 --- a/usr/src/cmd/zoneadmd/vplat.c +++ b/usr/src/cmd/zoneadmd/vplat.c @@ -304,19 +304,22 @@ resolve_lofs(zlog_t *zlogp, char *path, size_t pathlen) for (;;) { struct mnttab *mnp; - for (mnp = resolve_lofs_mnts; mnp < resolve_lofs_mnt_max; - mnp++) { + /* Search in reverse order to find longest match */ + for (mnp = resolve_lofs_mnt_max - 1; mnp >= resolve_lofs_mnts; + mnp--) { if (mnp->mnt_fstype == NULL || mnp->mnt_mountp == NULL || - mnp->mnt_special == NULL || - strcmp(mnp->mnt_fstype, MNTTYPE_LOFS) != 0) + mnp->mnt_special == NULL) continue; len = strlen(mnp->mnt_mountp); if (strncmp(mnp->mnt_mountp, path, len) == 0 && (path[len] == '/' || path[len] == '\0')) break; } - if (mnp >= resolve_lofs_mnt_max) + if (mnp < resolve_lofs_mnts) + break; + /* If it's not a lofs then we're done */ + if (strcmp(mnp->mnt_fstype, MNTTYPE_LOFS) != 0) break; if (outside_altroot) { char *cp; |
