Whamcloud - gitweb
e2fsck: allow to fix some superblock corruptions
[tools/e2fsprogs.git] / lib / ext2fs / io_manager.c
index 25df59e..c395d61 100644 (file)
@@ -111,3 +111,40 @@ errcode_t io_channel_discard(io_channel channel, unsigned long long block,
 
        return EXT2_ET_UNIMPLEMENTED;
 }
+
+errcode_t io_channel_zeroout(io_channel channel, unsigned long long block,
+                            unsigned long long count)
+{
+       EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
+
+       if (channel->manager->zeroout)
+               return (channel->manager->zeroout)(channel, block, count);
+
+       return EXT2_ET_UNIMPLEMENTED;
+}
+
+errcode_t io_channel_alloc_buf(io_channel io, int count, void *ptr)
+{
+       size_t  size;
+
+       if (count == 0)
+               size = io->block_size;
+       else if (count > 0)
+               size = io->block_size * count;
+       else
+               size = -count;
+
+       if (io->align)
+               return ext2fs_get_memalign(size, io->align, ptr);
+       else
+               return ext2fs_get_mem(size, ptr);
+}
+
+errcode_t io_channel_cache_readahead(io_channel io, unsigned long long block,
+                                    unsigned long long count)
+{
+       if (!io->manager->cache_readahead)
+               return EXT2_ET_OP_NOT_SUPPORTED;
+
+       return io->manager->cache_readahead(io, block, count);
+}