Loading fs/hpfs/anode.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -479,13 +479,13 @@ void hpfs_remove_fnode(struct super_block *s, fnode_secno fno) struct extended_attribute *ea; struct extended_attribute *ea; struct extended_attribute *ea_end; struct extended_attribute *ea_end; if (!(fnode = hpfs_map_fnode(s, fno, &bh))) return; if (!(fnode = hpfs_map_fnode(s, fno, &bh))) return; if (!fnode->dirflag) hpfs_remove_btree(s, &fnode->btree); if (!fnode_is_dir(fnode)) hpfs_remove_btree(s, &fnode->btree); else hpfs_remove_dtree(s, le32_to_cpu(fnode->u.external[0].disk_secno)); else hpfs_remove_dtree(s, le32_to_cpu(fnode->u.external[0].disk_secno)); ea_end = fnode_end_ea(fnode); ea_end = fnode_end_ea(fnode); for (ea = fnode_ea(fnode); ea < ea_end; ea = next_ea(ea)) for (ea = fnode_ea(fnode); ea < ea_end; ea = next_ea(ea)) if (ea_indirect(ea)) if (ea_indirect(ea)) hpfs_ea_remove(s, ea_sec(ea), ea_in_anode(ea), ea_len(ea)); hpfs_ea_remove(s, ea_sec(ea), ea_in_anode(ea), ea_len(ea)); hpfs_ea_ext_remove(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l)); hpfs_ea_ext_remove(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l)); brelse(bh); brelse(bh); hpfs_free_sectors(s, fno, 1); hpfs_free_sectors(s, fno, 1); } } fs/hpfs/dir.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) ret = -EIOERROR; ret = -EIOERROR; goto out; goto out; } } if (!fno->dirflag) { if (!fnode_is_dir(fno)) { e = 1; e = 1; hpfs_error(inode->i_sb, "not a directory, fnode %08lx", hpfs_error(inode->i_sb, "not a directory, fnode %08lx", (unsigned long)inode->i_ino); (unsigned long)inode->i_ino); Loading fs/hpfs/dnode.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1015,7 +1015,7 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno, kfree(name2); kfree(name2); return NULL; return NULL; } } if (!upf->dirflag) { if (!fnode_is_dir(upf)) { brelse(bh); brelse(bh); hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, le32_to_cpu(f->up)); hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, le32_to_cpu(f->up)); kfree(name2); kfree(name2); Loading fs/hpfs/ea.c +12 −12 Original line number Original line Diff line number Diff line Loading @@ -91,7 +91,7 @@ int hpfs_read_ea(struct super_block *s, struct fnode *fnode, char *key, } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { ea = (struct extended_attribute *)ex; ea = (struct extended_attribute *)ex; Loading Loading @@ -148,7 +148,7 @@ char *hpfs_get_ea(struct super_block *s, struct fnode *fnode, char *key, int *si } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { char ex[4 + 255 + 1 + 8]; char ex[4 + 255 + 1 + 8]; Loading Loading @@ -209,7 +209,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { char ex[4 + 255 + 1 + 8]; char ex[4 + 255 + 1 + 8]; Loading Loading @@ -276,7 +276,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, fnode->ea_size_l = cpu_to_le32(le16_to_cpu(fnode->ea_size_s)); fnode->ea_size_l = cpu_to_le32(le16_to_cpu(fnode->ea_size_s)); fnode->ea_size_s = cpu_to_le16(0); fnode->ea_size_s = cpu_to_le16(0); fnode->ea_secno = cpu_to_le32(n); fnode->ea_secno = cpu_to_le32(n); fnode->ea_anode = cpu_to_le32(0); fnode->flags &= ~FNODE_anode; mark_buffer_dirty(bh); mark_buffer_dirty(bh); brelse(bh); brelse(bh); } } Loading @@ -288,9 +288,9 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, secno q = hpfs_alloc_sector(s, fno, 1, 0); secno q = hpfs_alloc_sector(s, fno, 1, 0); if (!q) goto bail; if (!q) goto bail; fnode->ea_secno = cpu_to_le32(q); fnode->ea_secno = cpu_to_le32(q); fnode->ea_anode = 0; fnode->flags &= ~FNODE_anode; len++; len++; } else if (!fnode->ea_anode) { } else if (!fnode_in_anode(fnode)) { if (hpfs_alloc_if_possible(s, le32_to_cpu(fnode->ea_secno) + len)) { if (hpfs_alloc_if_possible(s, le32_to_cpu(fnode->ea_secno) + len)) { len++; len++; } else { } else { Loading @@ -310,7 +310,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, anode->u.external[0].length = cpu_to_le32(len); anode->u.external[0].length = cpu_to_le32(len); mark_buffer_dirty(bh); mark_buffer_dirty(bh); brelse(bh); brelse(bh); fnode->ea_anode = 1; fnode->flags |= FNODE_anode; fnode->ea_secno = cpu_to_le32(a_s);*/ fnode->ea_secno = cpu_to_le32(a_s);*/ secno new_sec; secno new_sec; int i; int i; Loading Loading @@ -338,7 +338,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, len = (pos + 511) >> 9; len = (pos + 511) >> 9; } } } } if (fnode->ea_anode) { if (fnode_in_anode(fnode)) { if (hpfs_add_sector_to_btree(s, le32_to_cpu(fnode->ea_secno), if (hpfs_add_sector_to_btree(s, le32_to_cpu(fnode->ea_secno), 0, len) != -1) { 0, len) != -1) { len++; len++; Loading @@ -351,16 +351,16 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, h[1] = strlen(key); h[1] = strlen(key); h[2] = size & 0xff; h[2] = size & 0xff; h[3] = size >> 8; h[3] = size >> 8; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l), 4, h)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l), 4, h)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l) + 4, h[1] + 1, key)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l) + 4, h[1] + 1, key)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l) + 5 + h[1], size, data)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l) + 5 + h[1], size, data)) goto bail; fnode->ea_size_l = cpu_to_le32(pos); fnode->ea_size_l = cpu_to_le32(pos); ret: ret: hpfs_i(inode)->i_ea_size += 5 + strlen(key) + size; hpfs_i(inode)->i_ea_size += 5 + strlen(key) + size; return; return; bail: bail: if (le32_to_cpu(fnode->ea_secno)) if (le32_to_cpu(fnode->ea_secno)) if (fnode->ea_anode) hpfs_truncate_btree(s, le32_to_cpu(fnode->ea_secno), 1, (le32_to_cpu(fnode->ea_size_l) + 511) >> 9); if (fnode_in_anode(fnode)) hpfs_truncate_btree(s, le32_to_cpu(fnode->ea_secno), 1, (le32_to_cpu(fnode->ea_size_l) + 511) >> 9); else hpfs_free_sectors(s, le32_to_cpu(fnode->ea_secno) + ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9), len - ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9)); else hpfs_free_sectors(s, le32_to_cpu(fnode->ea_secno) + ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9), len - ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9)); else fnode->ea_secno = fnode->ea_size_l = cpu_to_le32(0); else fnode->ea_secno = fnode->ea_size_l = cpu_to_le32(0); } } Loading fs/hpfs/hpfs.h +13 −19 Original line number Original line Diff line number Diff line Loading @@ -436,6 +436,7 @@ struct bplus_header #define FNODE_MAGIC 0xf7e40aae #define FNODE_MAGIC 0xf7e40aae enum {FNODE_anode = cpu_to_le16(2), FNODE_dir = cpu_to_le16(256)}; struct fnode struct fnode { { u32 magic; /* f7e4 0aae */ u32 magic; /* f7e4 0aae */ Loading @@ -451,26 +452,9 @@ struct fnode secno ea_secno; /* first sector of disk-resident ea's*/ secno ea_secno; /* first sector of disk-resident ea's*/ u16 ea_size_s; /* length of fnode-resident ea's */ u16 ea_size_s; /* length of fnode-resident ea's */ #ifdef __LITTLE_ENDIAN __le16 flags; /* bit 1 set -> ea_secno is an anode */ u8 flag0: 1; /* bit 8 set -> directory. first & only extent u8 ea_anode: 1; /* 1 -> ea_secno is an anode */ u8 flag234567: 6; #else u8 flag234567: 6; u8 ea_anode: 1; /* 1 -> ea_secno is an anode */ u8 flag0: 1; #endif #ifdef __LITTLE_ENDIAN u8 dirflag: 1; /* 1 -> directory. first & only extent points to dnode. */ u8 flag9012345: 7; #else u8 flag9012345: 7; u8 dirflag: 1; /* 1 -> directory. first & only extent points to dnode. */ points to dnode. */ #endif struct bplus_header btree; /* b+ tree, 8 extents or 12 subtrees */ struct bplus_header btree; /* b+ tree, 8 extents or 12 subtrees */ union { union { struct bplus_leaf_node external[8]; struct bplus_leaf_node external[8]; Loading @@ -492,6 +476,16 @@ struct fnode via fnode + ea_offs. I think.) */ via fnode + ea_offs. I think.) */ }; }; static inline bool fnode_in_anode(struct fnode *p) { return (p->flags & FNODE_anode) != 0; } static inline bool fnode_is_dir(struct fnode *p) { return (p->flags & FNODE_dir) != 0; } /* anode: 99.44% pure allocation tree */ /* anode: 99.44% pure allocation tree */ Loading Loading
fs/hpfs/anode.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -479,13 +479,13 @@ void hpfs_remove_fnode(struct super_block *s, fnode_secno fno) struct extended_attribute *ea; struct extended_attribute *ea; struct extended_attribute *ea_end; struct extended_attribute *ea_end; if (!(fnode = hpfs_map_fnode(s, fno, &bh))) return; if (!(fnode = hpfs_map_fnode(s, fno, &bh))) return; if (!fnode->dirflag) hpfs_remove_btree(s, &fnode->btree); if (!fnode_is_dir(fnode)) hpfs_remove_btree(s, &fnode->btree); else hpfs_remove_dtree(s, le32_to_cpu(fnode->u.external[0].disk_secno)); else hpfs_remove_dtree(s, le32_to_cpu(fnode->u.external[0].disk_secno)); ea_end = fnode_end_ea(fnode); ea_end = fnode_end_ea(fnode); for (ea = fnode_ea(fnode); ea < ea_end; ea = next_ea(ea)) for (ea = fnode_ea(fnode); ea < ea_end; ea = next_ea(ea)) if (ea_indirect(ea)) if (ea_indirect(ea)) hpfs_ea_remove(s, ea_sec(ea), ea_in_anode(ea), ea_len(ea)); hpfs_ea_remove(s, ea_sec(ea), ea_in_anode(ea), ea_len(ea)); hpfs_ea_ext_remove(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l)); hpfs_ea_ext_remove(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l)); brelse(bh); brelse(bh); hpfs_free_sectors(s, fno, 1); hpfs_free_sectors(s, fno, 1); } }
fs/hpfs/dir.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) ret = -EIOERROR; ret = -EIOERROR; goto out; goto out; } } if (!fno->dirflag) { if (!fnode_is_dir(fno)) { e = 1; e = 1; hpfs_error(inode->i_sb, "not a directory, fnode %08lx", hpfs_error(inode->i_sb, "not a directory, fnode %08lx", (unsigned long)inode->i_ino); (unsigned long)inode->i_ino); Loading
fs/hpfs/dnode.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1015,7 +1015,7 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno, kfree(name2); kfree(name2); return NULL; return NULL; } } if (!upf->dirflag) { if (!fnode_is_dir(upf)) { brelse(bh); brelse(bh); hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, le32_to_cpu(f->up)); hpfs_error(s, "fnode %08x has non-directory parent %08x", fno, le32_to_cpu(f->up)); kfree(name2); kfree(name2); Loading
fs/hpfs/ea.c +12 −12 Original line number Original line Diff line number Diff line Loading @@ -91,7 +91,7 @@ int hpfs_read_ea(struct super_block *s, struct fnode *fnode, char *key, } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { ea = (struct extended_attribute *)ex; ea = (struct extended_attribute *)ex; Loading Loading @@ -148,7 +148,7 @@ char *hpfs_get_ea(struct super_block *s, struct fnode *fnode, char *key, int *si } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { char ex[4 + 255 + 1 + 8]; char ex[4 + 255 + 1 + 8]; Loading Loading @@ -209,7 +209,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, } } a = le32_to_cpu(fnode->ea_secno); a = le32_to_cpu(fnode->ea_secno); len = le32_to_cpu(fnode->ea_size_l); len = le32_to_cpu(fnode->ea_size_l); ano = fnode->ea_anode; ano = fnode_in_anode(fnode); pos = 0; pos = 0; while (pos < len) { while (pos < len) { char ex[4 + 255 + 1 + 8]; char ex[4 + 255 + 1 + 8]; Loading Loading @@ -276,7 +276,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, fnode->ea_size_l = cpu_to_le32(le16_to_cpu(fnode->ea_size_s)); fnode->ea_size_l = cpu_to_le32(le16_to_cpu(fnode->ea_size_s)); fnode->ea_size_s = cpu_to_le16(0); fnode->ea_size_s = cpu_to_le16(0); fnode->ea_secno = cpu_to_le32(n); fnode->ea_secno = cpu_to_le32(n); fnode->ea_anode = cpu_to_le32(0); fnode->flags &= ~FNODE_anode; mark_buffer_dirty(bh); mark_buffer_dirty(bh); brelse(bh); brelse(bh); } } Loading @@ -288,9 +288,9 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, secno q = hpfs_alloc_sector(s, fno, 1, 0); secno q = hpfs_alloc_sector(s, fno, 1, 0); if (!q) goto bail; if (!q) goto bail; fnode->ea_secno = cpu_to_le32(q); fnode->ea_secno = cpu_to_le32(q); fnode->ea_anode = 0; fnode->flags &= ~FNODE_anode; len++; len++; } else if (!fnode->ea_anode) { } else if (!fnode_in_anode(fnode)) { if (hpfs_alloc_if_possible(s, le32_to_cpu(fnode->ea_secno) + len)) { if (hpfs_alloc_if_possible(s, le32_to_cpu(fnode->ea_secno) + len)) { len++; len++; } else { } else { Loading @@ -310,7 +310,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, anode->u.external[0].length = cpu_to_le32(len); anode->u.external[0].length = cpu_to_le32(len); mark_buffer_dirty(bh); mark_buffer_dirty(bh); brelse(bh); brelse(bh); fnode->ea_anode = 1; fnode->flags |= FNODE_anode; fnode->ea_secno = cpu_to_le32(a_s);*/ fnode->ea_secno = cpu_to_le32(a_s);*/ secno new_sec; secno new_sec; int i; int i; Loading Loading @@ -338,7 +338,7 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, len = (pos + 511) >> 9; len = (pos + 511) >> 9; } } } } if (fnode->ea_anode) { if (fnode_in_anode(fnode)) { if (hpfs_add_sector_to_btree(s, le32_to_cpu(fnode->ea_secno), if (hpfs_add_sector_to_btree(s, le32_to_cpu(fnode->ea_secno), 0, len) != -1) { 0, len) != -1) { len++; len++; Loading @@ -351,16 +351,16 @@ void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, h[1] = strlen(key); h[1] = strlen(key); h[2] = size & 0xff; h[2] = size & 0xff; h[3] = size >> 8; h[3] = size >> 8; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l), 4, h)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l), 4, h)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l) + 4, h[1] + 1, key)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l) + 4, h[1] + 1, key)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode->ea_anode, le32_to_cpu(fnode->ea_size_l) + 5 + h[1], size, data)) goto bail; if (hpfs_ea_write(s, le32_to_cpu(fnode->ea_secno), fnode_in_anode(fnode), le32_to_cpu(fnode->ea_size_l) + 5 + h[1], size, data)) goto bail; fnode->ea_size_l = cpu_to_le32(pos); fnode->ea_size_l = cpu_to_le32(pos); ret: ret: hpfs_i(inode)->i_ea_size += 5 + strlen(key) + size; hpfs_i(inode)->i_ea_size += 5 + strlen(key) + size; return; return; bail: bail: if (le32_to_cpu(fnode->ea_secno)) if (le32_to_cpu(fnode->ea_secno)) if (fnode->ea_anode) hpfs_truncate_btree(s, le32_to_cpu(fnode->ea_secno), 1, (le32_to_cpu(fnode->ea_size_l) + 511) >> 9); if (fnode_in_anode(fnode)) hpfs_truncate_btree(s, le32_to_cpu(fnode->ea_secno), 1, (le32_to_cpu(fnode->ea_size_l) + 511) >> 9); else hpfs_free_sectors(s, le32_to_cpu(fnode->ea_secno) + ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9), len - ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9)); else hpfs_free_sectors(s, le32_to_cpu(fnode->ea_secno) + ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9), len - ((le32_to_cpu(fnode->ea_size_l) + 511) >> 9)); else fnode->ea_secno = fnode->ea_size_l = cpu_to_le32(0); else fnode->ea_secno = fnode->ea_size_l = cpu_to_le32(0); } } Loading
fs/hpfs/hpfs.h +13 −19 Original line number Original line Diff line number Diff line Loading @@ -436,6 +436,7 @@ struct bplus_header #define FNODE_MAGIC 0xf7e40aae #define FNODE_MAGIC 0xf7e40aae enum {FNODE_anode = cpu_to_le16(2), FNODE_dir = cpu_to_le16(256)}; struct fnode struct fnode { { u32 magic; /* f7e4 0aae */ u32 magic; /* f7e4 0aae */ Loading @@ -451,26 +452,9 @@ struct fnode secno ea_secno; /* first sector of disk-resident ea's*/ secno ea_secno; /* first sector of disk-resident ea's*/ u16 ea_size_s; /* length of fnode-resident ea's */ u16 ea_size_s; /* length of fnode-resident ea's */ #ifdef __LITTLE_ENDIAN __le16 flags; /* bit 1 set -> ea_secno is an anode */ u8 flag0: 1; /* bit 8 set -> directory. first & only extent u8 ea_anode: 1; /* 1 -> ea_secno is an anode */ u8 flag234567: 6; #else u8 flag234567: 6; u8 ea_anode: 1; /* 1 -> ea_secno is an anode */ u8 flag0: 1; #endif #ifdef __LITTLE_ENDIAN u8 dirflag: 1; /* 1 -> directory. first & only extent points to dnode. */ u8 flag9012345: 7; #else u8 flag9012345: 7; u8 dirflag: 1; /* 1 -> directory. first & only extent points to dnode. */ points to dnode. */ #endif struct bplus_header btree; /* b+ tree, 8 extents or 12 subtrees */ struct bplus_header btree; /* b+ tree, 8 extents or 12 subtrees */ union { union { struct bplus_leaf_node external[8]; struct bplus_leaf_node external[8]; Loading @@ -492,6 +476,16 @@ struct fnode via fnode + ea_offs. I think.) */ via fnode + ea_offs. I think.) */ }; }; static inline bool fnode_in_anode(struct fnode *p) { return (p->flags & FNODE_anode) != 0; } static inline bool fnode_is_dir(struct fnode *p) { return (p->flags & FNODE_dir) != 0; } /* anode: 99.44% pure allocation tree */ /* anode: 99.44% pure allocation tree */ Loading