diff options
Diffstat (limited to 'usr/src/cmd/devfsadm')
| -rw-r--r-- | usr/src/cmd/devfsadm/devfsadm.c | 25 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/devfsadm.h | 3 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/disk_link.c | 29 |
3 files changed, 25 insertions, 32 deletions
diff --git a/usr/src/cmd/devfsadm/devfsadm.c b/usr/src/cmd/devfsadm/devfsadm.c index c7ccb7826c..a06fac3e02 100644 --- a/usr/src/cmd/devfsadm/devfsadm.c +++ b/usr/src/cmd/devfsadm/devfsadm.c @@ -3153,9 +3153,6 @@ rm_parent_dir_if_empty(char *pathname) { char *ptr, path[PATH_MAX + 1]; char *fcn = "rm_parent_dir_if_empty: "; - finddevhdl_t fhandle; - const char *f; - int rv; vprint(REMOVE_MID, "%schecking %s if empty\n", fcn, pathname); @@ -3173,17 +3170,8 @@ rm_parent_dir_if_empty(char *pathname) *ptr = '\0'; - if ((rv = finddev_readdir(path, &fhandle)) != 0) { - err_print(OPENDIR_FAILED, path, strerror(rv)); - return; - } - - /* - * An empty pathlist implies an empty directory - */ - f = finddev_next(fhandle); - finddev_close(fhandle); - if (f == NULL) { + if (finddev_emptydir(path)) { + /* directory is empty */ if (s_rmdir(path) == 0) { vprint(REMOVE_MID, "%sremoving empty dir %s\n", fcn, path); @@ -8970,6 +8958,15 @@ bad_re: } /* + * Return 1 if we have reserved links. + */ +int +devfsadm_have_reserved() +{ + return (enumerate_reserved ? 1 : 0); +} + +/* * This functions errs on the side of caution. If there is any error * we assume that the devlink is *not* reserved */ diff --git a/usr/src/cmd/devfsadm/devfsadm.h b/usr/src/cmd/devfsadm/devfsadm.h index c77341fd6c..5d540ce78d 100644 --- a/usr/src/cmd/devfsadm/devfsadm.h +++ b/usr/src/cmd/devfsadm/devfsadm.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -250,6 +250,7 @@ int devfsadm_read_link(char *link, char **devfs_path); char *s_strdup(const char *ptr); /* Private interface between reserve subsystm and disks link generator */ +int devfsadm_have_reserved(void); int devfsadm_is_reserved(devlink_re_t re_array[], char *devlink); int devfsadm_reserve_id_cache(devlink_re_t re_array[], enumerate_file_t *head); diff --git a/usr/src/cmd/devfsadm/disk_link.c b/usr/src/cmd/devfsadm/disk_link.c index 05504ba2bb..bc0ea1fab4 100644 --- a/usr/src/cmd/devfsadm/disk_link.c +++ b/usr/src/cmd/devfsadm/disk_link.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -150,16 +150,14 @@ disk_callback_wwn(di_minor_t minor, di_node_t node) int targ; int *intp; - if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, - "target", &intp) <= 0) { + if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "target", &intp) <= 0) { return (DEVFSADM_CONTINUE); } targ = *intp; - if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, - "lun", &intp) <= 0) { - lun = 0; + if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "lun", &intp) <= 0) { + lun = 0; } else { - lun = *intp; + lun = *intp; } (void) sprintf(disk, "t%dd%d", targ, lun); @@ -181,10 +179,10 @@ disk_callback_fabric(di_minor_t minor, di_node_t node) if (di_prop_lookup_strings(DDI_DEV_T_ANY, node, "client-guid", (char **)&wwn) > 0) { - if (strlcpy((char *)ascii_wwn, (char *)wwn, sizeof (ascii_wwn)) - >= sizeof (ascii_wwn)) { + if (strlcpy((char *)ascii_wwn, (char *)wwn, + sizeof (ascii_wwn)) >= sizeof (ascii_wwn)) { devfsadm_errprint("SUNW_disk_link: GUID too long:%d", - strlen((char *)wwn)); + strlen((char *)wwn)); return (DEVFSADM_CONTINUE); } lun = 0; @@ -468,7 +466,6 @@ reserved_links_exist(di_node_t node, di_minor_t minor, int nflags) char *s; char l[PATH_MAX]; int switch_link = 0; - struct stat sb; char *mn = di_minor_name(minor); if (dvlink_cache == NULL || mn == NULL) { @@ -476,10 +473,8 @@ reserved_links_exist(di_node_t node, di_minor_t minor, int nflags) return (DEVFSADM_FAILURE); } - if (stat(ENUMERATE_RESERVED, &sb) == -1) { - devfsadm_print(disk_mid, "%s: No reserved file: %s. Will " - "not bypass new link creation\n", - modname, ENUMERATE_RESERVED); + if (!devfsadm_have_reserved()) { + devfsadm_print(disk_mid, "%s: No reserved links\n", modname); return (DEVFSADM_FAILURE); } @@ -512,8 +507,8 @@ reserved_links_exist(di_node_t node, di_minor_t minor, int nflags) return (DEVFSADM_FAILURE); } (void) snprintf(s+1, sizeof (phys_path) - (s + 1 - phys_path), - "%s%s", *mn == *(MN_SMI) ? MN_EFI : MN_SMI, - strstr(s, ",raw") ? ",raw" : ""); + "%s%s", *mn == *(MN_SMI) ? MN_EFI : MN_SMI, + strstr(s, ",raw") ? ",raw" : ""); (void) di_devlink_cache_walk(dvlink_cache, DISK_LINK_RE, phys_path, DI_PRIMARY_LINK, &head, dvlink_cb); } |
