Whamcloud - gitweb
libext2fs: use block_buf in ext2fs_alloc_block2() if it is provided
authorTheodore Ts'o <tytso@mit.edu>
Sat, 13 Dec 2014 03:12:45 +0000 (22:12 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 13 Dec 2014 03:12:45 +0000 (22:12 -0500)
If the caller supplies a buffer to ext2fs_alloc_block2(), use it
instead of calling ext2fs_zero_blocks2().

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
lib/ext2fs/alloc.c

index 54535c4..1bb4d47 100644 (file)
@@ -184,9 +184,6 @@ errcode_t ext2fs_alloc_block2(ext2_filsys fs, blk64_t goal,
        errcode_t       retval;
        blk64_t         block;
 
-       if (block_buf)
-               memset(block_buf, 0, fs->blocksize);
-
        if (fs->get_alloc_block) {
                retval = (fs->get_alloc_block)(fs, goal, &block);
                if (retval)
@@ -203,7 +200,11 @@ errcode_t ext2fs_alloc_block2(ext2_filsys fs, blk64_t goal,
                        goto fail;
        }
 
-       retval = ext2fs_zero_blocks2(fs, block, 1, NULL, NULL);
+       if (block_buf) {
+               memset(block_buf, 0, fs->blocksize);
+               retval = io_channel_write_blk64(fs->io, block, 1, block_buf);
+       } else
+               retval = ext2fs_zero_blocks2(fs, block, 1, NULL, NULL);
        if (retval)
                goto fail;