diff options
Diffstat (limited to 'Documentation/filesystems/porting')
-rw-r--r-- | Documentation/filesystems/porting | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 0eeb3954dea3..6b96773e27cb 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -411,3 +411,13 @@ to some pointer to returning that pointer. On errors return ERR_PTR(...). | |||
411 | argument; instead of passing IPERM_FLAG_RCU we add MAY_NOT_BLOCK into mask. | 411 | argument; instead of passing IPERM_FLAG_RCU we add MAY_NOT_BLOCK into mask. |
412 | generic_permission() has also lost the check_acl argument; if you want | 412 | generic_permission() has also lost the check_acl argument; if you want |
413 | non-NULL to be used for that inode, put it into ->i_op->check_acl. | 413 | non-NULL to be used for that inode, put it into ->i_op->check_acl. |
414 | |||
415 | -- | ||
416 | [mandatory] | ||
417 | If you implement your own ->llseek() you must handle SEEK_HOLE and | ||
418 | SEEK_DATA. You can hanle this by returning -EINVAL, but it would be nicer to | ||
419 | support it in some way. The generic handler assumes that the entire file is | ||
420 | data and there is a virtual hole at the end of the file. So if the provided | ||
421 | offset is less than i_size and SEEK_DATA is specified, return the same offset. | ||
422 | If the above is true for the offset and you are given SEEK_HOLE, return the end | ||
423 | of the file. If the offset is i_size or greater return -ENXIO in either case. | ||