ref: b155df82353159682ceb6754b7d09511a62b811d
parent: 36b3055655b5107bf962e41ab8aeb7973f974cc5
author: cinap_lenrek <cinap_lenrek@flatbox.9hal>
date: Fri Mar 9 01:10:08 EST 2012
disk/mbr: always use 512 byte sectors (imported changes from sources)
--- a/sys/src/cmd/disk/mbr.c
+++ b/sys/src/cmd/disk/mbr.c
@@ -145,10 +145,16 @@
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)
--
⑨