--- disk-io.c.orig 2009-02-15 13:35:46.000000000 +0100 +++ disk-io.c 2009-02-14 20:41:42.000000000 +0100 @@ -143,7 +143,11 @@ device = multi->stripes[0].dev; device->total_ios++; blocksize = min(blocksize, (u32)(64 * 1024)); +#ifdef __APPLE__ + read(device->fd, &multi->stripes[0].physical, blocksize); +#else readahead(device->fd, multi->stripes[0].physical, blocksize); +#endif kfree(multi); return 0; } @@ -699,7 +703,11 @@ u64 bytenr; if (sb_bytenr != BTRFS_SUPER_INFO_OFFSET) { +#ifdef __APPLE__ + ret = pread(fd, &buf, sizeof(buf), sb_bytenr); +#else ret = pread64(fd, &buf, sizeof(buf), sb_bytenr); +#endif if (ret < sizeof(buf)) return -1; @@ -714,7 +722,11 @@ for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) { bytenr = btrfs_sb_offset(i); +#ifdef __APPLE__ + ret = pread(fd, &buf, sizeof(buf), bytenr); +#else ret = pread64(fd, &buf, sizeof(buf), bytenr); +#endif if (ret < sizeof(buf)) break; @@ -747,8 +759,13 @@ BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE); btrfs_csum_final(crc, (char *)&sb->csum[0]); +#ifdef __APPLE__ + ret = pwrite(device->fd, sb, BTRFS_SUPER_INFO_SIZE, + root->fs_info->super_bytenr); +#else ret = pwrite64(device->fd, sb, BTRFS_SUPER_INFO_SIZE, root->fs_info->super_bytenr); +#endif BUG_ON(ret != BTRFS_SUPER_INFO_SIZE); return 0; } @@ -765,7 +782,11 @@ BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE); btrfs_csum_final(crc, (char *)&sb->csum[0]); +#ifdef __APPLE__ + ret = pwrite(device->fd, sb, BTRFS_SUPER_INFO_SIZE, bytenr); +#else ret = pwrite64(device->fd, sb, BTRFS_SUPER_INFO_SIZE, bytenr); +#endif BUG_ON(ret != BTRFS_SUPER_INFO_SIZE); } return 0;