Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

udf: Init/maintain file entry checkpoint field

In accordance with ECMA 1.67 Part 4, 14.9.15, the checkpoint field
should be initialized to 1 at creation. (Zero is *not* a valid value.)

Signed-off-by: Steven P. Nickel <snickel@focusinfo.com>
Signed-off-by: Jan Kara <jack@suse.cz>

authored by

Steve Nickel and committed by
Jan Kara
d5e2cf07 ac1334bf

+6
+1
fs/udf/ialloc.c
··· 116 116 iinfo->i_lenEAttr = 0; 117 117 iinfo->i_lenAlloc = 0; 118 118 iinfo->i_use = 0; 119 + iinfo->i_checkpoint = 1; 119 120 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_AD_IN_ICB)) 120 121 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; 121 122 else if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD))
+4
fs/udf/inode.c
··· 1358 1358 iinfo->i_unique = le64_to_cpu(fe->uniqueID); 1359 1359 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); 1360 1360 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs); 1361 + iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint); 1361 1362 offset = sizeof(struct fileEntry) + iinfo->i_lenEAttr; 1362 1363 } else { 1363 1364 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) << ··· 1380 1379 iinfo->i_unique = le64_to_cpu(efe->uniqueID); 1381 1380 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); 1382 1381 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs); 1382 + iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint); 1383 1383 offset = sizeof(struct extendedFileEntry) + 1384 1384 iinfo->i_lenEAttr; 1385 1385 } ··· 1609 1607 fe->uniqueID = cpu_to_le64(iinfo->i_unique); 1610 1608 fe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); 1611 1609 fe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); 1610 + fe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); 1612 1611 fe->descTag.tagIdent = cpu_to_le16(TAG_IDENT_FE); 1613 1612 crclen = sizeof(struct fileEntry); 1614 1613 } else { ··· 1649 1646 efe->uniqueID = cpu_to_le64(iinfo->i_unique); 1650 1647 efe->lengthExtendedAttr = cpu_to_le32(iinfo->i_lenEAttr); 1651 1648 efe->lengthAllocDescs = cpu_to_le32(iinfo->i_lenAlloc); 1649 + efe->checkpoint = cpu_to_le32(iinfo->i_checkpoint); 1652 1650 efe->descTag.tagIdent = cpu_to_le16(TAG_IDENT_EFE); 1653 1651 crclen = sizeof(struct extendedFileEntry); 1654 1652 }
+1
fs/udf/udf_i.h
··· 23 23 __u64 i_lenExtents; 24 24 __u32 i_next_alloc_block; 25 25 __u32 i_next_alloc_goal; 26 + __u32 i_checkpoint; 26 27 unsigned i_alloc_type : 3; 27 28 unsigned i_efe : 1; /* extendedFileEntry */ 28 29 unsigned i_use : 1; /* unallocSpaceEntry */