summaryrefslogtreecommitdiff
path: root/src/ext4_inode.c
diff options
context:
space:
mode:
authorKaho Ng <ngkaho1234@gmail.com>2016-06-30 05:17:33 +0800
committerKaho Ng <ngkaho1234@gmail.com>2016-06-30 05:40:06 +0800
commit0ac15f45592212176fb388cd51995c6cc53950ed (patch)
tree4cc4aeac7bbfcffa37fb22db1d0313f8ff482c2d /src/ext4_inode.c
parenta84a1b68d698d9a5cfa5efd55b057df7724996b2 (diff)
ext4: special inode creation support
Diffstat (limited to 'src/ext4_inode.c')
-rw-r--r--src/ext4_inode.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ext4_inode.c b/src/ext4_inode.c
index c64ddbc..513da60 100644
--- a/src/ext4_inode.c
+++ b/src/ext4_inode.c
@@ -328,6 +328,26 @@ void ext4_inode_set_indirect_block(struct ext4_inode *inode, uint32_t idx,
inode->blocks[idx + EXT4_INODE_INDIRECT_BLOCK] = to_le32(block);
}
+uint32_t ext4_inode_get_dev(struct ext4_inode *inode)
+{
+ uint32_t dev_0, dev_1;
+ dev_0 = ext4_inode_get_direct_block(inode, 0);
+ dev_1 = ext4_inode_get_direct_block(inode, 1);
+
+ if (dev_0)
+ return dev_0;
+ else
+ return dev_1;
+}
+
+void ext4_inode_set_dev(struct ext4_inode *inode, uint32_t dev)
+{
+ if (dev & ~0xFFFF)
+ ext4_inode_set_direct_block(inode, 1, dev);
+ else
+ ext4_inode_set_direct_block(inode, 0, dev);
+}
+
uint32_t ext4_inode_type(struct ext4_sblock *sb, struct ext4_inode *inode)
{
return (ext4_inode_get_mode(sb, inode) & EXT4_INODE_MODE_TYPE_MASK);