ما هي أنظمة الملفات التي تدعم الربط عبر لصق Linux (2)؟

StackOverflow https://stackoverflow.com/questions/3638657

سؤال

ال صفحة الرجل ل splice استدعاء النظام يقول ان splice قد تفشل وتعيين errno إلى EINVAL إذا:

نظام الملفات الهدف لا يدعم الربط ؛ لا يشير أي من الواصفات إلى أنبوب ؛ أو إزاحة ممنوحة للجهاز غير القابل للبحث

ما هي أنظمة الملفات التي تدعم الربط؟

هل كانت مفيدة؟

المحلول

كانت إجابتي الأصلية غير صحيحة جزئيًا ، فهذه إعادة كتابة رئيسية.

Linux 2.6.30.10 وتحت

في Linux 2.6.30.10 وما فوق ، splice عائدات EINVAL عندما لا يدعم نظام الملفات المصدر أو الهدف الربط. ها هي أنظمة الملفات التي تدعم الربط:

  • في وضع القراءة: ADFs ، AFFS ، AFS ، BFS ، BTRFS ، CODA ، ECRYPTFS ، EXOFS ، EXT2 ، EXT3 ، EXT4 ، FAS ، sysv ، ubifs ، udf ، ufs.
  • في وضع الكتابة: exofs ، ext2 ، ext3 ، ext4 ، jfs ، ocfs2 ، reiserfs ، ubifs.

التفاصيل تتبع. دعم الربط في المحدد في do_splice_to() وظيفة في حالة "الملف إلى الأنابيب" وفي do_splice_from() وظيفة في حالة "الأنابيب إلى ملف". يتم ذلك عن طريق التحقق مما إذا كان المصلح struct file_operations يحتوي على .splice_read أو .splice_write, ، على التوالى. من أجل إنتاج القوائم المذكورة أعلاه لنظم الملفات ، لقد قمت بتشويه fs/*/file.c إلى عن على .splice_read و .splice_write.

Linux 2.6.31 وما فوق

بدءا من Linux 2.6.31 ، جميع أنظمة الملفات تدعم الربط في أوضاع القراءة والكتابة.

التفاصيل تتبع. عندما لا يكون لدى نظام الملفات .splice_read أو .splice_write فيها struct file_operations, ، يتم استخدام وظيفة الاحتياط: default_file_splice_read و default_file_splice_write, ، على التوالى. نرى do_splice_to() و do_splice_from() للتطبيقات. ملحوظة: EINVAL قد لا يزال يتم إرجاعها لأسباب أخرى مدرجة في الوثائق.

نصائح أخرى

اتفاق ل هذه, ، ext3 يفعل. يبدو أنك قد تكون محظوظًا مع أي نظام ملفات فتيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top