Lines Matching refs:iinfo

73 	struct udf_inode_info *iinfo = UDF_I(inode);  in __udf_clear_extent_cache()  local
75 if (iinfo->cached_extent.lstart != -1) { in __udf_clear_extent_cache()
76 brelse(iinfo->cached_extent.epos.bh); in __udf_clear_extent_cache()
77 iinfo->cached_extent.lstart = -1; in __udf_clear_extent_cache()
84 struct udf_inode_info *iinfo = UDF_I(inode); in udf_clear_extent_cache() local
86 spin_lock(&iinfo->i_extent_cache_lock); in udf_clear_extent_cache()
88 spin_unlock(&iinfo->i_extent_cache_lock); in udf_clear_extent_cache()
95 struct udf_inode_info *iinfo = UDF_I(inode); in udf_read_extent_cache() local
98 spin_lock(&iinfo->i_extent_cache_lock); in udf_read_extent_cache()
99 if ((iinfo->cached_extent.lstart <= bcount) && in udf_read_extent_cache()
100 (iinfo->cached_extent.lstart != -1)) { in udf_read_extent_cache()
102 *lbcount = iinfo->cached_extent.lstart; in udf_read_extent_cache()
103 memcpy(pos, &iinfo->cached_extent.epos, in udf_read_extent_cache()
109 spin_unlock(&iinfo->i_extent_cache_lock); in udf_read_extent_cache()
117 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_extent_cache() local
119 spin_lock(&iinfo->i_extent_cache_lock); in udf_update_extent_cache()
124 memcpy(&iinfo->cached_extent.epos, pos, sizeof(*pos)); in udf_update_extent_cache()
125 iinfo->cached_extent.lstart = estart; in udf_update_extent_cache()
126 switch (iinfo->i_alloc_type) { in udf_update_extent_cache()
128 iinfo->cached_extent.epos.offset -= sizeof(struct short_ad); in udf_update_extent_cache()
131 iinfo->cached_extent.epos.offset -= sizeof(struct long_ad); in udf_update_extent_cache()
134 spin_unlock(&iinfo->i_extent_cache_lock); in udf_update_extent_cache()
139 struct udf_inode_info *iinfo = UDF_I(inode); in udf_evict_inode() local
150 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB && in udf_evict_inode()
151 inode->i_size != iinfo->i_lenExtents) { in udf_evict_inode()
155 (unsigned long long)iinfo->i_lenExtents); in udf_evict_inode()
157 kfree(iinfo->i_ext.i_data); in udf_evict_inode()
158 iinfo->i_ext.i_data = NULL; in udf_evict_inode()
168 struct udf_inode_info *iinfo = UDF_I(inode); in udf_write_failed() local
173 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { in udf_write_failed()
174 down_write(&iinfo->i_data_sem); in udf_write_failed()
177 up_write(&iinfo->i_data_sem); in udf_write_failed()
256 struct udf_inode_info *iinfo = UDF_I(inode); in udf_expand_file_adinicb() local
264 if (!iinfo->i_lenAlloc) { in udf_expand_file_adinicb()
266 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT; in udf_expand_file_adinicb()
268 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; in udf_expand_file_adinicb()
271 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
279 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
287 memset(kaddr + iinfo->i_lenAlloc, 0x00, in udf_expand_file_adinicb()
288 PAGE_SIZE - iinfo->i_lenAlloc); in udf_expand_file_adinicb()
289 memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, in udf_expand_file_adinicb()
290 iinfo->i_lenAlloc); in udf_expand_file_adinicb()
295 down_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
296 memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr, 0x00, in udf_expand_file_adinicb()
297 iinfo->i_lenAlloc); in udf_expand_file_adinicb()
298 iinfo->i_lenAlloc = 0; in udf_expand_file_adinicb()
300 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT; in udf_expand_file_adinicb()
302 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; in udf_expand_file_adinicb()
305 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
310 down_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
312 memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr, kaddr, in udf_expand_file_adinicb()
316 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; in udf_expand_file_adinicb()
318 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
339 struct udf_inode_info *iinfo = UDF_I(inode); in udf_expand_dir_adinicb() local
347 iinfo->i_alloc_type = alloctype; in udf_expand_dir_adinicb()
354 iinfo->i_location.partitionReferenceNum, in udf_expand_dir_adinicb()
355 iinfo->i_location.logicalBlockNum, err); in udf_expand_dir_adinicb()
359 iinfo->i_location.partitionReferenceNum, in udf_expand_dir_adinicb()
378 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; in udf_expand_dir_adinicb()
385 iinfo->i_alloc_type = alloctype; in udf_expand_dir_adinicb()
393 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; in udf_expand_dir_adinicb()
400 memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr, 0, in udf_expand_dir_adinicb()
401 iinfo->i_lenAlloc); in udf_expand_dir_adinicb()
402 iinfo->i_lenAlloc = 0; in udf_expand_dir_adinicb()
405 iinfo->i_location.partitionReferenceNum; in udf_expand_dir_adinicb()
406 iinfo->i_lenExtents = inode->i_size; in udf_expand_dir_adinicb()
408 epos.block = iinfo->i_location; in udf_expand_dir_adinicb()
423 struct udf_inode_info *iinfo; in udf_get_block() local
434 iinfo = UDF_I(inode); in udf_get_block()
436 down_write(&iinfo->i_data_sem); in udf_get_block()
437 if (block == iinfo->i_next_alloc_block + 1) { in udf_get_block()
438 iinfo->i_next_alloc_block++; in udf_get_block()
439 iinfo->i_next_alloc_goal++; in udf_get_block()
452 up_write(&iinfo->i_data_sem); in udf_get_block()
493 struct udf_inode_info *iinfo; in udf_do_extend_file() local
501 iinfo = UDF_I(inode); in udf_do_extend_file()
508 iinfo->i_lenExtents = in udf_do_extend_file()
509 (iinfo->i_lenExtents + sb->s_blocksize - 1) & in udf_do_extend_file()
596 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in udf_do_extend_file()
598 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in udf_do_extend_file()
635 struct udf_inode_info *iinfo = UDF_I(inode); in udf_extend_file() local
640 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in udf_extend_file()
642 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in udf_extend_file()
682 iinfo->i_lenExtents = newsize; in udf_extend_file()
701 struct udf_inode_info *iinfo = UDF_I(inode); in inode_getblk() local
702 udf_pblk_t goal = 0, pgoal = iinfo->i_location.logicalBlockNum; in inode_getblk()
709 prev_epos.block = iinfo->i_location; in inode_getblk()
852 if (iinfo->i_next_alloc_block == block) in inode_getblk()
853 goal = iinfo->i_next_alloc_goal; in inode_getblk()
857 goal = iinfo->i_location.logicalBlockNum + 1; in inode_getblk()
861 iinfo->i_location.partitionReferenceNum, in inode_getblk()
869 iinfo->i_lenExtents += inode->i_sb->s_blocksize; in inode_getblk()
894 iinfo->i_location.partitionReferenceNum, 0); in inode_getblk()
900 iinfo->i_next_alloc_block = block; in inode_getblk()
901 iinfo->i_next_alloc_goal = newblocknum; in inode_getblk()
1228 struct udf_inode_info *iinfo; in udf_setsize() local
1237 iinfo = UDF_I(inode); in udf_setsize()
1239 down_write(&iinfo->i_data_sem); in udf_setsize()
1240 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_setsize()
1246 down_write(&iinfo->i_data_sem); in udf_setsize()
1248 iinfo->i_lenAlloc = newsize; in udf_setsize()
1254 up_write(&iinfo->i_data_sem); in udf_setsize()
1258 up_write(&iinfo->i_data_sem); in udf_setsize()
1261 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_setsize()
1262 down_write(&iinfo->i_data_sem); in udf_setsize()
1264 memset(iinfo->i_ext.i_data + iinfo->i_lenEAttr + newsize, in udf_setsize()
1267 iinfo->i_lenAlloc = newsize; in udf_setsize()
1269 up_write(&iinfo->i_data_sem); in udf_setsize()
1277 down_write(&iinfo->i_data_sem); in udf_setsize()
1280 up_write(&iinfo->i_data_sem); in udf_setsize()
1306 struct udf_inode_info *iinfo = UDF_I(inode); in udf_read_inode() local
1308 struct kernel_lb_addr *iloc = &iinfo->i_location; in udf_read_inode()
1370 memcpy(&iinfo->i_location, &loc, in udf_read_inode()
1390 iinfo->i_strat4096 = 0; in udf_read_inode()
1392 iinfo->i_strat4096 = 1; in udf_read_inode()
1394 iinfo->i_alloc_type = le16_to_cpu(fe->icbTag.flags) & in udf_read_inode()
1396 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_SHORT && in udf_read_inode()
1397 iinfo->i_alloc_type != ICBTAG_FLAG_AD_LONG && in udf_read_inode()
1398 iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { in udf_read_inode()
1402 iinfo->i_unique = 0; in udf_read_inode()
1403 iinfo->i_lenEAttr = 0; in udf_read_inode()
1404 iinfo->i_lenExtents = 0; in udf_read_inode()
1405 iinfo->i_lenAlloc = 0; in udf_read_inode()
1406 iinfo->i_next_alloc_block = 0; in udf_read_inode()
1407 iinfo->i_next_alloc_goal = 0; in udf_read_inode()
1409 iinfo->i_efe = 1; in udf_read_inode()
1410 iinfo->i_use = 0; in udf_read_inode()
1415 memcpy(iinfo->i_ext.i_data, in udf_read_inode()
1419 iinfo->i_efe = 0; in udf_read_inode()
1420 iinfo->i_use = 0; in udf_read_inode()
1424 memcpy(iinfo->i_ext.i_data, in udf_read_inode()
1428 iinfo->i_efe = 0; in udf_read_inode()
1429 iinfo->i_use = 1; in udf_read_inode()
1430 iinfo->i_lenAlloc = le32_to_cpu( in udf_read_inode()
1437 memcpy(iinfo->i_ext.i_data, in udf_read_inode()
1468 iinfo->i_extraPerms = le32_to_cpu(fe->permissions) & ~FE_MAPPED_PERMS; in udf_read_inode()
1483 iinfo->i_lenExtents = inode->i_size; in udf_read_inode()
1485 if (iinfo->i_efe == 0) { in udf_read_inode()
1493 iinfo->i_unique = le64_to_cpu(fe->uniqueID); in udf_read_inode()
1494 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); in udf_read_inode()
1495 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs); in udf_read_inode()
1496 iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint); in udf_read_inode()
1497 iinfo->i_streamdir = 0; in udf_read_inode()
1498 iinfo->i_lenStreams = 0; in udf_read_inode()
1505 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime); in udf_read_inode()
1508 iinfo->i_unique = le64_to_cpu(efe->uniqueID); in udf_read_inode()
1509 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); in udf_read_inode()
1510 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs); in udf_read_inode()
1511 iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint); in udf_read_inode()
1514 iinfo->i_streamdir = (efe->streamDirectoryICB.extLength != 0); in udf_read_inode()
1515 iinfo->i_locStreamdir = in udf_read_inode()
1517 iinfo->i_lenStreams = le64_to_cpu(efe->objectSize); in udf_read_inode()
1518 if (iinfo->i_lenStreams >= inode->i_size) in udf_read_inode()
1519 iinfo->i_lenStreams -= inode->i_size; in udf_read_inode()
1521 iinfo->i_lenStreams = 0; in udf_read_inode()
1523 inode->i_generation = iinfo->i_unique; in udf_read_inode()
1529 if (iinfo->i_lenEAttr > bs || iinfo->i_lenAlloc > bs) in udf_read_inode()
1532 if (udf_file_entry_alloc_offset(inode) + iinfo->i_lenAlloc > bs) in udf_read_inode()
1535 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_read_inode()
1540 if (iinfo->i_lenAlloc != inode->i_size) in udf_read_inode()
1558 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_read_inode()
1617 struct udf_inode_info *iinfo = UDF_I(inode); in udf_alloc_i_data() local
1618 iinfo->i_ext.i_data = kmalloc(size, GFP_KERNEL); in udf_alloc_i_data()
1619 if (!iinfo->i_ext.i_data) in udf_alloc_i_data()
1645 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_extra_perms() local
1651 iinfo->i_extraPerms &= ~FE_DELETE_PERMS; in udf_update_extra_perms()
1653 iinfo->i_extraPerms |= FE_PERM_U_DELETE; in udf_update_extra_perms()
1655 iinfo->i_extraPerms |= FE_PERM_G_DELETE; in udf_update_extra_perms()
1657 iinfo->i_extraPerms |= FE_PERM_O_DELETE; in udf_update_extra_perms()
1670 static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec64 time) in udf_adjust_time() argument
1672 if (iinfo->i_crtime.tv_sec > time.tv_sec || in udf_adjust_time()
1673 (iinfo->i_crtime.tv_sec == time.tv_sec && in udf_adjust_time()
1674 iinfo->i_crtime.tv_nsec > time.tv_nsec)) in udf_adjust_time()
1675 iinfo->i_crtime = time; in udf_adjust_time()
1690 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_inode() local
1693 udf_get_lb_pblock(inode->i_sb, &iinfo->i_location, 0)); in udf_update_inode()
1704 if (iinfo->i_use) { in udf_update_inode()
1708 use->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1710 iinfo->i_ext.i_data, inode->i_sb->s_blocksize - in udf_update_inode()
1732 udfperms |= iinfo->i_extraPerms; in udf_update_inode()
1767 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_update_inode()
1774 if (iinfo->i_efe == 0) { in udf_update_inode()
1776 iinfo->i_ext.i_data, in udf_update_inode()
1787 fe->uniqueID = cpu_to_le64(iinfo->i_unique); in udf_update_inode()
1788 fe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); in udf_update_inode()
1789 fe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1790 fe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); in udf_update_inode()
1795 iinfo->i_ext.i_data, in udf_update_inode()
1799 cpu_to_le64(inode->i_size + iinfo->i_lenStreams); in udf_update_inode()
1802 if (iinfo->i_streamdir) { in udf_update_inode()
1806 cpu_to_lelb(iinfo->i_locStreamdir); in udf_update_inode()
1811 udf_adjust_time(iinfo, inode->i_atime); in udf_update_inode()
1812 udf_adjust_time(iinfo, inode->i_mtime); in udf_update_inode()
1813 udf_adjust_time(iinfo, inode->i_ctime); in udf_update_inode()
1817 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime); in udf_update_inode()
1824 efe->uniqueID = cpu_to_le64(iinfo->i_unique); in udf_update_inode()
1825 efe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); in udf_update_inode()
1826 efe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1827 efe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); in udf_update_inode()
1833 if (iinfo->i_strat4096) { in udf_update_inode()
1842 if (iinfo->i_use) in udf_update_inode()
1859 icbflags = iinfo->i_alloc_type | in udf_update_inode()
1874 iinfo->i_location.logicalBlockNum); in udf_update_inode()
1875 crclen += iinfo->i_lenEAttr + iinfo->i_lenAlloc - sizeof(struct tag); in udf_update_inode()
2004 struct udf_inode_info *iinfo = UDF_I(inode); in __udf_add_aext() local
2008 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in __udf_add_aext()
2010 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in __udf_add_aext()
2016 WARN_ON(iinfo->i_lenAlloc != in __udf_add_aext()
2028 iinfo->i_lenAlloc += adsize; in __udf_add_aext()
2088 struct udf_inode_info *iinfo = UDF_I(inode); in udf_write_aext() local
2091 ptr = iinfo->i_ext.i_data + epos->offset - in udf_write_aext()
2093 iinfo->i_lenEAttr; in udf_write_aext()
2097 switch (iinfo->i_alloc_type) { in udf_write_aext()
2178 struct udf_inode_info *iinfo = UDF_I(inode); in udf_current_aext() local
2183 ptr = iinfo->i_ext.i_data + epos->offset - in udf_current_aext()
2185 iinfo->i_lenEAttr; in udf_current_aext()
2187 iinfo->i_lenAlloc; in udf_current_aext()
2197 switch (iinfo->i_alloc_type) { in udf_current_aext()
2205 iinfo->i_location.partitionReferenceNum; in udf_current_aext()
2217 udf_debug("alloc_type = %u unsupported\n", iinfo->i_alloc_type); in udf_current_aext()
2251 struct udf_inode_info *iinfo; in udf_delete_aext() local
2260 iinfo = UDF_I(inode); in udf_delete_aext()
2261 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in udf_delete_aext()
2263 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in udf_delete_aext()
2290 iinfo->i_lenAlloc -= (adsize * 2); in udf_delete_aext()
2307 iinfo->i_lenAlloc -= adsize; in udf_delete_aext()
2336 struct udf_inode_info *iinfo; in inode_bmap() local
2338 iinfo = UDF_I(inode); in inode_bmap()
2341 pos->block = iinfo->i_location; in inode_bmap()
2349 iinfo->i_lenExtents = lbcount; in inode_bmap()