.\" -*- coding: UTF-8 -*- .\" Copyright 2007, Silicon Graphics, Inc. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-only .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fallocate 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم fallocate \- معالجة مساحة الملف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP .P \fBint fallocate(int \fP\fIfd\fP\fB, int \fP\fImode\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIsize\fP\fB);\fP .fi .SH الوصف هذه استدعاء نظام غير محمول خاص بلينكس. للحصول على الطريقة المحمولة المحددة بمعيار POSIX.1 لضمان تخصيص مساحة لملف، انظر \fBposix_fallocate\fP(3). .P تسمح \fBfallocate\fP() للمستدعي بمعالجة مساحة القرص المخصصة للملف المشار إليه بـ \fIfd\fP مباشرة للنطاق البايتي الذي يبدأ من \fIoffset\fP ويستمر لـ \fIsize\fP بايت. .P تحدد الوسيطة \fImode\fP العملية التي ستُنفذ على النطاق المعطى. تفاصيل العمليات المدعومة موجودة في الأقسام الفرعية أدناه. .SS "تخصيص مساحة القرص" العملية المبدئية (أي \fImode\fP تساوي صفر) لـ \fBfallocate\fP() تخصص مساحة القرص ضمن النطاق المحدد بـ \fIoffset\fP و \fIsize\fP. سيتغير حجم الملف (كما يبلغ عنه \fBstat\fP(2)) إذا كان \fIoffset\fP+\fIsize\fP أكبر من حجم الملف. أي منطقة فرعية ضمن النطاق المحدد بـ \fIoffset\fP و \fIsize\fP لم تحتوِ على بيانات قبل الاستدعاء ستُهيأ إلى صفر. هذا السلوك المبدئي يشبه إلى حد كبير سلوك دالة المكتبة \fBposix_fallocate\fP(3)، وهو مقصود كطريقة لتنفيذ تلك الدالة بشكل أمثل. .P بعد استدعاء ناجح، تُضمن عمليات الكتابة اللاحقة في النطاق المحدد بـ \fIoffset\fP و \fIsize\fP ألا تفشل بسبب نقص مساحة القرص. .P إذا حُدد العلم \fBFALLOC_FL_KEEP_SIZE\fP في \fImode\fP، يكون سلوك الاستدعاء مشابهاً، لكن حجم الملف لن يتغير حتى لو كان \fIoffset\fP+\fIsize\fP أكبر من حجم الملف. التخصيص المسبق للكتل المصفرة بعد نهاية الملف بهذه الطريقة مفيد لتحسين أعباء عمل الإلحاق. .P إذا حُدد العلم \fBFALLOC_FL_UNSHARE_RANGE\fP في \fImode\fP، ستُجعل امتدادات بيانات الملف المشتركة خاصة بالملف لضمان ألا تفشل كتابة لاحقة بسبب نقص المساحة. عادةً، سيُفعل ذلك بتنفيذ عملية نسخ عند الكتابة على جميع البيانات المشتركة في الملف. قد لا يدعم جميع أنظمة الملفات هذا العلم. .P لأن التخصيص يُفعل بقطع بحجم الكتلة، قد تخصص \fBfallocate\fP() نطاقاً أكبر من مساحة القرص مما حُدد. .SS "إلغاء تخصيص مساحة الملف" تحديد العلم \fBFALLOC_FL_PUNCH_HOLE\fP (متاح منذ لينكس 2.6.38) في \fImode\fP يلغي تخصيص المساحة (أي ينشئ فجوة) في النطاق البايتي الذي يبدأ من \fIoffset\fP ويستمر لـ \fIsize\fP بايت. ضمن النطاق المحدد، تُصفر كتل نظام الملفات الجزئية، وتُزال كتل نظام الملفات الكاملة من الملف. بعد استدعاء ناجح، ستعيد القراءات اللاحقة من هذا النطاق أصفاراً. .P يجب أن يُجمع العلم \fBFALLOC_FL_PUNCH_HOLE\fP مع \fBFALLOC_FL_KEEP_SIZE\fP في \fImode\fP بعملية OR؛ بعبارة أخرى، حتى عند ثقب نهاية الملف، لا يتغير حجم الملف (كما يبلغ عنه \fBstat\fP(2)). .P لا تدعم جميع أنظمة الملفات \fBFALLOC_FL_PUNCH_HOLE\fP؛ إذا لم يدعم نظام ملفات العملية، يُعاد خطأ. العملية مدعومة على الأقل على أنظمة الملفات التالية: .IP \[bu] 3 XFS (منذ لينكس 2.6.38) .IP \[bu] .\" commit a4bb6b64e39abc0e41ca077725f2a72c868e7622 ext4 (منذ لينكس 3.0) .IP \[bu] Btrfs (منذ لينكس 3.7) .IP \[bu] .\" commit 83e4fa9c16e4af7122e31be3eca5d57881d236fe \fBtmpfs\fP(5) (منذ لينكس 3.5) .IP \[bu] .\" commit 4e56a6411fbce6f859566e17298114c2434391a4 \fBgfs2\fP(5) (منذ لينكس 4.16) .SS "طي مساحة الملف" .\" commit 00f5e61998dd17f5375d9dfc01331f104b83f841 تحديد العلم \fBFALLOC_FL_COLLAPSE_RANGE\fP (متاح منذ لينكس 3.15) في \fImode\fP يزيل نطاقاً بايتياً من ملف، دون ترك فجوة. النطاق البايتي الذي سيُطوى يبدأ من \fIoffset\fP ويستمر لـ \fIsize\fP بايت. عند اكتمال العملية، ستُلحق محتويات الملف التي تبدأ من الموقع \fIoffset+size\fP في الموقع \fIoffset\fP، وسيصبح الملف أصغر بـ \fIsize\fP بايت. .P قد يضع نظام الملفات قيوداً على دقة العملية، لضمان تنفيذ فعال. عادةً، يجب أن يكون \fIoffset\fP و \fIsize\fP مضاعفاً لحجم الكتلة المنطقية لنظام الملفات، الذي يختلف حسب نوع نظام الملفات وتكوينه. إذا كان لنظام الملفات مثل هذا المطلب، تفشل \fBfallocate\fP() بالخطأ \fBEINVAL\fP إذا انتهك هذا المطلب. .P إذا وصلت أو تجاوزت المنطقة المحددة بـ \fIoffset\fP زائد \fIsize\fP نهاية الملف، يُعاد خطأ؛ بدلاً من ذلك، استخدم \fBftruncate\fP(2) لاقتطاع ملف. .P لا يجوز تحديد أعلام أخرى في \fImode\fP مع \fBFALLOC_FL_COLLAPSE_RANGE\fP. .P .\" commit 9eb79482a97152930b113b51dff530aba9e28c8e .\" commit e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d اعتباراً من لينكس 3.15، \fBFALLOC_FL_COLLAPSE_RANGE\fP مدعوم من ext4 (فقط للملفات القائمة على الامتدادات) و XFS. .SS "تصفير مساحة الملف" .\" commit 409332b65d3ed8cfa7a8030f1e9d52f372219642 تحديد العلم \fBFALLOC_FL_ZERO_RANGE\fP (متاح منذ لينكس 3.15) في \fImode\fP يصفر المساحة في النطاق البايتي الذي يبدأ من \fIoffset\fP ويستمر لـ \fIsize\fP بايت. ضمن النطاق المحدد، تُخصص الكتل مسبقاً للمناطق التي تمتد عبر الفجوات في الملف. بعد استدعاء ناجح، ستعيد القراءات اللاحقة من هذا النطاق أصفاراً. .P يُفعل التصفير داخل نظام الملفات بشكل مفضل بتحويل النطاق إلى امتدادات غير مكتوبة. هذا النهج يعني أن النطاق المحدد لن يُصفَّر فيزيائياً على الجهاز (باستثناء الكتل الجزئية في أي من طرفي النطاق)، و I/O مطلوب (بخلاف ذلك) فقط لتحديث البيانات الوصفية. .P إذا حُدد العلم \fBFALLOC_FL_KEEP_SIZE\fP بالإضافة في \fImode\fP، يكون سلوك الاستدعاء مشابهاً، لكن حجم الملف لن يتغير حتى لو كان \fIoffset\fP+\fIsize\fP أكبر من حجم الملف. هذا السلوك هو نفسه عند التخصيص المسبق للمساحة مع تحديد \fBFALLOC_FL_KEEP_SIZE\fP. .P لا تدعم جميع أنظمة الملفات \fBFALLOC_FL_ZERO_RANGE\fP؛ إذا لم يدعم نظام ملفات العملية، يُعاد خطأ. العملية مدعومة على الأقل على أنظمة الملفات التالية: .IP \[bu] 3 .\" commit 376ba313147b4172f3e8cf620b9fb591f3e8cdfa XFS (منذ لينكس 3.15) .IP \[bu] .\" commit b8a8684502a0fc852afa0056c6bb2a9273f6fcc0 ext4، للملفات القائمة على الامتدادات (منذ لينكس 3.15) .IP \[bu] .\" commit 30175628bf7f521e9ee31ac98fa6d6fe7441a556 SMB3 (منذ لينكس 3.17) .IP \[bu] .\" commit f27451f229966874a8793995b8e6b74326d125df Btrfs (منذ لينكس 4.16) .SS "زيادة مساحة الملف" .\" commit dd46c787788d5bf5b974729d43e4c405814a4c7d تحديد العلم \fBFALLOC_FL_INSERT_RANGE\fP (المتوفر منذ لينكس 4.1) في \fImode\fP يزيد مساحة الملف بإدراج فجوة ضمن حجم الملف دون الكتابة فوق أي بيانات موجودة. ستبدأ الفجوة عند \fIoffset\fP وتستمر لـ \fIsize\fP بايت. عند إدراج الفجوة داخل الملف، سيتم إزاحة محتويات الملف ابتداءً من \fIoffset\fP إلى الأعلى (أي إلى إزاحة ملف أعلى) بمقدار \fIsize\fP بايت. إدراج فجوة داخل الملف يزيد حجم الملف بمقدار \fIsize\fP بايت. .P لهذا الوضع نفس القيود مثل \fBFALLOC_FL_COLLAPSE_RANGE\fP فيما يتعلق بدقة العملية. إذا لم يتم استيفاء متطلبات الدقة، يفشل \fBfallocate\fP() مع الخطأ \fBEINVAL\fP. إذا كانت \fIoffset\fP مساوية أو أكبر من نهاية الملف، يتم إرجاع خطأ. لمثل هذه العمليات (أي إدراج فجوة في نهاية الملف)، يجب استخدام \fBftruncate\fP(2). .P لا يمكن تحديد أعلام أخرى في \fImode\fP بالتزامن مع \fBFALLOC_FL_INSERT_RANGE\fP. .P .\" commit a904b1ca5751faf5ece8600e18cd3b674afcca1b .\" commit 331573febb6a224bc50322e3670da326cb7f4cfc .\" f2fs also has support since Linux 4.2 .\" commit f62185d0e283e9d311e3ac1020f159d95f0aab39 يتطلب \fBFALLOC_FL_INSERT_RANGE\fP دعم نظام الملفات. أنظمة الملفات التي تدعم هذه العملية تشمل XFS (منذ لينكس 4.1) و ext4 (منذ لينكس 4.2). .SH "قيمة الإرجاع" عند النجاح، يُرجع \fBfallocate\fP() صفرًا. عند الخطأ، يُرجع \-1 ويتم تعيين \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEBADF\fP \fIfd\fP ليس واصف ملف صالحًا، أو ليس مفتوحًا للكتابة. .TP \fBEFBIG\fP \fIoffset\fP+\fIsize\fP يتجاوز الحد الأقصى لحجم الملف. .TP \fBEFBIG\fP \fImode\fP هو \fBFALLOC_FL_INSERT_RANGE\fP، وحجم الملف الحالي+\fIlen\fP يتجاوز الحد الأقصى لحجم الملف. .TP \fBEINTR\fP تم التقاط إشارة أثناء التنفيذ؛ انظر \fBsignal\fP(7). .TP \fBEINVAL\fP .\" FIXME . (raise a kernel bug) Probably the size==0 case should be .\" a no-op, rather than an error. That would be consistent with .\" similar APIs for the size==0 case. .\" See "Re: [PATCH] fallocate.2: add FALLOC_FL_PUNCH_HOLE flag definition" .\" 21 Sep 2012 .\" http://thread.gmane.org/gmane.linux.file-systems/48331/focus=1193526 \fIoffset\fP كان أقل من 0، أو \fIsize\fP كان أقل من أو يساوي 0. .TP \fBEINVAL\fP \fImode\fP هو \fBFALLOC_FL_COLLAPSE_RANGE\fP والنطاق المحدد بواسطة \fIoffset\fP زائد \fIsize\fP يصل أو يتجاوز نهاية الملف. .TP \fBEINVAL\fP \fImode\fP هو \fBFALLOC_FL_INSERT_RANGE\fP والنطاق المحدد بواسطة \fIoffset\fP يصل أو يتجاوز نهاية الملف. .TP \fBEINVAL\fP \fImode\fP هو \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP، ولكن إما \fIoffset\fP أو \fIsize\fP ليس مضاعفًا لحجم كتلة نظام الملفات. .TP \fBEINVAL\fP \fImode\fP يحتوي على واحد من \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP وأيضًا أعلام أخرى؛ لا يُسمح بأعلام أخرى مع \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP. .TP \fBEINVAL\fP .\" There was an inconsistency in Linux 3.15-rc1, that should be resolved so that all .\" filesystems use this error for this case. (Tytso says ex4 will change.) .\" http://thread.gmane.org/gmane.comp.file-systems.xfs.general/60485/focus=5521 .\" From: Michael Kerrisk (man-pages .\" Subject: Re: [PATCH v5 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate .\" Newsgroups: gmane.linux.man, gmane.linux.file-systems .\" Date: 2014-04-17 13:40:05 GMT \fImode\fP هو \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_ZERO_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP، ولكن الملف المشار إليه بواسطة \fIfd\fP ليس ملفًا عاديًا. .TP \fBEIO\fP حدث خطأ إدخال/إخراج أثناء القراءة من أو الكتابة إلى نظام ملفات. .TP \fBENODEV\fP \fIfd\fP لا يشير إلى ملف عادي أو دليل. (إذا كان \fIfd\fP أنبوبًا أو FIFO، ينتج خطأ مختلف.) .TP \fBENOSPC\fP لا توجد مساحة كافية على الجهاز الذي يحتوي على الملف المشار إليه بواسطة \fIfd\fP. .TP \fBENOSYS\fP هذا النواة لا تنفذ \fBfallocate\fP(). .TP \fBEOPNOTSUPP\fP نظام الملفات الذي يحتوي على الملف المشار إليه بواسطة \fIfd\fP لا يدعم هذه العملية؛ أو أن \fImode\fP غير مدعوم من قبل نظام الملفات الذي يحتوي على الملف المشار إليه بواسطة \fIfd\fP. .TP \fBEPERM\fP الملف المشار إليه بواسطة \fIfd\fP مُعلّم على أنه غير قابل للتغيير (انظر \fBchattr\fP(1)). .TP \fBEPERM\fP \fImode\fP يحدد \fBFALLOC_FL_PUNCH_HOLE\fP أو \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP والملف المشار إليه بواسطة \fIfd\fP مُعلّم على أنه للإلحاق فقط (انظر \fBchattr\fP(1)). .TP \fBEPERM\fP مُنعت العملية بواسطة ختم ملف؛ انظر \fBfcntl\fP(2). .TP \fBESPIPE\fP \fIfd\fP يشير إلى أنبوب أو FIFO. .TP \fBETXTBSY\fP \fImode\fP يحدد \fBFALLOC_FL_COLLAPSE_RANGE\fP أو \fBFALLOC_FL_INSERT_RANGE\fP، ولكن الملف المشار إليه بواسطة \fIfd\fP قيد التنفيذ حاليًا. .SH المعايير لينكس. .SH التاريخ .TP \fBfallocate\fP() لينكس 2.6.23، glibc 2.10. .TP \fBFALLOC_FL_*\fP .\" See http://sourceware.org/bugzilla/show_bug.cgi?id=14964 glibc 2.18. .SH "انظر أيضًا" \fBfallocate\fP(1)، \fBftruncate\fP(2)، \fBposix_fadvise\fP(3)، \fBposix_fallocate\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .