summaryrefslogtreecommitdiff
path: root/usr/src/cmd/dlmgmtd
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2011-11-08 19:55:37 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2011-11-08 19:55:37 +0000
commit45221cbef70ef8318757e59657a66d24e476f534 (patch)
tree8597093cb69765ea6e8968acb878493237817edf /usr/src/cmd/dlmgmtd
parenta482f1f76a84c8f5a013981545322dda32ae8462 (diff)
downloadillumos-joyent-45221cbef70ef8318757e59657a66d24e476f534.tar.gz
OS-722 add logging and lock breaking when dlmgmtd lock is held too long
Diffstat (limited to 'usr/src/cmd/dlmgmtd')
-rw-r--r--usr/src/cmd/dlmgmtd/dlmgmt_door.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr/src/cmd/dlmgmtd/dlmgmt_door.c b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
index 29d265cfdb..ef5fa0e745 100644
--- a/usr/src/cmd/dlmgmtd/dlmgmt_door.c
+++ b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
@@ -1329,6 +1329,10 @@ dlmgmt_zonehalt(void *argp, void *retp, size_t *sz, zoneid_t zoneid,
int err = 0;
dlmgmt_door_zonehalt_t *zonehalt = argp;
dlmgmt_zonehalt_retval_t *retvalp = retp;
+ static char my_pid[10];
+
+ if (my_pid[0] == NULL)
+ (void) snprintf(my_pid, sizeof (my_pid), "%d\n", getpid());
if ((err = dlmgmt_checkprivs(0, cred)) == 0) {
if (zoneid != GLOBAL_ZONEID) {
@@ -1353,6 +1357,7 @@ dlmgmt_zonehalt(void *argp, void *retp, size_t *sz, zoneid_t zoneid,
while ((fd = open(ZONE_LOCK, O_WRONLY |
O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) < 0)
(void) sleep(1);
+ (void) write(fd, my_pid, sizeof(my_pid));
(void) close(fd);
dlmgmt_table_lock(B_TRUE);