Lines Matching refs:iinfo

73 	struct udf_inode_info *iinfo = UDF_I(inode);
75 if (iinfo->cached_extent.lstart != -1) {
76 brelse(iinfo->cached_extent.epos.bh);
77 iinfo->cached_extent.lstart = -1;
84 struct udf_inode_info *iinfo = UDF_I(inode);
86 spin_lock(&iinfo->i_extent_cache_lock);
88 spin_unlock(&iinfo->i_extent_cache_lock);
95 struct udf_inode_info *iinfo = UDF_I(inode);
98 spin_lock(&iinfo->i_extent_cache_lock);
99 if ((iinfo->cached_extent.lstart <= bcount) &&
100 (iinfo->cached_extent.lstart != -1)) {
102 *lbcount = iinfo->cached_extent.lstart;
103 memcpy(pos, &iinfo->cached_extent.epos,
109 spin_unlock(&iinfo->i_extent_cache_lock);
117 struct udf_inode_info *iinfo = UDF_I(inode);
119 spin_lock(&iinfo->i_extent_cache_lock);
124 memcpy(&iinfo->cached_extent.epos, pos, sizeof(*pos));
125 iinfo->cached_extent.lstart = estart;
126 switch (iinfo->i_alloc_type) {
128 iinfo->cached_extent.epos.offset -= sizeof(struct short_ad);
131 iinfo->cached_extent.epos.offset -= sizeof(struct long_ad);
134 spin_unlock(&iinfo->i_extent_cache_lock);
139 struct udf_inode_info *iinfo = UDF_I(inode);
148 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB &&
149 inode->i_size != iinfo->i_lenExtents) {
154 (unsigned long long)iinfo->i_lenExtents);
160 kfree(iinfo->i_data);
161 iinfo->i_data = NULL;
171 struct udf_inode_info *iinfo = UDF_I(inode);
176 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) {
177 down_write(&iinfo->i_data_sem);
180 up_write(&iinfo->i_data_sem);
258 struct udf_inode_info *iinfo = UDF_I(inode);
262 if (!iinfo->i_lenAlloc) {
264 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT;
266 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG;
269 up_write(&iinfo->i_data_sem);
277 up_write(&iinfo->i_data_sem);
285 memset(kaddr + iinfo->i_lenAlloc, 0x00,
286 PAGE_SIZE - iinfo->i_lenAlloc);
287 memcpy(kaddr, iinfo->i_data + iinfo->i_lenEAttr,
288 iinfo->i_lenAlloc);
293 down_write(&iinfo->i_data_sem);
294 memset(iinfo->i_data + iinfo->i_lenEAttr, 0x00,
295 iinfo->i_lenAlloc);
296 iinfo->i_lenAlloc = 0;
298 iinfo->i_alloc_type = ICBTAG_FLAG_AD_SHORT;
300 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG;
305 up_write(&iinfo->i_data_sem);
310 down_write(&iinfo->i_data_sem);
312 memcpy(iinfo->i_data + iinfo->i_lenEAttr, kaddr, inode->i_size);
315 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
317 iinfo->i_lenAlloc = inode->i_size;
318 up_write(&iinfo->i_data_sem);
339 struct udf_inode_info *iinfo = UDF_I(inode);
347 iinfo->i_alloc_type = alloctype;
354 iinfo->i_location.partitionReferenceNum,
355 iinfo->i_location.logicalBlockNum, err);
359 iinfo->i_location.partitionReferenceNum,
378 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
385 iinfo->i_alloc_type = alloctype;
393 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
400 memset(iinfo->i_data + iinfo->i_lenEAttr, 0, iinfo->i_lenAlloc);
401 iinfo->i_lenAlloc = 0;
404 iinfo->i_location.partitionReferenceNum;
405 iinfo->i_lenExtents = inode->i_size;
407 epos.block = iinfo->i_location;
422 struct udf_inode_info *iinfo;
433 iinfo = UDF_I(inode);
435 down_write(&iinfo->i_data_sem);
436 if (block == iinfo->i_next_alloc_block + 1) {
437 iinfo->i_next_alloc_block++;
438 iinfo->i_next_alloc_goal++;
445 if (((loff_t)block) << inode->i_blkbits >= iinfo->i_lenExtents)
457 up_write(&iinfo->i_data_sem);
496 struct udf_inode_info *iinfo;
504 iinfo = UDF_I(inode);
511 iinfo->i_lenExtents =
512 (iinfo->i_lenExtents + sb->s_blocksize - 1) &
580 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT)
582 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG)
628 struct udf_inode_info *iinfo = UDF_I(inode);
633 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT)
635 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG)
682 iinfo->i_lenExtents = newsize;
701 struct udf_inode_info *iinfo = UDF_I(inode);
702 udf_pblk_t goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
709 prev_epos.block = iinfo->i_location;
850 if (iinfo->i_next_alloc_block == block)
851 goal = iinfo->i_next_alloc_goal;
855 goal = iinfo->i_location.logicalBlockNum + 1;
859 iinfo->i_location.partitionReferenceNum,
866 iinfo->i_lenExtents += inode->i_sb->s_blocksize;
893 iinfo->i_location.partitionReferenceNum, 0);
899 iinfo->i_next_alloc_block = block;
900 iinfo->i_next_alloc_goal = newblocknum;
1222 struct udf_inode_info *iinfo;
1231 iinfo = UDF_I(inode);
1233 down_write(&iinfo->i_data_sem);
1234 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
1240 down_write(&iinfo->i_data_sem);
1242 iinfo->i_lenAlloc = newsize;
1248 up_write(&iinfo->i_data_sem);
1252 up_write(&iinfo->i_data_sem);
1255 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
1256 down_write(&iinfo->i_data_sem);
1258 memset(iinfo->i_data + iinfo->i_lenEAttr + newsize,
1261 iinfo->i_lenAlloc = newsize;
1263 up_write(&iinfo->i_data_sem);
1271 down_write(&iinfo->i_data_sem);
1274 up_write(&iinfo->i_data_sem);
1300 struct udf_inode_info *iinfo = UDF_I(inode);
1302 struct kernel_lb_addr *iloc = &iinfo->i_location;
1364 memcpy(&iinfo->i_location, &loc,
1384 iinfo->i_strat4096 = 0;
1386 iinfo->i_strat4096 = 1;
1388 iinfo->i_alloc_type = le16_to_cpu(fe->icbTag.flags) &
1390 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_SHORT &&
1391 iinfo->i_alloc_type != ICBTAG_FLAG_AD_LONG &&
1392 iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) {
1396 iinfo->i_hidden = hidden_inode;
1397 iinfo->i_unique = 0;
1398 iinfo->i_lenEAttr = 0;
1399 iinfo->i_lenExtents = 0;
1400 iinfo->i_lenAlloc = 0;
1401 iinfo->i_next_alloc_block = 0;
1402 iinfo->i_next_alloc_goal = 0;
1404 iinfo->i_efe = 1;
1405 iinfo->i_use = 0;
1410 memcpy(iinfo->i_data,
1414 iinfo->i_efe = 0;
1415 iinfo->i_use = 0;
1419 memcpy(iinfo->i_data,
1423 iinfo->i_efe = 0;
1424 iinfo->i_use = 1;
1425 iinfo->i_lenAlloc = le32_to_cpu(
1432 memcpy(iinfo->i_data,
1463 iinfo->i_extraPerms = le32_to_cpu(fe->permissions) & ~FE_MAPPED_PERMS;
1478 iinfo->i_lenExtents = inode->i_size;
1480 if (iinfo->i_efe == 0) {
1488 iinfo->i_unique = le64_to_cpu(fe->uniqueID);
1489 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
1490 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs);
1491 iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint);
1492 iinfo->i_streamdir = 0;
1493 iinfo->i_lenStreams = 0;
1500 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime);
1503 iinfo->i_unique = le64_to_cpu(efe->uniqueID);
1504 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);
1505 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs);
1506 iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint);
1509 iinfo->i_streamdir = (efe->streamDirectoryICB.extLength != 0);
1510 iinfo->i_locStreamdir =
1512 iinfo->i_lenStreams = le64_to_cpu(efe->objectSize);
1513 if (iinfo->i_lenStreams >= inode->i_size)
1514 iinfo->i_lenStreams -= inode->i_size;
1516 iinfo->i_lenStreams = 0;
1518 inode->i_generation = iinfo->i_unique;
1524 if (iinfo->i_lenEAttr > bs || iinfo->i_lenAlloc > bs)
1527 if (udf_file_entry_alloc_offset(inode) + iinfo->i_lenAlloc > bs)
1530 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
1535 if (iinfo->i_lenAlloc != inode->i_size)
1553 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)
1612 struct udf_inode_info *iinfo = UDF_I(inode);
1613 iinfo->i_data = kmalloc(size, GFP_KERNEL);
1614 if (!iinfo->i_data)
1640 struct udf_inode_info *iinfo = UDF_I(inode);
1646 iinfo->i_extraPerms &= ~FE_DELETE_PERMS;
1648 iinfo->i_extraPerms |= FE_PERM_U_DELETE;
1650 iinfo->i_extraPerms |= FE_PERM_G_DELETE;
1652 iinfo->i_extraPerms |= FE_PERM_O_DELETE;
1665 static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec64 time)
1667 if (iinfo->i_crtime.tv_sec > time.tv_sec ||
1668 (iinfo->i_crtime.tv_sec == time.tv_sec &&
1669 iinfo->i_crtime.tv_nsec > time.tv_nsec))
1670 iinfo->i_crtime = time;
1685 struct udf_inode_info *iinfo = UDF_I(inode);
1688 udf_get_lb_pblock(inode->i_sb, &iinfo->i_location, 0));
1699 if (iinfo->i_use) {
1703 use->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc);
1705 iinfo->i_data, inode->i_sb->s_blocksize -
1727 udfperms |= iinfo->i_extraPerms;
1733 if (iinfo->i_hidden)
1766 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)
1773 if (iinfo->i_efe == 0) {
1775 iinfo->i_data,
1786 fe->uniqueID = cpu_to_le64(iinfo->i_unique);
1787 fe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr);
1788 fe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc);
1789 fe->checkpoint = cpu_to_le32(iinfo->i_checkpoint);
1794 iinfo->i_data,
1798 cpu_to_le64(inode->i_size + iinfo->i_lenStreams);
1801 if (iinfo->i_streamdir) {
1805 cpu_to_lelb(iinfo->i_locStreamdir);
1810 udf_adjust_time(iinfo, inode->i_atime);
1811 udf_adjust_time(iinfo, inode->i_mtime);
1812 udf_adjust_time(iinfo, inode->i_ctime);
1816 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime);
1823 efe->uniqueID = cpu_to_le64(iinfo->i_unique);
1824 efe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr);
1825 efe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc);
1826 efe->checkpoint = cpu_to_le32(iinfo->i_checkpoint);
1832 if (iinfo->i_strat4096) {
1841 if (iinfo->i_use)
1858 icbflags = iinfo->i_alloc_type |
1873 iinfo->i_location.logicalBlockNum);
1874 crclen += iinfo->i_lenEAttr + iinfo->i_lenAlloc - sizeof(struct tag);
2008 struct udf_inode_info *iinfo = UDF_I(inode);
2012 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT)
2014 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG)
2020 WARN_ON(iinfo->i_lenAlloc !=
2032 iinfo->i_lenAlloc += adsize;
2092 struct udf_inode_info *iinfo = UDF_I(inode);
2095 ptr = iinfo->i_data + epos->offset -
2097 iinfo->i_lenEAttr;
2101 switch (iinfo->i_alloc_type) {
2182 struct udf_inode_info *iinfo = UDF_I(inode);
2187 ptr = iinfo->i_data + epos->offset -
2189 iinfo->i_lenEAttr;
2191 iinfo->i_lenAlloc;
2201 switch (iinfo->i_alloc_type) {
2209 iinfo->i_location.partitionReferenceNum;
2221 udf_debug("alloc_type = %u unsupported\n", iinfo->i_alloc_type);
2256 struct udf_inode_info *iinfo;
2265 iinfo = UDF_I(inode);
2266 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_SHORT)
2268 else if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_LONG)
2295 iinfo->i_lenAlloc -= (adsize * 2);
2312 iinfo->i_lenAlloc -= adsize;
2341 struct udf_inode_info *iinfo;
2343 iinfo = UDF_I(inode);
2346 pos->block = iinfo->i_location;
2354 iinfo->i_lenExtents = lbcount;