summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/patch/patch-2006-above-2TB.pl24
1 files changed, 24 insertions, 0 deletions
diff --git a/perl-install/patch/patch-2006-above-2TB.pl b/perl-install/patch/patch-2006-above-2TB.pl
new file mode 100644
index 000000000..894ebf1ce
--- /dev/null
+++ b/perl-install/patch/patch-2006-above-2TB.pl
@@ -0,0 +1,24 @@
+log::l("PATCH: 2006-fix-parsing-dmraid");
+
+use log;
+
+undef *c::total_sectors;
+*c::total_sectors = sub {
+ my ($fd) = @_;
+
+ use log;
+ log::l("PATCH: total_sectors");
+ my ($BLKGETSIZE, $BLKGETSIZE64) = (0x1260, 0x80041272);
+
+ open(my $F, "<& $fd") or return;
+ my $ll = '';
+ if (ioctl($F, $BLKGETSIZE64, $ll)) {
+ my ($v, $v1) = unpack("L2", $ll);
+ $v1 * 1024 * 1024 * 8 + $v / 512;
+ } elsif (ioctl($F, $BLKGETSIZE, $ll)) {
+ log::l("defaulting to BLKGETSIZE");
+ unpack("L", $ll);
+ } else {
+ 0;
+ }
+};