diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2019-01-28 22:55:40 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-02-04 15:30:11 +0100 |
commit | 0b80e3dae75c32e5f30bf4d9052d4f390cc0bb6e (patch) | |
tree | ab214800c21830022497a60925741850e9bcd1c8 /fs | |
parent | 5c9408572406c8718a35931ecf74a5cf38632914 (diff) | |
download | barebox-0b80e3dae75c32e5f30bf4d9052d4f390cc0bb6e.tar.gz barebox-0b80e3dae75c32e5f30bf4d9052d4f390cc0bb6e.tar.xz |
fs: devfs: Change .lseek callbacks to return 'int'
Returning requested offset from .lseek() callback doesn't really give
us any new information while bringing unnecessary
complications. Change all .lseek() types (both in struct struct
cdev_operations and in struct fs_driver_d) to return 'int' and adjust
the rest of the codebase accordingly.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bpkfs.c | 4 | ||||
-rw-r--r-- | fs/devfs.c | 6 | ||||
-rw-r--r-- | fs/efi.c | 4 | ||||
-rw-r--r-- | fs/fat/fat.c | 4 | ||||
-rw-r--r-- | fs/fs.c | 8 | ||||
-rw-r--r-- | fs/nfs.c | 4 | ||||
-rw-r--r-- | fs/pstore/fs.c | 4 | ||||
-rw-r--r-- | fs/smhfs.c | 4 | ||||
-rw-r--r-- | fs/tftp.c | 10 | ||||
-rw-r--r-- | fs/uimagefs.c | 4 |
10 files changed, 25 insertions, 27 deletions
diff --git a/fs/bpkfs.c b/fs/bpkfs.c index f1db963d09..655cde09b7 100644 --- a/fs/bpkfs.c +++ b/fs/bpkfs.c @@ -192,7 +192,7 @@ static int bpkfs_read(struct device_d *dev, FILE *file, void *buf, size_t insize } } -static loff_t bpkfs_lseek(struct device_d *dev, FILE *file, loff_t pos) +static int bpkfs_lseek(struct device_d *dev, FILE *file, loff_t pos) { struct bpkfs_handle_data *d = file->priv; @@ -201,7 +201,7 @@ static loff_t bpkfs_lseek(struct device_d *dev, FILE *file, loff_t pos) d->pos = pos; - return pos; + return 0; } struct somfy_readdir { diff --git a/fs/devfs.c b/fs/devfs.c index 5599f39e8c..007dea96d8 100644 --- a/fs/devfs.c +++ b/fs/devfs.c @@ -57,10 +57,10 @@ static int devfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t s return cdev_write(cdev, buf, size, f->pos, f->flags); } -static loff_t devfs_lseek(struct device_d *_dev, FILE *f, loff_t pos) +static int devfs_lseek(struct device_d *_dev, FILE *f, loff_t pos) { struct cdev *cdev = f->priv; - loff_t ret; + int ret; if (cdev->ops->lseek) { ret = cdev->ops->lseek(cdev, pos + cdev->offset); @@ -68,7 +68,7 @@ static loff_t devfs_lseek(struct device_d *_dev, FILE *f, loff_t pos) return ret; } - return pos; + return 0; } static int devfs_erase(struct device_d *_dev, FILE *f, loff_t count, loff_t offset) @@ -292,7 +292,7 @@ static int efifs_write(struct device_d *_dev, FILE *f, const void *buf, size_t i return bufsize; } -static loff_t efifs_lseek(struct device_d *dev, FILE *f, loff_t pos) +static int efifs_lseek(struct device_d *dev, FILE *f, loff_t pos) { struct efifs_file *ufile = f->priv; efi_status_t efiret; @@ -302,7 +302,7 @@ static loff_t efifs_lseek(struct device_d *dev, FILE *f, loff_t pos) return -efi_errno(efiret); } - return pos; + return 0; } static int efifs_truncate(struct device_d *dev, FILE *f, unsigned long size) diff --git a/fs/fat/fat.c b/fs/fat/fat.c index ee7751e943..1367577723 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -268,7 +268,7 @@ static int fat_read(struct device_d *_dev, FILE *f, void *buf, size_t insize) return outsize; } -static loff_t fat_lseek(struct device_d *dev, FILE *f, loff_t pos) +static int fat_lseek(struct device_d *dev, FILE *f, loff_t pos) { FIL *f_file = f->priv; int ret; @@ -277,7 +277,7 @@ static loff_t fat_lseek(struct device_d *dev, FILE *f, loff_t pos) if (ret) return ret; - return pos; + return 0; } static DIR* fat_opendir(struct device_d *dev, const char *pathname) @@ -439,11 +439,9 @@ loff_t lseek(int fildes, loff_t offset, int whence) } if (fsdrv->lseek) { - pos = fsdrv->lseek(&f->fsdev->dev, f, pos); - if (IS_ERR_VALUE(pos)) { - errno = -pos; - return -1; - } + ret = fsdrv->lseek(&f->fsdev->dev, f, pos); + if (ret < 0) + goto out; } f->pos = pos; @@ -1060,13 +1060,13 @@ static int nfs_read(struct device_d *dev, FILE *file, void *buf, size_t insize) return kfifo_get(priv->fifo, buf, insize); } -static loff_t nfs_lseek(struct device_d *dev, FILE *file, loff_t pos) +static int nfs_lseek(struct device_d *dev, FILE *file, loff_t pos) { struct file_priv *priv = file->priv; kfifo_reset(priv->fifo); - return pos; + return 0; } static int nfs_iterate(struct file *file, struct dir_context *ctx) diff --git a/fs/pstore/fs.c b/fs/pstore/fs.c index a879a68064..9a7e0b5526 100644 --- a/fs/pstore/fs.c +++ b/fs/pstore/fs.c @@ -172,13 +172,13 @@ static int pstore_read(struct device_d *dev, FILE *file, void *buf, return insize; } -static loff_t pstore_lseek(struct device_d *dev, FILE *file, loff_t pos) +static int pstore_lseek(struct device_d *dev, FILE *file, loff_t pos) { struct pstore_private *d = file->priv; d->pos = pos; - return pos; + return 0; } static DIR *pstore_opendir(struct device_d *dev, const char *pathname) diff --git a/fs/smhfs.c b/fs/smhfs.c index 18eaa9dfcf..7a6933630c 100644 --- a/fs/smhfs.c +++ b/fs/smhfs.c @@ -109,13 +109,13 @@ static int smhfs_read(struct device_d __always_unused *dev, return -semihosting_errno(); } -static loff_t smhfs_lseek(struct device_d __always_unused *dev, +static int smhfs_lseek(struct device_d __always_unused *dev, FILE *f, loff_t pos) { if (semihosting_seek(file_to_fd(f), pos)) return -semihosting_errno(); - return pos; + return 0; } static DIR* smhfs_opendir(struct device_d __always_unused *dev, @@ -573,13 +573,13 @@ static int tftp_read(struct device_d *dev, FILE *f, void *buf, size_t insize) return outsize; } -static loff_t tftp_lseek(struct device_d *dev, FILE *f, loff_t pos) +static int tftp_lseek(struct device_d *dev, FILE *f, loff_t pos) { /* We cannot seek backwards without reloading or caching the file */ loff_t f_pos = f->pos; if (pos >= f_pos) { - loff_t ret; + int ret = 0; char *buf = xmalloc(1024); while (pos > f_pos) { @@ -596,8 +596,6 @@ static loff_t tftp_lseek(struct device_d *dev, FILE *f, loff_t pos) f_pos += ret; } - ret = pos; - out_free: free(buf); if (ret < 0) { @@ -606,8 +604,10 @@ out_free: * failed since we can't move backwards */ f->pos = f_pos; + return ret; } - return ret; + + return 0; } return -ENOSYS; diff --git a/fs/uimagefs.c b/fs/uimagefs.c index c120944a46..e5ada82da8 100644 --- a/fs/uimagefs.c +++ b/fs/uimagefs.c @@ -116,7 +116,7 @@ static int uimagefs_read(struct device_d *dev, FILE *file, void *buf, size_t ins } } -static loff_t uimagefs_lseek(struct device_d *dev, FILE *file, loff_t pos) +static int uimagefs_lseek(struct device_d *dev, FILE *file, loff_t pos) { struct uimagefs_handle_data *d = file->priv; @@ -125,7 +125,7 @@ static loff_t uimagefs_lseek(struct device_d *dev, FILE *file, loff_t pos) d->pos = pos; - return pos; + return 0; } static DIR *uimagefs_opendir(struct device_d *dev, const char *pathname) |