diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-01-26 21:55:43 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-01-26 21:55:43 +0000 |
| commit | 74c041ac57c7d0f7f93977f0adbe1510932a543c (patch) | |
| tree | 281363e0e7a5981d1edb3d338d89cb4c9147ba17 | |
| parent | 7253da9c05bf01c0d932bf598a44229bbfe10de8 (diff) | |
Notes
| -rw-r--r-- | sbin/bsdlabel/bsdlabel.c | 6 | ||||
| -rw-r--r-- | sbin/disklabel/disklabel.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/sbin/bsdlabel/bsdlabel.c b/sbin/bsdlabel/bsdlabel.c index d01f0ea00be2a..ecb1705e9efd0 100644 --- a/sbin/bsdlabel/bsdlabel.c +++ b/sbin/bsdlabel/bsdlabel.c @@ -228,6 +228,10 @@ main(int argc, char *argv[]) np = namebuf + strlen(specname) + 1; f = open(specname, op == READ ? O_RDONLY : O_RDWR); } + if (f < 0 && errno == EBUSY) { + /* lets try to get by with ioctls */ + f = open(specname, O_RDONLY); + } if (f < 0) err(4, "%s", specname); @@ -378,6 +382,8 @@ writelabel(int f, const char *boot, struct disklabel *lp) sum += p[i]; p[63] = sum; #endif + if (ioctl(f, DIOCBSDBB, &boot) == 0) + return (0); if (write(f, boot, lp->d_bbsize) != (int)lp->d_bbsize) { warn("write"); return (1); diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c index d01f0ea00be2a..ecb1705e9efd0 100644 --- a/sbin/disklabel/disklabel.c +++ b/sbin/disklabel/disklabel.c @@ -228,6 +228,10 @@ main(int argc, char *argv[]) np = namebuf + strlen(specname) + 1; f = open(specname, op == READ ? O_RDONLY : O_RDWR); } + if (f < 0 && errno == EBUSY) { + /* lets try to get by with ioctls */ + f = open(specname, O_RDONLY); + } if (f < 0) err(4, "%s", specname); @@ -378,6 +382,8 @@ writelabel(int f, const char *boot, struct disklabel *lp) sum += p[i]; p[63] = sum; #endif + if (ioctl(f, DIOCBSDBB, &boot) == 0) + return (0); if (write(f, boot, lp->d_bbsize) != (int)lp->d_bbsize) { warn("write"); return (1); |
