lkml.org 
[lkml]   [2014]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 29/50] mars: add new file include/linux/xio/xio_aio.h
    Date
    Signed-off-by: Thomas Schoebel-Theuer <tst@schoebel-theuer.de>
    ---
    include/linux/xio/xio_aio.h | 96 +++++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 96 insertions(+)
    create mode 100644 include/linux/xio/xio_aio.h

    diff --git a/include/linux/xio/xio_aio.h b/include/linux/xio/xio_aio.h
    new file mode 100644
    index 0000000..776a28c
    --- /dev/null
    +++ b/include/linux/xio/xio_aio.h
    @@ -0,0 +1,96 @@
    +/* (c) 2010 Thomas Schoebel-Theuer / 1&1 Internet AG */
    +#ifndef XIO_AIO_H
    +#define XIO_AIO_H
    +
    +#include <linux/aio.h>
    +#include <linux/syscalls.h>
    +
    +#include <linux/lib_mapfree.h>
    +
    +#define AIO_SUBMIT_MAX_LATENCY 1000 /* 1 ms */
    +#define AIO_IO_R_MAX_LATENCY 50000 /* 50 ms */
    +#define AIO_IO_W_MAX_LATENCY 150000 /* 150 ms */
    +#define AIO_SYNC_MAX_LATENCY 150000 /* 150 ms */
    +
    +extern struct threshold aio_submit_threshold;
    +extern struct threshold aio_io_threshold[2];
    +extern struct threshold aio_sync_threshold;
    +
    +/* aio_sync_mode:
    + * 0 = filemap_write_and_wait_range()
    + * 1 = fdatasync()
    + * 2 = fsync()
    + */
    +extern int aio_sync_mode;
    +
    +struct aio_aio_aspect {
    + GENERIC_ASPECT(aio);
    + struct list_head io_head;
    + struct dirty_info di;
    + unsigned long long enqueue_stamp;
    + long long start_jiffies;
    + int resubmit;
    + int alloc_len;
    + bool do_dealloc;
    +};
    +
    +struct aio_brick {
    + XIO_BRICK(aio);
    + /* parameters */
    + bool o_creat;
    + bool o_direct;
    + bool o_fdsync;
    + bool is_static_device;
    +};
    +
    +struct aio_input {
    + XIO_INPUT(aio);
    +};
    +
    +struct aio_threadinfo {
    + struct list_head aio_list[XIO_PRIO_NR];
    + struct aio_output *output;
    + struct task_struct *thread;
    +
    + wait_queue_head_t event;
    + wait_queue_head_t terminate_event;
    + spinlock_t lock;
    + int queued[XIO_PRIO_NR];
    + atomic_t queued_sum;
    + atomic_t total_enqueue_count;
    + bool terminated;
    +};
    +
    +struct aio_output {
    + XIO_OUTPUT(aio);
    + /* private */
    + struct mapfree_info *mf;
    +
    + int fd; /* FIXME: remove this! */
    + struct aio_threadinfo tinfo[3];
    +
    + aio_context_t ctxp;
    + wait_queue_head_t fdsync_event;
    + bool fdsync_active;
    +
    + /* statistics */
    + int index;
    + atomic_t total_read_count;
    + atomic_t total_write_count;
    + atomic_t total_alloc_count;
    + atomic_t total_submit_count;
    + atomic_t total_again_count;
    + atomic_t total_delay_count;
    + atomic_t total_msleep_count;
    + atomic_t total_fdsync_count;
    + atomic_t total_fdsync_wait_count;
    + atomic_t total_mapfree_count;
    + atomic_t read_count;
    + atomic_t write_count;
    + atomic_t alloc_count;
    + atomic_t submit_count;
    +};
    +
    +XIO_TYPES(aio);
    +
    +#endif
    --
    2.0.0


    \
     
     \ /
      Last update: 2014-07-02 01:41    [W:6.338 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site