FIX: ext4_extent.c failed to be compiled.
[lwext4.git] / lwext4 / ext4_inode.c
index 3bf20e08f879a616869662cec5aeb13f9f336183..8ee76f8b02cdb7d8ba67c68faa277f7801753f93 100644 (file)
@@ -108,6 +108,31 @@ void ext4_inode_set_size(struct ext4_inode *inode, uint64_t size)
        inode->size_hi = to_le32(size >> 32);
 }
 
+uint32_t
+ext4_inode_get_checksum(struct ext4_sblock *sb, struct ext4_inode *inode)
+{
+       uint16_t inode_size = ext4_get16(sb, inode_size);
+       uint32_t v = to_le16(inode->osd2.linux2.checksum_lo);
+
+       if (inode_size > EXT4_GOOD_OLD_INODE_SIZE)
+               v |= ((uint32_t)to_le16(inode->checksum_hi)) << 16;
+
+       return v;
+}
+
+void
+ext4_inode_set_checksum(struct ext4_sblock *sb, struct ext4_inode *inode,
+                       uint32_t checksum)
+{
+       uint16_t inode_size = ext4_get16(sb, inode_size);
+       inode->osd2.linux2.checksum_lo =
+               to_le16((checksum << 16) >> 16);
+
+       if (inode_size > EXT4_GOOD_OLD_INODE_SIZE)
+               inode->checksum_hi = to_le16(checksum >> 16);
+
+}
+
 uint32_t ext4_inode_get_access_time(struct ext4_inode *inode)
 {
        return to_le32(inode->access_time);
@@ -246,6 +271,16 @@ void ext4_inode_set_generation(struct ext4_inode *inode, uint32_t gen)
        inode->generation = to_le32(gen);
 }
 
+uint16_t ext4_inode_get_extra_isize(struct ext4_inode *inode)
+{
+       return to_le16(inode->extra_isize);
+}
+
+void ext4_inode_set_extra_isize(struct ext4_inode *inode, uint16_t size)
+{
+       inode->extra_isize = to_le16(size);
+}
+
 uint64_t ext4_inode_get_file_acl(struct ext4_inode *inode,
                                 struct ext4_sblock *sb)
 {
@@ -327,7 +362,8 @@ bool ext4_inode_can_truncate(struct ext4_sblock *sb, struct ext4_inode *inode)
                return false;
 
        if ((ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_FILE)) ||
-           (ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_DIRECTORY)))
+           (ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_DIRECTORY)) ||
+           (ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_SOFTLINK)))
                return true;
 
        return false;