equal
deleted
inserted
replaced
128 my $blockoffset = $offset % $finfo->{meta}{blocksize}; |
128 my $blockoffset = $offset % $finfo->{meta}{blocksize}; |
129 |
129 |
130 my $length = $finfo->{meta}{blocksize} - $blockoffset; |
130 my $length = $finfo->{meta}{blocksize} - $blockoffset; |
131 $length = $size if $size <= $length; |
131 $length = $size if $size <= $length; |
132 |
132 |
133 if (exists $DIRTY{$finfo}{$block}) { |
133 if (exists $DIRTY{$finfo.$block}) { |
134 return substr $DIRTY{$finfo}{$block}, $blockoffset, $length; |
134 return substr $DIRTY{$finfo.$block}, $blockoffset, $length; |
135 } |
135 } |
136 |
136 |
137 my $fn = "$DATA/" . $finfo->{blocklist}{$block}; |
137 my $fn = "$DATA/" . $finfo->{blocklist}{$block}; |
138 if (-e $fn) { |
138 if (-e $fn) { |
139 open(my $fh => $fn); |
139 open(my $fh => $fn); |
176 my $size = length($buffer); |
176 my $size = length($buffer); |
177 |
177 |
178 my $block = int($offset / $finfo->{meta}{blocksize}); |
178 my $block = int($offset / $finfo->{meta}{blocksize}); |
179 my $blockoffset = $offset % $finfo->{meta}{blocksize}; |
179 my $blockoffset = $offset % $finfo->{meta}{blocksize}; |
180 |
180 |
181 if (not exists $DIRTY{$finfo}{$block}) { |
181 if (not exists $DIRTY{$finfo.$block}) { |
182 $DIRTY{$finfo}{$block} = _readblock( |
182 $DIRTY{$finfo.$block} = _readblock( |
183 $finfo, |
183 $finfo, |
184 $finfo->{meta}{blocksize}, |
184 $finfo->{meta}{blocksize}, |
185 $block * $finfo->{meta}{blocksize}); |
185 $block * $finfo->{meta}{blocksize}); |
186 } |
186 } |
187 |
187 |
188 my $length = $finfo->{meta}{blocksize} - $blockoffset; |
188 my $length = $finfo->{meta}{blocksize} - $blockoffset; |
189 $length = $size if $size < $length; |
189 $length = $size if $size < $length; |
190 |
190 |
191 substr($DIRTY{$finfo}{$block}, $blockoffset, $length) |
191 substr($DIRTY{$finfo.$block}, $blockoffset, $length) |
192 = substr($buffer, 0, $length); |
192 = substr($buffer, 0, $length); |
193 |
193 |
194 return $length; |
194 return $length; |
195 } |
195 } |
196 |
196 |