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