On Wed 30-01-08 22:03:56, [EMAIL PROTECTED] wrote: > Signed-off-by: Marcin Slusarz <[EMAIL PROTECTED]> > Cc: Jan Kara <[EMAIL PROTECTED]> There are at least a few other places in inode.c which do exactly what you do in udf_update_alloc_ext_desc() so these should be converted as well. Moreover I think that we could move all the work with allocation extent descriptors into some helper functions but I have to think a bit (and also read the standard) how to do that best.
Honza > --- > fs/udf/truncate.c | 56 +++++++++++++++++++++------------------------------- > 1 files changed, 23 insertions(+), 33 deletions(-) > > diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c > index f64f827..eb98616 100644 > --- a/fs/udf/truncate.c > +++ b/fs/udf/truncate.c > @@ -180,6 +180,24 @@ void udf_discard_prealloc(struct inode *inode) > brelse(epos.bh); > } > > +static void udf_update_alloc_ext_desc(struct inode *inode, > + struct extent_position *epos, > + u32 lenalloc) > +{ > + struct super_block *sb = inode->i_sb; > + struct udf_sb_info *sbi = UDF_SB(sb); > + > + struct allocExtDesc *aed = (struct allocExtDesc *) (epos->bh->b_data); > + int len = sizeof(struct allocExtDesc); > + > + aed->lengthAllocDescs = cpu_to_le32(lenalloc); > + if (!UDF_QUERY_FLAG(sb, UDF_FLAG_STRICT) || sbi->s_udfrev >= 0x0201) > + len += lenalloc; > + > + udf_update_tag(epos->bh->b_data, len); > + mark_buffer_dirty_inode(epos->bh, inode); > +} > + > void udf_truncate_extents(struct inode *inode) > { > struct extent_position epos; > @@ -187,7 +205,6 @@ void udf_truncate_extents(struct inode *inode) > uint32_t elen, nelen = 0, indirect_ext_len = 0, lenalloc; > int8_t etype; > struct super_block *sb = inode->i_sb; > - struct udf_sb_info *sbi = UDF_SB(sb); > sector_t first_block = inode->i_size >> sb->s_blocksize_bits, offset; > loff_t byte_offset; > int adsize; > @@ -230,24 +247,9 @@ void udf_truncate_extents(struct inode *inode) > } else if (!epos.bh) { > iinfo->i_lenAlloc = lenalloc; > mark_inode_dirty(inode); > - } else { > - struct allocExtDesc *aed = > - (struct allocExtDesc *) > - (epos.bh->b_data); > - int len = sizeof(struct allocExtDesc); > - > - aed->lengthAllocDescs = > - cpu_to_le32(lenalloc); > - if (!UDF_QUERY_FLAG(sb, > - UDF_FLAG_STRICT) || > - sbi->s_udfrev >= 0x0201) > - len += lenalloc; > - > - udf_update_tag(epos.bh->b_data, > - len); > - mark_buffer_dirty_inode( > - epos.bh, inode); > - } > + } else > + udf_update_alloc_ext_desc(inode, > + &epos, lenalloc); > brelse(epos.bh); > epos.offset = sizeof(struct allocExtDesc); > epos.block = eloc; > @@ -273,20 +275,8 @@ void udf_truncate_extents(struct inode *inode) > } else if (!epos.bh) { > iinfo->i_lenAlloc = lenalloc; > mark_inode_dirty(inode); > - } else { > - struct allocExtDesc *aed = > - (struct allocExtDesc *)(epos.bh->b_data); > - aed->lengthAllocDescs = cpu_to_le32(lenalloc); > - if (!UDF_QUERY_FLAG(sb, UDF_FLAG_STRICT) || > - sbi->s_udfrev >= 0x0201) > - udf_update_tag(epos.bh->b_data, > - lenalloc + > - sizeof(struct allocExtDesc)); > - else > - udf_update_tag(epos.bh->b_data, > - sizeof(struct allocExtDesc)); > - mark_buffer_dirty_inode(epos.bh, inode); > - } > + } else > + udf_update_alloc_ext_desc(inode, &epos, lenalloc); > } else if (inode->i_size) { > if (byte_offset) { > kernel_long_ad extent; > -- > 1.5.3.7 > -- Jan Kara <[EMAIL PROTECTED]> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/