From 34680f07d2366df3c66b76d8c51391ab891b7762 Mon Sep 17 00:00:00 2001 From: Francis Couture-Harpin Date: Tue, 9 Sep 2025 11:04:44 -0400 Subject: [PATCH] gguf-py : handle cross-filesystem file range copies --- gguf-py/gguf/lazy.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gguf-py/gguf/lazy.py b/gguf-py/gguf/lazy.py index 7ea7d8f62c..22ffb4338b 100644 --- a/gguf-py/gguf/lazy.py +++ b/gguf-py/gguf/lazy.py @@ -360,7 +360,13 @@ def copy_tensor_ranges(t: LazyNumpyTensor, fout: BufferedWriter): dst_offset += r.size - extra_size else: # not trying to use reflinks, but still using os.copy_file_range for speed - os.copy_file_range(src.fileno(), fout.fileno(), r.size, r.offset, dst_offset) + try: + os.copy_file_range(src.fileno(), fout.fileno(), r.size, r.offset, dst_offset) + except OSError: + # fallback when there's a problem (e.g. cross-filesystem copies) + src.seek(r.offset) + fout.seek(dst_offset) + shutil.copyfileobj(src, fout, r.size) dst_offset += r.size else: # not using reflinks, fallback when os.copy_file_range is not supported