Commit 382a2287 authored by Jan Kara's avatar Jan Kara

udf: Remove pointless union in udf_inode_info

We use only a single member out of the i_ext union in udf_inode_info.
Just remove the pointless union.
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 044e2e26
...@@ -34,7 +34,7 @@ struct fileIdentDesc *udf_fileident_read(struct inode *dir, loff_t *nf_pos, ...@@ -34,7 +34,7 @@ struct fileIdentDesc *udf_fileident_read(struct inode *dir, loff_t *nf_pos,
fibh->soffset = fibh->eoffset; fibh->soffset = fibh->eoffset;
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
fi = udf_get_fileident(iinfo->i_ext.i_data - fi = udf_get_fileident(iinfo->i_data -
(iinfo->i_efe ? (iinfo->i_efe ?
sizeof(struct extendedFileEntry) : sizeof(struct extendedFileEntry) :
sizeof(struct fileEntry)), sizeof(struct fileEntry)),
......
...@@ -50,7 +50,7 @@ static void __udf_adinicb_readpage(struct page *page) ...@@ -50,7 +50,7 @@ static void __udf_adinicb_readpage(struct page *page)
* So just sample it once and use the same value everywhere. * So just sample it once and use the same value everywhere.
*/ */
kaddr = kmap_atomic(page); kaddr = kmap_atomic(page);
memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, isize); memcpy(kaddr, iinfo->i_data + iinfo->i_lenEAttr, isize);
memset(kaddr + isize, 0, PAGE_SIZE - isize); memset(kaddr + isize, 0, PAGE_SIZE - isize);
flush_dcache_page(page); flush_dcache_page(page);
SetPageUptodate(page); SetPageUptodate(page);
...@@ -76,8 +76,7 @@ static int udf_adinicb_writepage(struct page *page, ...@@ -76,8 +76,7 @@ static int udf_adinicb_writepage(struct page *page,
BUG_ON(!PageLocked(page)); BUG_ON(!PageLocked(page));
kaddr = kmap_atomic(page); kaddr = kmap_atomic(page);
memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr, kaddr, memcpy(iinfo->i_data + iinfo->i_lenEAttr, kaddr, i_size_read(inode));
i_size_read(inode));
SetPageUptodate(page); SetPageUptodate(page);
kunmap_atomic(kaddr); kunmap_atomic(kaddr);
mark_inode_dirty(inode); mark_inode_dirty(inode);
...@@ -215,7 +214,7 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -215,7 +214,7 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
return put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg); return put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg);
case UDF_GETEABLOCK: case UDF_GETEABLOCK:
return copy_to_user((char __user *)arg, return copy_to_user((char __user *)arg,
UDF_I(inode)->i_ext.i_data, UDF_I(inode)->i_data,
UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0; UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0;
default: default:
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
......
...@@ -67,16 +67,16 @@ struct inode *udf_new_inode(struct inode *dir, umode_t mode) ...@@ -67,16 +67,16 @@ struct inode *udf_new_inode(struct inode *dir, umode_t mode)
iinfo->i_efe = 1; iinfo->i_efe = 1;
if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev) if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev)
sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE; sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE;
iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - iinfo->i_data = kzalloc(inode->i_sb->s_blocksize -
sizeof(struct extendedFileEntry), sizeof(struct extendedFileEntry),
GFP_KERNEL); GFP_KERNEL);
} else { } else {
iinfo->i_efe = 0; iinfo->i_efe = 0;
iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize - iinfo->i_data = kzalloc(inode->i_sb->s_blocksize -
sizeof(struct fileEntry), sizeof(struct fileEntry),
GFP_KERNEL); GFP_KERNEL);
} }
if (!iinfo->i_ext.i_data) { if (!iinfo->i_data) {
iput(inode); iput(inode);
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
} }
......
...@@ -157,8 +157,8 @@ void udf_evict_inode(struct inode *inode) ...@@ -157,8 +157,8 @@ void udf_evict_inode(struct inode *inode)
truncate_inode_pages_final(&inode->i_data); truncate_inode_pages_final(&inode->i_data);
invalidate_inode_buffers(inode); invalidate_inode_buffers(inode);
clear_inode(inode); clear_inode(inode);
kfree(iinfo->i_ext.i_data); kfree(iinfo->i_data);
iinfo->i_ext.i_data = NULL; iinfo->i_data = NULL;
udf_clear_extent_cache(inode); udf_clear_extent_cache(inode);
if (want_delete) { if (want_delete) {
udf_free_inode(inode); udf_free_inode(inode);
...@@ -288,14 +288,14 @@ int udf_expand_file_adinicb(struct inode *inode) ...@@ -288,14 +288,14 @@ int udf_expand_file_adinicb(struct inode *inode)
kaddr = kmap_atomic(page); kaddr = kmap_atomic(page);
memset(kaddr + iinfo->i_lenAlloc, 0x00, memset(kaddr + iinfo->i_lenAlloc, 0x00,
PAGE_SIZE - iinfo->i_lenAlloc); PAGE_SIZE - iinfo->i_lenAlloc);
memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, memcpy(kaddr, iinfo->i_data + iinfo->i_lenEAttr,
iinfo->i_lenAlloc); iinfo->i_lenAlloc);
flush_dcache_page(page); flush_dcache_page(page);
SetPageUptodate(page); SetPageUptodate(page);
kunmap_atomic(kaddr); kunmap_atomic(kaddr);
} }
down_write(&iinfo->i_data_sem); down_write(&iinfo->i_data_sem);
memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr, 0x00, memset(iinfo->i_data + iinfo->i_lenEAttr, 0x00,
iinfo->i_lenAlloc); iinfo->i_lenAlloc);
iinfo->i_lenAlloc = 0; iinfo->i_lenAlloc = 0;
if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD)) if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD))
...@@ -311,8 +311,7 @@ int udf_expand_file_adinicb(struct inode *inode) ...@@ -311,8 +311,7 @@ int udf_expand_file_adinicb(struct inode *inode)
lock_page(page); lock_page(page);
down_write(&iinfo->i_data_sem); down_write(&iinfo->i_data_sem);
kaddr = kmap_atomic(page); kaddr = kmap_atomic(page);
memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr, kaddr, memcpy(iinfo->i_data + iinfo->i_lenEAttr, kaddr, inode->i_size);
inode->i_size);
kunmap_atomic(kaddr); kunmap_atomic(kaddr);
unlock_page(page); unlock_page(page);
iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
...@@ -399,8 +398,7 @@ struct buffer_head *udf_expand_dir_adinicb(struct inode *inode, ...@@ -399,8 +398,7 @@ struct buffer_head *udf_expand_dir_adinicb(struct inode *inode,
} }
mark_buffer_dirty_inode(dbh, inode); mark_buffer_dirty_inode(dbh, inode);
memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr, 0, memset(iinfo->i_data + iinfo->i_lenEAttr, 0, iinfo->i_lenAlloc);
iinfo->i_lenAlloc);
iinfo->i_lenAlloc = 0; iinfo->i_lenAlloc = 0;
eloc.logicalBlockNum = *block; eloc.logicalBlockNum = *block;
eloc.partitionReferenceNum = eloc.partitionReferenceNum =
...@@ -1263,7 +1261,7 @@ int udf_setsize(struct inode *inode, loff_t newsize) ...@@ -1263,7 +1261,7 @@ int udf_setsize(struct inode *inode, loff_t newsize)
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
down_write(&iinfo->i_data_sem); down_write(&iinfo->i_data_sem);
udf_clear_extent_cache(inode); udf_clear_extent_cache(inode);
memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr + newsize, memset(iinfo->i_data + iinfo->i_lenEAttr + newsize,
0x00, bsize - newsize - 0x00, bsize - newsize -
udf_file_entry_alloc_offset(inode)); udf_file_entry_alloc_offset(inode));
iinfo->i_lenAlloc = newsize; iinfo->i_lenAlloc = newsize;
...@@ -1414,7 +1412,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) ...@@ -1414,7 +1412,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
sizeof(struct extendedFileEntry)); sizeof(struct extendedFileEntry));
if (ret) if (ret)
goto out; goto out;
memcpy(iinfo->i_ext.i_data, memcpy(iinfo->i_data,
bh->b_data + sizeof(struct extendedFileEntry), bh->b_data + sizeof(struct extendedFileEntry),
bs - sizeof(struct extendedFileEntry)); bs - sizeof(struct extendedFileEntry));
} else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_FE)) { } else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_FE)) {
...@@ -1423,7 +1421,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) ...@@ -1423,7 +1421,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
ret = udf_alloc_i_data(inode, bs - sizeof(struct fileEntry)); ret = udf_alloc_i_data(inode, bs - sizeof(struct fileEntry));
if (ret) if (ret)
goto out; goto out;
memcpy(iinfo->i_ext.i_data, memcpy(iinfo->i_data,
bh->b_data + sizeof(struct fileEntry), bh->b_data + sizeof(struct fileEntry),
bs - sizeof(struct fileEntry)); bs - sizeof(struct fileEntry));
} else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_USE)) { } else if (fe->descTag.tagIdent == cpu_to_le16(TAG_IDENT_USE)) {
...@@ -1436,7 +1434,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) ...@@ -1436,7 +1434,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
sizeof(struct unallocSpaceEntry)); sizeof(struct unallocSpaceEntry));
if (ret) if (ret)
goto out; goto out;
memcpy(iinfo->i_ext.i_data, memcpy(iinfo->i_data,
bh->b_data + sizeof(struct unallocSpaceEntry), bh->b_data + sizeof(struct unallocSpaceEntry),
bs - sizeof(struct unallocSpaceEntry)); bs - sizeof(struct unallocSpaceEntry));
return 0; return 0;
...@@ -1617,8 +1615,8 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) ...@@ -1617,8 +1615,8 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
static int udf_alloc_i_data(struct inode *inode, size_t size) static int udf_alloc_i_data(struct inode *inode, size_t size)
{ {
struct udf_inode_info *iinfo = UDF_I(inode); struct udf_inode_info *iinfo = UDF_I(inode);
iinfo->i_ext.i_data = kmalloc(size, GFP_KERNEL); iinfo->i_data = kmalloc(size, GFP_KERNEL);
if (!iinfo->i_ext.i_data) if (!iinfo->i_data)
return -ENOMEM; return -ENOMEM;
return 0; return 0;
} }
...@@ -1709,7 +1707,7 @@ static int udf_update_inode(struct inode *inode, int do_sync) ...@@ -1709,7 +1707,7 @@ static int udf_update_inode(struct inode *inode, int do_sync)
use->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); use->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc);
memcpy(bh->b_data + sizeof(struct unallocSpaceEntry), memcpy(bh->b_data + sizeof(struct unallocSpaceEntry),
iinfo->i_ext.i_data, inode->i_sb->s_blocksize - iinfo->i_data, inode->i_sb->s_blocksize -
sizeof(struct unallocSpaceEntry)); sizeof(struct unallocSpaceEntry));
use->descTag.tagIdent = cpu_to_le16(TAG_IDENT_USE); use->descTag.tagIdent = cpu_to_le16(TAG_IDENT_USE);
crclen = sizeof(struct unallocSpaceEntry); crclen = sizeof(struct unallocSpaceEntry);
...@@ -1775,7 +1773,7 @@ static int udf_update_inode(struct inode *inode, int do_sync) ...@@ -1775,7 +1773,7 @@ static int udf_update_inode(struct inode *inode, int do_sync)
if (iinfo->i_efe == 0) { if (iinfo->i_efe == 0) {
memcpy(bh->b_data + sizeof(struct fileEntry), memcpy(bh->b_data + sizeof(struct fileEntry),
iinfo->i_ext.i_data, iinfo->i_data,
inode->i_sb->s_blocksize - sizeof(struct fileEntry)); inode->i_sb->s_blocksize - sizeof(struct fileEntry));
fe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); fe->logicalBlocksRecorded = cpu_to_le64(lb_recorded);
...@@ -1794,7 +1792,7 @@ static int udf_update_inode(struct inode *inode, int do_sync) ...@@ -1794,7 +1792,7 @@ static int udf_update_inode(struct inode *inode, int do_sync)
crclen = sizeof(struct fileEntry); crclen = sizeof(struct fileEntry);
} else { } else {
memcpy(bh->b_data + sizeof(struct extendedFileEntry), memcpy(bh->b_data + sizeof(struct extendedFileEntry),
iinfo->i_ext.i_data, iinfo->i_data,
inode->i_sb->s_blocksize - inode->i_sb->s_blocksize -
sizeof(struct extendedFileEntry)); sizeof(struct extendedFileEntry));
efe->objectSize = efe->objectSize =
...@@ -2090,7 +2088,7 @@ void udf_write_aext(struct inode *inode, struct extent_position *epos, ...@@ -2090,7 +2088,7 @@ void udf_write_aext(struct inode *inode, struct extent_position *epos,
struct udf_inode_info *iinfo = UDF_I(inode); struct udf_inode_info *iinfo = UDF_I(inode);
if (!epos->bh) if (!epos->bh)
ptr = iinfo->i_ext.i_data + epos->offset - ptr = iinfo->i_data + epos->offset -
udf_file_entry_alloc_offset(inode) + udf_file_entry_alloc_offset(inode) +
iinfo->i_lenEAttr; iinfo->i_lenEAttr;
else else
...@@ -2182,7 +2180,7 @@ int8_t udf_current_aext(struct inode *inode, struct extent_position *epos, ...@@ -2182,7 +2180,7 @@ int8_t udf_current_aext(struct inode *inode, struct extent_position *epos,
if (!epos->bh) { if (!epos->bh) {
if (!epos->offset) if (!epos->offset)
epos->offset = udf_file_entry_alloc_offset(inode); epos->offset = udf_file_entry_alloc_offset(inode);
ptr = iinfo->i_ext.i_data + epos->offset - ptr = iinfo->i_data + epos->offset -
udf_file_entry_alloc_offset(inode) + udf_file_entry_alloc_offset(inode) +
iinfo->i_lenEAttr; iinfo->i_lenEAttr;
alen = udf_file_entry_alloc_offset(inode) + alen = udf_file_entry_alloc_offset(inode) +
......
...@@ -52,9 +52,9 @@ struct genericFormat *udf_add_extendedattr(struct inode *inode, uint32_t size, ...@@ -52,9 +52,9 @@ struct genericFormat *udf_add_extendedattr(struct inode *inode, uint32_t size,
uint16_t crclen; uint16_t crclen;
struct udf_inode_info *iinfo = UDF_I(inode); struct udf_inode_info *iinfo = UDF_I(inode);
ea = iinfo->i_ext.i_data; ea = iinfo->i_data;
if (iinfo->i_lenEAttr) { if (iinfo->i_lenEAttr) {
ad = iinfo->i_ext.i_data + iinfo->i_lenEAttr; ad = iinfo->i_data + iinfo->i_lenEAttr;
} else { } else {
ad = ea; ad = ea;
size += sizeof(struct extendedAttrHeaderDesc); size += sizeof(struct extendedAttrHeaderDesc);
...@@ -153,7 +153,7 @@ struct genericFormat *udf_get_extendedattr(struct inode *inode, uint32_t type, ...@@ -153,7 +153,7 @@ struct genericFormat *udf_get_extendedattr(struct inode *inode, uint32_t type,
uint32_t offset; uint32_t offset;
struct udf_inode_info *iinfo = UDF_I(inode); struct udf_inode_info *iinfo = UDF_I(inode);
ea = iinfo->i_ext.i_data; ea = iinfo->i_data;
if (iinfo->i_lenEAttr) { if (iinfo->i_lenEAttr) {
struct extendedAttrHeaderDesc *eahd; struct extendedAttrHeaderDesc *eahd;
......
...@@ -460,8 +460,7 @@ static struct fileIdentDesc *udf_add_entry(struct inode *dir, ...@@ -460,8 +460,7 @@ static struct fileIdentDesc *udf_add_entry(struct inode *dir,
if (dinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (dinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
block = dinfo->i_location.logicalBlockNum; block = dinfo->i_location.logicalBlockNum;
fi = (struct fileIdentDesc *) fi = (struct fileIdentDesc *)
(dinfo->i_ext.i_data + (dinfo->i_data + fibh->soffset -
fibh->soffset -
udf_ext0_offset(dir) + udf_ext0_offset(dir) +
dinfo->i_lenEAttr); dinfo->i_lenEAttr);
} else { } else {
...@@ -940,7 +939,7 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry, ...@@ -940,7 +939,7 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry,
mark_buffer_dirty_inode(epos.bh, inode); mark_buffer_dirty_inode(epos.bh, inode);
ea = epos.bh->b_data + udf_ext0_offset(inode); ea = epos.bh->b_data + udf_ext0_offset(inode);
} else } else
ea = iinfo->i_ext.i_data + iinfo->i_lenEAttr; ea = iinfo->i_data + iinfo->i_lenEAttr;
eoffset = sb->s_blocksize - udf_ext0_offset(inode); eoffset = sb->s_blocksize - udf_ext0_offset(inode);
pc = (struct pathComponent *)ea; pc = (struct pathComponent *)ea;
...@@ -1120,7 +1119,7 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -1120,7 +1119,7 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry,
retval = -EIO; retval = -EIO;
if (old_iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (old_iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
dir_fi = udf_get_fileident( dir_fi = udf_get_fileident(
old_iinfo->i_ext.i_data - old_iinfo->i_data -
(old_iinfo->i_efe ? (old_iinfo->i_efe ?
sizeof(struct extendedFileEntry) : sizeof(struct extendedFileEntry) :
sizeof(struct fileEntry)), sizeof(struct fileEntry)),
......
...@@ -65,7 +65,7 @@ uint32_t udf_get_pblock_virt15(struct super_block *sb, uint32_t block, ...@@ -65,7 +65,7 @@ uint32_t udf_get_pblock_virt15(struct super_block *sb, uint32_t block,
} }
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
loc = le32_to_cpu(((__le32 *)(iinfo->i_ext.i_data + loc = le32_to_cpu(((__le32 *)(iinfo->i_data +
vdata->s_start_offset))[block]); vdata->s_start_offset))[block]);
goto translate; goto translate;
} }
......
...@@ -168,7 +168,7 @@ static void init_once(void *foo) ...@@ -168,7 +168,7 @@ static void init_once(void *foo)
{ {
struct udf_inode_info *ei = (struct udf_inode_info *)foo; struct udf_inode_info *ei = (struct udf_inode_info *)foo;
ei->i_ext.i_data = NULL; ei->i_data = NULL;
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
} }
...@@ -1202,7 +1202,7 @@ static int udf_load_vat(struct super_block *sb, int p_index, int type1_index) ...@@ -1202,7 +1202,7 @@ static int udf_load_vat(struct super_block *sb, int p_index, int type1_index)
vat20 = (struct virtualAllocationTable20 *)bh->b_data; vat20 = (struct virtualAllocationTable20 *)bh->b_data;
} else { } else {
vat20 = (struct virtualAllocationTable20 *) vat20 = (struct virtualAllocationTable20 *)
vati->i_ext.i_data; vati->i_data;
} }
map->s_type_specific.s_virtual.s_start_offset = map->s_type_specific.s_virtual.s_start_offset =
......
...@@ -122,7 +122,7 @@ static int udf_symlink_filler(struct file *file, struct page *page) ...@@ -122,7 +122,7 @@ static int udf_symlink_filler(struct file *file, struct page *page)
down_read(&iinfo->i_data_sem); down_read(&iinfo->i_data_sem);
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
symlink = iinfo->i_ext.i_data + iinfo->i_lenEAttr; symlink = iinfo->i_data + iinfo->i_lenEAttr;
} else { } else {
bh = sb_bread(inode->i_sb, pos); bh = sb_bread(inode->i_sb, pos);
......
...@@ -45,11 +45,7 @@ struct udf_inode_info { ...@@ -45,11 +45,7 @@ struct udf_inode_info {
unsigned i_strat4096 : 1; unsigned i_strat4096 : 1;
unsigned i_streamdir : 1; unsigned i_streamdir : 1;
unsigned reserved : 25; unsigned reserved : 25;
union { __u8 *i_data;
struct short_ad *i_sad;
struct long_ad *i_lad;
__u8 *i_data;
} i_ext;
struct kernel_lb_addr i_locStreamdir; struct kernel_lb_addr i_locStreamdir;
__u64 i_lenStreams; __u64 i_lenStreams;
struct rw_semaphore i_data_sem; struct rw_semaphore i_data_sem;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment