* (cf. /dev/hda1 is the first partition).
* (3) 'dev' is the underlying block device.
*)
-class partition_device dev partno start size =
+class partition_device partno start size dev =
let devname = dev#name in
let name = sprintf "%s%d" devname partno in
let start = start *^ sector_size64 in
let size = size *^ sector_size64 in
object (self)
- inherit device
- method name = name
- method size = size
- method read offset len =
- if offset < 0L || len < 0 || offset +^ Int64.of_int len > size then
- invalid_arg (
- sprintf "%s: tried to read outside partition boundaries (%Ld/%d/%Ld)"
- name offset len size
- );
- dev#read (start+^offset) len
+ inherit offset_device name start size dev
end
(** Probe the
and make_mbr_entry part_status dev partno part_type first_lba part_size =
let first_lba = uint64_of_int32 first_lba in
let part_size = uint64_of_int32 part_size in
- eprintf "first_lba = %Lx\n" first_lba;
- eprintf "part_size = %Lx\n" part_size;
+ if !debug then
+ eprintf "make_mbr_entry: first_lba = %Lx part_size = %Lx\n%!"
+ first_lba part_size;
{ part_status = part_status;
part_type = part_type;
- part_dev = new partition_device dev partno first_lba part_size;
+ part_dev = new partition_device partno first_lba part_size dev;
part_content = `Unknown }
(*