diff options
author | Carlos Maiolino <cmaiolino@redhat.com> | 2020-01-09 16:30:41 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2020-02-03 16:05:37 +0300 |
commit | 30460e1ea3e62f8457e087db9a309ed1031630da (patch) | |
tree | 5397a83545672205eda15c343eaa20b1427920d4 /include/linux/fs.h | |
parent | c79f46a282390e0f5b306007bf7b11a46d529538 (diff) | |
download | linux-30460e1ea3e62f8457e087db9a309ed1031630da.tar.xz |
fs: Enable bmap() function to properly return errors
By now, bmap() will either return the physical block number related to
the requested file offset or 0 in case of error or the requested offset
maps into a hole.
This patch makes the needed changes to enable bmap() to proper return
errors, using the return value as an error return, and now, a pointer
must be passed to bmap() to be filled with the mapped physical block.
It will change the behavior of bmap() on return:
- negative value in case of error
- zero on success or map fell into a hole
In case of a hole, the *block will be zero too
Since this is a prep patch, by now, the only error return is -EINVAL if
->bmap doesn't exist.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 98e0349adb52..f762e07ea589 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2865,9 +2865,16 @@ static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count) extern void emergency_sync(void); extern void emergency_remount(void); + #ifdef CONFIG_BLOCK -extern sector_t bmap(struct inode *, sector_t); +extern int bmap(struct inode *inode, sector_t *block); +#else +static inline int bmap(struct inode *inode, sector_t *block) +{ + return -EINVAL; +} #endif + extern int notify_change(struct dentry *, struct iattr *, struct inode **); extern int inode_permission(struct inode *, int); extern int generic_permission(struct inode *, int); |