t/zbd: avoid test case 31 failure with small devices
[fio.git] / engines / libhdfs.c
index 96a0871d873ee8813876ce4ee47709de8b3c5b58..d0a268408435418f261616a734f335b03aa91286 100644 (file)
@@ -2,7 +2,7 @@
  * libhdfs engine
  *
  * this engine helps perform read/write operations on hdfs cluster using
- * libhdfs. hdfs doesnot support modification of data once file is created.
+ * libhdfs. hdfs does not support modification of data once file is created.
  *
  * so to mimic that create many files of small size (e.g 256k), and this
  * engine select a file based on the offset generated by fio.
@@ -27,7 +27,7 @@ struct hdfsio_data {
 };
 
 struct hdfsio_options {
-       void *pad;                      /* needed because offset can't be 0 for a option defined used offsetof */
+       void *pad;                      /* needed because offset can't be 0 for an option defined used offsetof */
        char *host;
        char *directory;
        unsigned int port;
@@ -75,7 +75,7 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_STR_STORE,
                .off1   = offsetof(struct hdfsio_options, directory),
                .def    = "/",
-               .help   = "The HDFS directory where fio will create chuncks",
+               .help   = "The HDFS directory where fio will create chunks",
                .category = FIO_OPT_C_ENGINE,
                .group  = FIO_OPT_G_HDFS,
        },
@@ -86,7 +86,7 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_INT,
                .off1   = offsetof(struct hdfsio_options, chunck_size),
                .def    = "1048576",
-               .help   = "Size of individual chunck",
+               .help   = "Size of individual chunk",
                .category = FIO_OPT_C_ENGINE,
                .group  = FIO_OPT_G_HDFS,
        },
@@ -165,7 +165,8 @@ static int fio_hdfsio_prep(struct thread_data *td, struct io_u *io_u)
        return 0;
 }
 
-static int fio_hdfsio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status fio_hdfsio_queue(struct thread_data *td,
+                                         struct io_u *io_u)
 {
        struct hdfsio_data *hd = td->io_ops_data;
        struct hdfsio_options *options = td->eo;
@@ -176,7 +177,7 @@ static int fio_hdfsio_queue(struct thread_data *td, struct io_u *io_u)
        
        if( (io_u->ddir == DDIR_READ || io_u->ddir == DDIR_WRITE) && 
             hdfsTell(hd->fs, hd->fp) != offset && hdfsSeek(hd->fs, hd->fp, offset) != 0 ) {
-               log_err("hdfs: seek failed: %s, are you doing random write smaller than chunck size ?\n", strerror(errno));
+               log_err("hdfs: seek failed: %s, are you doing random write smaller than chunk size ?\n", strerror(errno));
                io_u->error = errno;
                return FIO_Q_COMPLETED;
        };
@@ -239,7 +240,7 @@ int fio_hdfsio_close_file(struct thread_data *td, struct fio_file *f)
        return 0;
 }
 
-static int fio_hdfsio_init(struct thread_data *td)
+static int fio_hdfsio_io_u_init(struct thread_data *td, struct io_u *io_u)
 {
        struct hdfsio_options *options = td->eo;
        struct hdfsio_data *hd = td->io_ops_data;
@@ -314,8 +315,7 @@ static int fio_hdfsio_setup(struct thread_data *td)
        uint64_t file_size, total_file_size;
 
        if (!td->io_ops_data) {
-               hd = malloc(sizeof(*hd));
-               memset(hd, 0, sizeof(*hd));
+               hd = calloc(1, sizeof(*hd));
                
                hd->curr_file_id = -1;
 
@@ -337,9 +337,9 @@ static int fio_hdfsio_setup(struct thread_data *td)
                }
                f->real_file_size = file_size;
        }
-       /* If the size doesn't divide nicely with the chunck size,
+       /* If the size doesn't divide nicely with the chunk size,
         * make the last files bigger.
-        * Used only if filesize was not explicitely given
+        * Used only if filesize was not explicitly given
         */
        if (!td->o.file_size_low && total_file_size < td->o.size) {
                f->real_file_size += (td->o.size - total_file_size);
@@ -348,7 +348,7 @@ static int fio_hdfsio_setup(struct thread_data *td)
        return 0;
 }
 
-static int fio_hdfsio_io_u_init(struct thread_data *td, struct io_u *io_u)
+static int fio_hdfsio_init(struct thread_data *td)
 {
        struct hdfsio_data *hd = td->io_ops_data;
        struct hdfsio_options *options = td->eo;
@@ -373,7 +373,7 @@ static int fio_hdfsio_io_u_init(struct thread_data *td, struct io_u *io_u)
        }
        hd->fs = hdfsBuilderConnect(bld);
        
-       /* hdfsSetWorkingDirectory succeed on non existend directory */
+       /* hdfsSetWorkingDirectory succeed on non-existent directory */
        if (hdfsExists(hd->fs, options->directory) < 0 || hdfsSetWorkingDirectory(hd->fs, options->directory) < 0) {
                failure = errno;
                log_err("hdfs: invalid working directory %s: %s\n", options->directory, strerror(errno));
@@ -392,7 +392,7 @@ static void fio_hdfsio_io_u_free(struct thread_data *td, struct io_u *io_u)
        }
 }
 
-static struct ioengine_ops ioengine_hdfs = {
+FIO_STATIC struct ioengine_ops ioengine = {
        .name = "libhdfs",
        .version = FIO_IOOPS_VERSION,
        .flags = FIO_SYNCIO | FIO_DISKLESSIO | FIO_NODISKUTIL,
@@ -411,10 +411,10 @@ static struct ioengine_ops ioengine_hdfs = {
 
 static void fio_init fio_hdfsio_register(void)
 {
-       register_ioengine(&ioengine_hdfs);
+       register_ioengine(&ioengine);
 }
 
 static void fio_exit fio_hdfsio_unregister(void)
 {
-       unregister_ioengine(&ioengine_hdfs);
+       unregister_ioengine(&ioengine);
 }