summaryrefslogtreecommitdiff
path: root/usr/src/cmd/devfsadm
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/devfsadm')
-rw-r--r--usr/src/cmd/devfsadm/devfsadm.c25
-rw-r--r--usr/src/cmd/devfsadm/devfsadm.h3
-rw-r--r--usr/src/cmd/devfsadm/disk_link.c29
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);
}