X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=Documentation%2Ffilesystems%2Fporting;h=f9547a5c187bd16f849e6913fdb6287a411b1054;hb=1e2317350971c8b01e6adddc798a00e9bcc1a440;hp=a7e9746ee7ea44934c017b4c2a26ef6df9361db8;hpb=82062e7b50280bcf0feca70ac35a44f375602976;p=~andy%2Flinux diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index a7e9746ee7e..f9547a5c187 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting @@ -273,3 +273,21 @@ it's safe to remove it. If you don't need it, remove it. deliberate; as soon as struct block_device * is propagated in a reasonable way by that code fixing will become trivial; until then nothing can be done. + +[mandatory] + + block truncatation on error exit from ->write_begin, and ->direct_IO +moved from generic methods (block_write_begin, cont_write_begin, +nobh_write_begin, blockdev_direct_IO*) to callers. Take a look at +ext2_write_failed and callers for an example. + +[mandatory] + + ->truncate is going away. The whole truncate sequence needs to be +implemented in ->setattr, which is now mandatory for filesystems +implementing on-disk size changes. Start with a copy of the old inode_setattr +and vmtruncate, and the reorder the vmtruncate + foofs_vmtruncate sequence to +be in order of zeroing blocks using block_truncate_page or similar helpers, +size update and on finally on-disk truncation which should not fail. +inode_change_ok now includes the size checks for ATTR_SIZE and must be called +in the beginning of ->setattr unconditionally.