summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authordminer <none@none>2006-11-09 08:35:31 -0800
committerdminer <none@none>2006-11-09 08:35:31 -0800
commit1e9d8f9f40b034b8ec51ffb485e216edd7d9ea77 (patch)
tree01910c563d6c59eae6ddc2bfea7c3f33c002d473 /usr/src
parent0d0c8d4ba091e011eca697b381d5f1a44939cdea (diff)
downloadillumos-joyent-1e9d8f9f40b034b8ec51ffb485e216edd7d9ea77.tar.gz
6489671 lumount problems after luupgrade
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/zoneadmd/vplat.c13
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;