diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2019-12-09 11:08:59 +0000 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2020-01-20 20:12:40 -0500 |
commit | f6f14a0d71b0773a1d4147d1a3c33d537cd213ab (patch) | |
tree | d2db915092823a09a5894de8dc69ee104ac7728d /fs/adfs/map.c | |
parent | 792314f8b223f77037b85e6242c67df15623cf75 (diff) | |
download | linux-stable-f6f14a0d71b0773a1d4147d1a3c33d537cd213ab.tar.gz linux-stable-f6f14a0d71b0773a1d4147d1a3c33d537cd213ab.tar.bz2 linux-stable-f6f14a0d71b0773a1d4147d1a3c33d537cd213ab.zip |
fs/adfs: map: move map-specific sb initialisation to map.c
Move map specific superblock initialisation to map.c, rather than
having it spread into super.c.
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/map.c')
-rw-r--r-- | fs/adfs/map.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/adfs/map.c b/fs/adfs/map.c index 9be0b47da19c..82e1bf101fe6 100644 --- a/fs/adfs/map.c +++ b/fs/adfs/map.c @@ -355,14 +355,19 @@ struct adfs_discmap *adfs_read_map(struct super_block *sb, struct adfs_discrecor unsigned int map_addr, zone_size, nzones; int ret; - nzones = asb->s_map_size; + nzones = dr->nzones | dr->nzones_high << 8; zone_size = (8 << dr->log2secsize) - le16_to_cpu(dr->zone_spare); - map_addr = (nzones >> 1) * zone_size - - ((nzones > 1) ? ADFS_DR_SIZE_BITS : 0); - map_addr = signed_asl(map_addr, asb->s_map2blk); + asb->s_idlen = dr->idlen; + asb->s_map_size = nzones; + asb->s_map2blk = dr->log2bpmb - dr->log2secsize; + asb->s_log2sharesize = dr->log2sharesize; asb->s_ids_per_zone = zone_size / (asb->s_idlen + 1); + map_addr = (nzones >> 1) * zone_size - + ((nzones > 1) ? ADFS_DR_SIZE_BITS : 0); + map_addr = signed_asl(map_addr, asb->s_map2blk); + dm = kmalloc_array(nzones, sizeof(*dm), GFP_KERNEL); if (dm == NULL) { adfs_error(sb, "not enough memory"); |