#define FIBMAP _IO(0x00,1) /* bmap access */
#define FIGETBSZ _IO(0x00,2) /* get the block size used for bmap */
-#define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */
+#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */
#define EXT3_IOC_GETFLAGS _IOR('f', 1, long)
+static unsigned int div_ceil(unsigned int a, unsigned int b)
+{
+ if (!a)
+ return 0;
+ return ((a - 1) / b) + 1;
+}
+
static unsigned long get_bmap(int fd, unsigned long block)
{
int ret;
struct stat fileinfo;
#endif
int bs;
- long i, fd;
- unsigned long block, last_block = 0, numblocks;
+ long fd;
+ unsigned long block, last_block = 0, numblocks, i;
long bpib; /* Blocks per indirect block */
long cylgroups;
int discont = 0, expected;
(fsinfo.f_type == 0xef53))
is_ext2++;
if (verbose) {
- printf("Filesystem type is: %x\n", fsinfo.f_type);
+ printf("Filesystem type is: %lx\n",
+ (unsigned long) fsinfo.f_type);
}
- cylgroups = (fsinfo.f_blocks + fsinfo.f_bsize*8-1) / fsinfo.f_bsize*8;
+ cylgroups = div_ceil(fsinfo.f_blocks, fsinfo.f_bsize*8);
if (verbose) {
printf("Filesystem cylinder groups is approximately %ld\n",
cylgroups);
}
if (ioctl(fd, EXT3_IOC_GETFLAGS, &flags) < 0)
flags = 0;
- if (flags & EXT3_EXTENTS_FL) {
+ if (flags & EXT4_EXTENTS_FL) {
printf("File is stored in extents format\n");
is_ext2 = 0;
}