diff options
author | cinap_lenrek <cinap_lenrek@flatbox.9hal> | 2012-03-09 06:10:08 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@flatbox.9hal> | 2012-03-09 06:10:08 +0100 |
commit | 1e8c6d3d412ce472d3173a78e285697b71803fb5 (patch) | |
tree | 3e020bb3eebace5c33e7150f6af55f9df4eac747 /sys/src/cmd/disk | |
parent | c9d2ce7b1c7156501793e4b7aa41862b1ade561a (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.c | 12 |
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) |