diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2019-12-09 14:09:20 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2020-01-21 04:12:41 +0300 |
commit | 1dd9f5babfd95fea5a77b27bab48c04c29db1f5f (patch) | |
tree | 5d02daf81f1a83150c0a6934522b4a69d0999ca5 /fs/adfs/dir_fplus.c | |
parent | 95fbadbb5566e383f0cfe40d895e698ab38bdbc7 (diff) | |
download | linux-1dd9f5babfd95fea5a77b27bab48c04c29db1f5f.tar.xz |
fs/adfs: dir: add common directory buffer release method
With the bhs pointer in place, we have no need for separate per-format
free() methods, since a generic version will do. Provide a generic
implementation, remove the format specific implementations and the
method function pointer.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/adfs/dir_fplus.c')
-rw-r--r-- | fs/adfs/dir_fplus.c | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/fs/adfs/dir_fplus.c b/fs/adfs/dir_fplus.c index 52c42a9986d9..25308b334dd3 100644 --- a/fs/adfs/dir_fplus.c +++ b/fs/adfs/dir_fplus.c @@ -15,7 +15,7 @@ adfs_fplus_read(struct super_block *sb, unsigned int id, unsigned int sz, struct struct adfs_bigdirtail *t; unsigned long block; unsigned int blk, size; - int i, ret = -EIO; + int ret = -EIO; block = __adfs_block_map(sb, id, 0); if (!block) { @@ -92,18 +92,8 @@ adfs_fplus_read(struct super_block *sb, unsigned int id, unsigned int sz, struct return 0; out: - if (dir->bhs) { - for (i = 0; i < dir->nr_buffers; i++) - brelse(dir->bhs[i]); + adfs_dir_relse(dir); - if (&dir->bh[0] != dir->bhs) - kfree(dir->bhs); - - dir->bhs = NULL; - } - - dir->nr_buffers = 0; - dir->sb = NULL; return ret; } @@ -205,29 +195,9 @@ adfs_fplus_sync(struct adfs_dir *dir) return err; } -static void -adfs_fplus_free(struct adfs_dir *dir) -{ - int i; - - if (dir->bhs) { - for (i = 0; i < dir->nr_buffers; i++) - brelse(dir->bhs[i]); - - if (&dir->bh[0] != dir->bhs) - kfree(dir->bhs); - - dir->bhs = NULL; - } - - dir->nr_buffers = 0; - dir->sb = NULL; -} - const struct adfs_dir_ops adfs_fplus_dir_ops = { .read = adfs_fplus_read, .setpos = adfs_fplus_setpos, .getnext = adfs_fplus_getnext, .sync = adfs_fplus_sync, - .free = adfs_fplus_free }; |