diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2011-11-08 19:55:37 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2011-11-08 19:55:37 +0000 |
| commit | 45221cbef70ef8318757e59657a66d24e476f534 (patch) | |
| tree | 8597093cb69765ea6e8968acb878493237817edf /usr/src/cmd/dlmgmtd | |
| parent | a482f1f76a84c8f5a013981545322dda32ae8462 (diff) | |
| download | illumos-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.c | 5 |
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); |
