lkml.org 
[lkml]   [2008]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[RFC PATCH 8/8] relay - Clean up remaining padding-related junk.
    From
    Date
    Clean up remaining padding-related junk.

    Removes the rest of the padding-related junk. Also simplifies the
    subbuf_start callback a bit.
    ---
    block/blktrace.c | 5 +++--
    include/linux/relay.h | 12 ++----------
    kernel/relay.c | 19 ++++---------------
    virt/kvm/kvm_trace.c | 7 ++++---
    4 files changed, 13 insertions(+), 30 deletions(-)

    diff --git a/block/blktrace.c b/block/blktrace.c
    index 150c5f7..271b7b7 100644
    --- a/block/blktrace.c
    +++ b/block/blktrace.c
    @@ -334,8 +334,9 @@ static const struct file_operations blk_msg_fops = {
    * Keep track of how many times we encountered a full subbuffer, to aid
    * the user space app in telling how many lost events there were.
    */
    -static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
    - void *prev_subbuf, size_t prev_padding)
    +static int blk_subbuf_start_callback(struct rchan_buf *buf,
    + void *subbuf,
    + int first_subbuf)
    {
    struct blk_trace *bt;

    diff --git a/include/linux/relay.h b/include/linux/relay.h
    index c42b2d3..85f43a0 100644
    --- a/include/linux/relay.h
    +++ b/include/linux/relay.h
    @@ -51,8 +51,6 @@ struct rchan_buf
    struct page **page_array; /* array of current buffer pages */
    unsigned int page_count; /* number of current buffer pages */
    unsigned int finalized; /* buffer has been finalized */
    - size_t *padding; /* padding counts per sub-buffer */
    - size_t prev_padding; /* temporary variable */
    size_t bytes_consumed; /* bytes consumed in cur read subbuf */
    size_t early_bytes; /* bytes consumed before VFS inited */
    unsigned int cpu; /* this buf's cpu */
    @@ -88,23 +86,17 @@ struct rchan_callbacks
    * subbuf_start - called on buffer-switch to a new sub-buffer
    * @buf: the channel buffer containing the new sub-buffer
    * @subbuf: the start of the new sub-buffer
    - * @prev_subbuf: the start of the previous sub-buffer
    - * @prev_padding: unused space at the end of previous sub-buffer
    + * @first_subbuf: boolean, is this the first subbuf?
    *
    * The client should return 1 to continue logging, 0 to stop
    * logging.
    *
    - * NOTE: subbuf_start will also be invoked when the buffer is
    - * created, so that the first sub-buffer can be initialized
    - * if necessary. In this case, prev_subbuf will be NULL.
    - *
    * NOTE: the client can reserve bytes at the beginning of the new
    * sub-buffer by calling subbuf_start_reserve() in this callback.
    */
    int (*subbuf_start) (struct rchan_buf *buf,
    void *subbuf,
    - void *prev_subbuf,
    - size_t prev_padding);
    + int first_subbuf);

    /*
    * buf_mapped - relay buffer mmap notification
    diff --git a/kernel/relay.c b/kernel/relay.c
    index 21b3e19..b2bf510 100644
    --- a/kernel/relay.c
    +++ b/kernel/relay.c
    @@ -178,10 +178,6 @@ static struct rchan_buf *relay_create_buf(struct rchan *chan)
    if (!buf)
    return NULL;

    - buf->padding = kmalloc(chan->n_subbufs * sizeof(size_t *), GFP_KERNEL);
    - if (!buf->padding)
    - goto free_buf;
    -
    buf->chan = chan;
    kref_get(&buf->chan->kref);

    @@ -192,7 +188,6 @@ static struct rchan_buf *relay_create_buf(struct rchan *chan)
    return buf;

    free_buf:
    - kfree(buf->padding);
    kfree(buf);
    return NULL;
    }
    @@ -225,7 +220,6 @@ static void relay_destroy_buf(struct rchan_buf *buf)
    relay_free_page_array(buf->page_array);
    }
    chan->buf[buf->cpu] = NULL;
    - kfree(buf->padding);
    kfree(buf);
    kref_put(&chan->kref, relay_destroy_channel);
    }
    @@ -283,8 +277,7 @@ EXPORT_SYMBOL_GPL(relay_buf_full);
    */
    static int subbuf_start_default_callback (struct rchan_buf *buf,
    void *subbuf,
    - void *prev_subbuf,
    - size_t prev_padding)
    + int first_subbuf)
    {
    if (relay_buf_full(buf))
    return 0;
    @@ -374,8 +367,6 @@ static void wakeup_readers(unsigned long data)
    */
    static void __relay_reset(struct rchan_buf *buf, unsigned int init)
    {
    - size_t i;
    -
    if (init) {
    init_waitqueue_head(&buf->read_wait);
    kref_init(&buf->kref);
    @@ -390,10 +381,7 @@ static void __relay_reset(struct rchan_buf *buf, unsigned int init)
    buf->data = buf->start;
    buf->offset = 0;

    - for (i = 0; i < buf->chan->n_subbufs; i++)
    - buf->padding[i] = 0;
    -
    - buf->chan->cb->subbuf_start(buf, buf->data, NULL, 0);
    + buf->chan->cb->subbuf_start(buf, buf->data, 1);
    }

    /**
    @@ -757,7 +745,7 @@ static inline int next_subbuf_free(struct rchan_buf *buf)
    * Returns either the length passed in or 0 if full.
    *
    * Performs sub-buffer-switch tasks such as invoking callbacks,
    - * updating padding counts, waking up readers, etc.
    + * waking up readers, etc.
    */
    size_t relay_switch_subbuf_default_callback(struct rchan_buf *buf,
    size_t length,
    @@ -788,6 +776,7 @@ size_t relay_switch_subbuf_default_callback(struct rchan_buf *buf,

    buf->data = new_data;
    buf->offset = 0; /* remainder will be added by caller */
    + buf->chan->cb->subbuf_start(buf, new_data, 0);

    if (unlikely(relay_event_toobig(buf, length + buf->offset)))
    goto toobig;
    diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c
    index d0a9e1c..4626caa 100644
    --- a/virt/kvm/kvm_trace.c
    +++ b/virt/kvm/kvm_trace.c
    @@ -105,13 +105,14 @@ DEFINE_SIMPLE_ATTRIBUTE(kvm_trace_lost_ops, lost_records_get, NULL, "%llu\n");
    * many times we encountered a full subbuffer, to tell user space app the
    * lost records there were.
    */
    -static int kvm_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
    - void *prev_subbuf, size_t prev_padding)
    +static int kvm_subbuf_start_callback(struct rchan_buf *buf,
    + void *subbuf,
    + int first_subbuf)
    {
    struct kvm_trace *kt;

    if (!relay_buf_full(buf)) {
    - if (!prev_subbuf) {
    + if (first_subbuf) {
    /*
    * executed only once when the channel is opened
    * save metadata as first record
    --
    1.5.3.5




    \
     
     \ /
      Last update: 2008-09-25 08:13    [W:0.038 / U:31.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site