diff options
Diffstat (limited to 'perl-install/patch')
-rw-r--r-- | perl-install/patch/patch-2006-above-2TB.pl | 24 |
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; + } +}; |