Page MenuHomeFreeBSD

D11209.id29647.diff
No OneTemporary

D11209.id29647.diff

Index: sys/fs/ext2fs/ext2_inode_cnv.c
===================================================================
--- sys/fs/ext2fs/ext2_inode_cnv.c
+++ sys/fs/ext2fs/ext2_inode_cnv.c
@@ -165,8 +165,15 @@
ei->e2di_flags |= (ip->i_flags & UF_NODUMP) ? EXT2_NODUMP : 0;
ei->e2di_flags |= (ip->i_flag & IN_E3INDEX) ? EXT3_INDEX : 0;
ei->e2di_flags |= (ip->i_flag & IN_E4EXTENTS) ? EXT4_EXTENTS : 0;
- ei->e2di_nblock = ip->i_blocks & 0xffffffff;
- ei->e2di_nblock_high = ip->i_blocks >> 32 & 0xffff;
+ if (E2DI_HAS_HUGE_FILE(ip) && ip->i_blocks > 0xffffffffffffULL) {
+ ei->e2di_flags |= EXT4_HUGE_FILE;
+ ei->e2di_nblock = dbtofsb(ip->i_e2fs, ip->i_blocks);
+ ei->e2di_nblock_high = dbtofsb(ip->i_e2fs, ip->i_blocks) >>
+ 32 & 0xffff;
+ } else {
+ ei->e2di_nblock = ip->i_blocks & 0xffffffff;
+ ei->e2di_nblock_high = ip->i_blocks >> 32 & 0xffff;
+ }
ei->e2di_facl = ip->i_facl & 0xffffffff;
ei->e2di_facl_high = ip->i_facl >> 32 & 0xffff;
ei->e2di_gen = ip->i_gen;
Index: sys/fs/ext2fs/ext2fs.h
===================================================================
--- sys/fs/ext2fs/ext2fs.h
+++ sys/fs/ext2fs/ext2fs.h
@@ -247,7 +247,6 @@
* - EXT2F_INCOMPAT_FTYPE
*
* We partially (read-only) support the following EXT4 features:
- * - EXT2F_ROCOMPAT_HUGE_FILE
* - EXT2F_INCOMPAT_EXTENTS
*
* We do not support these EXT4 features but they are irrelevant
@@ -259,6 +258,7 @@
#define EXT2F_COMPAT_SUPP EXT2F_COMPAT_DIRHASHINDEX
#define EXT2F_ROCOMPAT_SUPP (EXT2F_ROCOMPAT_SPARSESUPER | \
EXT2F_ROCOMPAT_LARGEFILE | \
+ EXT2F_ROCOMPAT_HUGE_FILE | \
EXT2F_ROCOMPAT_EXTRA_ISIZE)
#define EXT2F_INCOMPAT_SUPP EXT2F_INCOMPAT_FTYPE
#define EXT4F_RO_INCOMPAT_SUPP (EXT2F_INCOMPAT_EXTENTS | \

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 9:33 PM (11 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31913928
Default Alt Text
D11209.id29647.diff (1 KB)

Event Timeline