Skip to content

Commit 76d2ab2

Browse files
committed
gguf-py : handle cross-filesystem file range copies
1 parent 3fa9dfc commit 76d2ab2

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

gguf-py/gguf/lazy.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,13 @@ def copy_tensor_ranges(t: LazyNumpyTensor, fout: BufferedWriter):
360360
dst_offset += r.size - extra_size
361361
else:
362362
# not trying to use reflinks, but still using os.copy_file_range for speed
363-
os.copy_file_range(src.fileno(), fout.fileno(), r.size, r.offset, dst_offset)
363+
try:
364+
os.copy_file_range(src.fileno(), fout.fileno(), r.size, r.offset, dst_offset)
365+
except OSError:
366+
# fallback when there's a problem (e.g. cross-filesystem copies)
367+
src.seek(r.offset)
368+
fout.seek(dst_offset)
369+
shutil.copyfileobj(src, fout, r.size)
364370
dst_offset += r.size
365371
else:
366372
# not using reflinks, fallback when os.copy_file_range is not supported

0 commit comments

Comments
 (0)