summaryrefslogtreecommitdiff
path: root/sys/src/cmd/disk
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@flatbox.9hal>2012-03-09 06:10:08 +0100
committercinap_lenrek <cinap_lenrek@flatbox.9hal>2012-03-09 06:10:08 +0100
commit1e8c6d3d412ce472d3173a78e285697b71803fb5 (patch)
tree3e020bb3eebace5c33e7150f6af55f9df4eac747 /sys/src/cmd/disk
parentc9d2ce7b1c7156501793e4b7aa41862b1ade561a (diff)
disk/mbr: always use 512 byte sectors (imported changes from sources)
Diffstat (limited to 'sys/src/cmd/disk')
-rw-r--r--sys/src/cmd/disk/mbr.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/src/cmd/disk/mbr.c b/sys/src/cmd/disk/mbr.c
index c7494a011..9292fe974 100644
--- a/sys/src/cmd/disk/mbr.c
+++ b/sys/src/cmd/disk/mbr.c
@@ -145,10 +145,16 @@ main(int argc, char **argv)
if(disk->type == Tfloppy)
fatal("will not install mbr on floppy");
- if(disk->secsize != 512)
- fatal("secsize %d invalid", disk->secsize);
+ /*
+ * we need to cope with 4k-byte sectors on some newer disks.
+ * we're only interested in 512 bytes of mbr, so
+ * on 4k disks, rely on /dev/sd to read-modify-write.
+ */
+ secsize = 512;
+ if(disk->secsize != secsize)
+ fprint(2, "%s: sector size %lld not %ld, should be okay\n",
+ argv0, disk->secsize, secsize);
- secsize = disk->secsize;
buf = malloc(secsize*(disk->s+1));
mbr = malloc(secsize*disk->s);
if(buf == nil || mbr == nil)