Lines Matching refs:iinfo

72 	struct udf_inode_info *iinfo = UDF_I(inode);  in __udf_clear_extent_cache()  local
74 if (iinfo->cached_extent.lstart != -1) { in __udf_clear_extent_cache()
75 brelse(iinfo->cached_extent.epos.bh); in __udf_clear_extent_cache()
76 iinfo->cached_extent.lstart = -1; in __udf_clear_extent_cache()
83 struct udf_inode_info *iinfo = UDF_I(inode); in udf_clear_extent_cache() local
85 spin_lock(&iinfo->i_extent_cache_lock); in udf_clear_extent_cache()
87 spin_unlock(&iinfo->i_extent_cache_lock); in udf_clear_extent_cache()
94 struct udf_inode_info *iinfo = UDF_I(inode); in udf_read_extent_cache() local
97 spin_lock(&iinfo->i_extent_cache_lock); in udf_read_extent_cache()
98 if ((iinfo->cached_extent.lstart <= bcount) && in udf_read_extent_cache()
99 (iinfo->cached_extent.lstart != -1)) { in udf_read_extent_cache()
101 *lbcount = iinfo->cached_extent.lstart; in udf_read_extent_cache()
102 memcpy(pos, &iinfo->cached_extent.epos, in udf_read_extent_cache()
108 spin_unlock(&iinfo->i_extent_cache_lock); in udf_read_extent_cache()
116 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_extent_cache() local
118 spin_lock(&iinfo->i_extent_cache_lock); in udf_update_extent_cache()
123 memcpy(&iinfo->cached_extent.epos, pos, sizeof(*pos)); in udf_update_extent_cache()
124 iinfo->cached_extent.lstart = estart; in udf_update_extent_cache()
125 switch (iinfo->i_alloc_type) { in udf_update_extent_cache()
127 iinfo->cached_extent.epos.offset -= sizeof(struct short_ad); in udf_update_extent_cache()
130 iinfo->cached_extent.epos.offset -= sizeof(struct long_ad); in udf_update_extent_cache()
133 spin_unlock(&iinfo->i_extent_cache_lock); in udf_update_extent_cache()
138 struct udf_inode_info *iinfo = UDF_I(inode); in udf_evict_inode() local
147 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB && in udf_evict_inode()
148 inode->i_size != iinfo->i_lenExtents) { in udf_evict_inode()
153 (unsigned long long)iinfo->i_lenExtents); in udf_evict_inode()
159 kfree(iinfo->i_data); in udf_evict_inode()
160 iinfo->i_data = NULL; in udf_evict_inode()
170 struct udf_inode_info *iinfo = UDF_I(inode); in udf_write_failed() local
175 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { in udf_write_failed()
176 down_write(&iinfo->i_data_sem); in udf_write_failed()
179 up_write(&iinfo->i_data_sem); in udf_write_failed()
188 struct udf_inode_info *iinfo = UDF_I(inode); in udf_adinicb_writepage() local
192 memcpy_from_file_folio(iinfo->i_data + iinfo->i_lenEAttr, folio, 0, in udf_adinicb_writepage()
204 struct udf_inode_info *iinfo = UDF_I(inode); in udf_writepages() local
206 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) in udf_writepages()
215 struct udf_inode_info *iinfo = UDF_I(inode); in udf_adinicb_readpage() local
219 memcpy(kaddr, iinfo->i_data + iinfo->i_lenEAttr, isize); in udf_adinicb_readpage()
228 struct udf_inode_info *iinfo = UDF_I(file_inode(file)); in udf_read_folio() local
230 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_read_folio()
240 struct udf_inode_info *iinfo = UDF_I(rac->mapping->host); in udf_readahead() local
246 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_readahead()
256 struct udf_inode_info *iinfo = UDF_I(file_inode(file)); in udf_write_begin() local
260 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { in udf_write_begin()
317 struct udf_inode_info *iinfo = UDF_I(mapping->host); in udf_bmap() local
319 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_bmap()
345 struct udf_inode_info *iinfo = UDF_I(inode); in udf_expand_file_adinicb() local
349 if (!iinfo->i_lenAlloc) { in udf_expand_file_adinicb()
350 down_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
352 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT; in udf_expand_file_adinicb()
354 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; in udf_expand_file_adinicb()
355 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
366 down_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
367 memset(iinfo->i_data + iinfo->i_lenEAttr, 0x00, in udf_expand_file_adinicb()
368 iinfo->i_lenAlloc); in udf_expand_file_adinicb()
369 iinfo->i_lenAlloc = 0; in udf_expand_file_adinicb()
371 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT; in udf_expand_file_adinicb()
373 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; in udf_expand_file_adinicb()
376 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
381 down_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
382 memcpy_to_page(page, 0, iinfo->i_data + iinfo->i_lenEAttr, in udf_expand_file_adinicb()
385 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; in udf_expand_file_adinicb()
386 iinfo->i_lenAlloc = inode->i_size; in udf_expand_file_adinicb()
387 up_write(&iinfo->i_data_sem); in udf_expand_file_adinicb()
411 struct udf_inode_info *iinfo = UDF_I(inode); in udf_map_block() local
413 if (WARN_ON_ONCE(iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)) in udf_map_block()
423 down_read(&iinfo->i_data_sem); in udf_map_block()
430 up_read(&iinfo->i_data_sem); in udf_map_block()
436 down_write(&iinfo->i_data_sem); in udf_map_block()
441 if (((loff_t)map->lblk) << inode->i_blkbits >= iinfo->i_lenExtents) in udf_map_block()
445 up_write(&iinfo->i_data_sem); in udf_map_block()
508 struct udf_inode_info *iinfo; in udf_do_extend_file() local
516 iinfo = UDF_I(inode); in udf_do_extend_file()
523 iinfo->i_lenExtents = in udf_do_extend_file()
524 (iinfo->i_lenExtents + sb->s_blocksize - 1) & in udf_do_extend_file()
561 iinfo->i_lenExtents += add; in udf_do_extend_file()
580 iinfo->i_lenExtents += add; in udf_do_extend_file()
590 iinfo->i_lenExtents += new_block_bytes; 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()
644 struct udf_inode_info *iinfo = UDF_I(inode); in udf_extend_file() local
649 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in udf_extend_file()
651 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in udf_extend_file()
656 down_write(&iinfo->i_data_sem); in udf_extend_file()
701 up_write(&iinfo->i_data_sem); in udf_extend_file()
717 struct udf_inode_info *iinfo = UDF_I(inode); in inode_getblk() local
718 udf_pblk_t goal = 0, pgoal = iinfo->i_location.logicalBlockNum; in inode_getblk()
724 prev_epos.block = iinfo->i_location; in inode_getblk()
786 iinfo->i_lenExtents = in inode_getblk()
787 ALIGN(iinfo->i_lenExtents, in inode_getblk()
866 if (iinfo->i_next_alloc_block == map->lblk) in inode_getblk()
867 goal = iinfo->i_next_alloc_goal; in inode_getblk()
871 goal = iinfo->i_location.logicalBlockNum + 1; in inode_getblk()
875 iinfo->i_location.partitionReferenceNum, in inode_getblk()
880 iinfo->i_lenExtents += inode->i_sb->s_blocksize; in inode_getblk()
903 iinfo->i_location.partitionReferenceNum, 0); in inode_getblk()
909 iinfo->i_next_alloc_block = map->lblk + 1; in inode_getblk()
910 iinfo->i_next_alloc_goal = newblocknum + 1; in inode_getblk()
1245 struct udf_inode_info *iinfo; in udf_setsize() local
1255 iinfo = UDF_I(inode); in udf_setsize()
1257 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_setsize()
1260 down_write(&iinfo->i_data_sem); in udf_setsize()
1261 iinfo->i_lenAlloc = newsize; in udf_setsize()
1262 up_write(&iinfo->i_data_sem); in udf_setsize()
1275 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_setsize()
1276 down_write(&iinfo->i_data_sem); in udf_setsize()
1278 memset(iinfo->i_data + iinfo->i_lenEAttr + newsize, in udf_setsize()
1281 iinfo->i_lenAlloc = newsize; in udf_setsize()
1283 up_write(&iinfo->i_data_sem); in udf_setsize()
1291 down_write(&iinfo->i_data_sem); in udf_setsize()
1294 up_write(&iinfo->i_data_sem); in udf_setsize()
1322 struct udf_inode_info *iinfo = UDF_I(inode); in udf_read_inode() local
1324 struct kernel_lb_addr *iloc = &iinfo->i_location; in udf_read_inode()
1387 memcpy(&iinfo->i_location, &loc, in udf_read_inode()
1407 iinfo->i_strat4096 = 0; in udf_read_inode()
1409 iinfo->i_strat4096 = 1; in udf_read_inode()
1411 iinfo->i_alloc_type = le16_to_cpu(fe->icbTag.flags) & in udf_read_inode()
1413 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_SHORT && in udf_read_inode()
1414 iinfo->i_alloc_type != ICBTAG_FLAG_AD_LONG && in udf_read_inode()
1415 iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { in udf_read_inode()
1419 iinfo->i_hidden = hidden_inode; in udf_read_inode()
1420 iinfo->i_unique = 0; in udf_read_inode()
1421 iinfo->i_lenEAttr = 0; in udf_read_inode()
1422 iinfo->i_lenExtents = 0; in udf_read_inode()
1423 iinfo->i_lenAlloc = 0; in udf_read_inode()
1424 iinfo->i_next_alloc_block = 0; in udf_read_inode()
1425 iinfo->i_next_alloc_goal = 0; in udf_read_inode()
1427 iinfo->i_efe = 1; in udf_read_inode()
1428 iinfo->i_use = 0; in udf_read_inode()
1433 memcpy(iinfo->i_data, in udf_read_inode()
1437 iinfo->i_efe = 0; in udf_read_inode()
1438 iinfo->i_use = 0; in udf_read_inode()
1442 memcpy(iinfo->i_data, in udf_read_inode()
1446 iinfo->i_efe = 0; in udf_read_inode()
1447 iinfo->i_use = 1; in udf_read_inode()
1448 iinfo->i_lenAlloc = le32_to_cpu( in udf_read_inode()
1455 memcpy(iinfo->i_data, in udf_read_inode()
1486 iinfo->i_extraPerms = le32_to_cpu(fe->permissions) & ~FE_MAPPED_PERMS; in udf_read_inode()
1501 iinfo->i_lenExtents = inode->i_size; in udf_read_inode()
1503 if (iinfo->i_efe == 0) { in udf_read_inode()
1512 iinfo->i_unique = le64_to_cpu(fe->uniqueID); in udf_read_inode()
1513 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); in udf_read_inode()
1514 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs); in udf_read_inode()
1515 iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint); in udf_read_inode()
1516 iinfo->i_streamdir = 0; in udf_read_inode()
1517 iinfo->i_lenStreams = 0; in udf_read_inode()
1524 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime); in udf_read_inode()
1528 iinfo->i_unique = le64_to_cpu(efe->uniqueID); in udf_read_inode()
1529 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); in udf_read_inode()
1530 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs); in udf_read_inode()
1531 iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint); in udf_read_inode()
1534 iinfo->i_streamdir = (efe->streamDirectoryICB.extLength != 0); in udf_read_inode()
1535 iinfo->i_locStreamdir = in udf_read_inode()
1537 iinfo->i_lenStreams = le64_to_cpu(efe->objectSize); in udf_read_inode()
1538 if (iinfo->i_lenStreams >= inode->i_size) in udf_read_inode()
1539 iinfo->i_lenStreams -= inode->i_size; in udf_read_inode()
1541 iinfo->i_lenStreams = 0; in udf_read_inode()
1543 inode->i_generation = iinfo->i_unique; in udf_read_inode()
1549 if (iinfo->i_lenEAttr > bs || iinfo->i_lenAlloc > bs) in udf_read_inode()
1552 if (udf_file_entry_alloc_offset(inode) + iinfo->i_lenAlloc > bs) in udf_read_inode()
1555 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_read_inode()
1560 if (iinfo->i_lenAlloc != inode->i_size) in udf_read_inode()
1634 struct udf_inode_info *iinfo = UDF_I(inode); in udf_alloc_i_data() local
1635 iinfo->i_data = kmalloc(size, GFP_KERNEL); in udf_alloc_i_data()
1636 if (!iinfo->i_data) in udf_alloc_i_data()
1662 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_extra_perms() local
1668 iinfo->i_extraPerms &= ~FE_DELETE_PERMS; in udf_update_extra_perms()
1670 iinfo->i_extraPerms |= FE_PERM_U_DELETE; in udf_update_extra_perms()
1672 iinfo->i_extraPerms |= FE_PERM_G_DELETE; in udf_update_extra_perms()
1674 iinfo->i_extraPerms |= FE_PERM_O_DELETE; in udf_update_extra_perms()
1687 static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec64 time) in udf_adjust_time() argument
1689 if (iinfo->i_crtime.tv_sec > time.tv_sec || in udf_adjust_time()
1690 (iinfo->i_crtime.tv_sec == time.tv_sec && in udf_adjust_time()
1691 iinfo->i_crtime.tv_nsec > time.tv_nsec)) in udf_adjust_time()
1692 iinfo->i_crtime = time; in udf_adjust_time()
1707 struct udf_inode_info *iinfo = UDF_I(inode); in udf_update_inode() local
1710 udf_get_lb_pblock(inode->i_sb, &iinfo->i_location, 0)); in udf_update_inode()
1721 if (iinfo->i_use) { in udf_update_inode()
1725 use->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1727 iinfo->i_data, inode->i_sb->s_blocksize - in udf_update_inode()
1749 udfperms |= iinfo->i_extraPerms; in udf_update_inode()
1755 if (iinfo->i_hidden) in udf_update_inode()
1788 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_update_inode()
1795 if (iinfo->i_efe == 0) { in udf_update_inode()
1797 iinfo->i_data, in udf_update_inode()
1808 fe->uniqueID = cpu_to_le64(iinfo->i_unique); in udf_update_inode()
1809 fe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); in udf_update_inode()
1810 fe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1811 fe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); in udf_update_inode()
1816 iinfo->i_data, in udf_update_inode()
1820 cpu_to_le64(inode->i_size + iinfo->i_lenStreams); in udf_update_inode()
1823 if (iinfo->i_streamdir) { in udf_update_inode()
1827 cpu_to_lelb(iinfo->i_locStreamdir); in udf_update_inode()
1832 udf_adjust_time(iinfo, inode->i_atime); in udf_update_inode()
1833 udf_adjust_time(iinfo, inode->i_mtime); in udf_update_inode()
1834 udf_adjust_time(iinfo, inode_get_ctime(inode)); in udf_update_inode()
1838 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime); in udf_update_inode()
1845 efe->uniqueID = cpu_to_le64(iinfo->i_unique); in udf_update_inode()
1846 efe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); in udf_update_inode()
1847 efe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); in udf_update_inode()
1848 efe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); in udf_update_inode()
1854 if (iinfo->i_strat4096) { in udf_update_inode()
1863 if (iinfo->i_use) in udf_update_inode()
1880 icbflags = iinfo->i_alloc_type | in udf_update_inode()
1895 iinfo->i_location.logicalBlockNum); in udf_update_inode()
1896 crclen += iinfo->i_lenEAttr + iinfo->i_lenAlloc - sizeof(struct tag); in udf_update_inode()
2030 struct udf_inode_info *iinfo = UDF_I(inode); in __udf_add_aext() local
2034 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in __udf_add_aext()
2036 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in __udf_add_aext()
2042 WARN_ON(iinfo->i_lenAlloc != in __udf_add_aext()
2054 iinfo->i_lenAlloc += adsize; in __udf_add_aext()
2114 struct udf_inode_info *iinfo = UDF_I(inode); in udf_write_aext() local
2117 ptr = iinfo->i_data + epos->offset - in udf_write_aext()
2119 iinfo->i_lenEAttr; in udf_write_aext()
2123 switch (iinfo->i_alloc_type) { in udf_write_aext()
2204 struct udf_inode_info *iinfo = UDF_I(inode); in udf_current_aext() local
2209 ptr = iinfo->i_data + epos->offset - in udf_current_aext()
2211 iinfo->i_lenEAttr; in udf_current_aext()
2213 iinfo->i_lenAlloc; in udf_current_aext()
2223 switch (iinfo->i_alloc_type) { in udf_current_aext()
2231 iinfo->i_location.partitionReferenceNum; in udf_current_aext()
2243 udf_debug("alloc_type = %u unsupported\n", iinfo->i_alloc_type); in udf_current_aext()
2278 struct udf_inode_info *iinfo; in udf_delete_aext() local
2287 iinfo = UDF_I(inode); in udf_delete_aext()
2288 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT) in udf_delete_aext()
2290 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG) in udf_delete_aext()
2317 iinfo->i_lenAlloc -= (adsize * 2); in udf_delete_aext()
2334 iinfo->i_lenAlloc -= adsize; in udf_delete_aext()
2363 struct udf_inode_info *iinfo; in inode_bmap() local
2365 iinfo = UDF_I(inode); in inode_bmap()
2368 pos->block = iinfo->i_location; in inode_bmap()
2376 iinfo->i_lenExtents = lbcount; in inode_bmap()