lkml.org 
[lkml]   [2011]   [Aug]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 037/118] drbd: Preparing to use p_header96 for all packets
    Date
    recv_bm_rle_bits() should not make any assumptions abou the layout
    of the packet header

    Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
    ---
    drivers/block/drbd/drbd_receiver.c | 11 ++++++-----
    1 files changed, 6 insertions(+), 5 deletions(-)

    diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
    index fbf9382..12fdd73 100644
    --- a/drivers/block/drbd/drbd_receiver.c
    +++ b/drivers/block/drbd/drbd_receiver.c
    @@ -3393,7 +3393,8 @@ receive_bitmap_plain(struct drbd_conf *mdev, unsigned int data_size,
    static int
    recv_bm_rle_bits(struct drbd_conf *mdev,
    struct p_compressed_bm *p,
    - struct bm_xfer_ctx *c)
    + struct bm_xfer_ctx *c,
    + unsigned int len)
    {
    struct bitstream bs;
    u64 look_ahead;
    @@ -3401,7 +3402,6 @@ recv_bm_rle_bits(struct drbd_conf *mdev,
    u64 tmp;
    unsigned long s = c->bit_offset;
    unsigned long e;
    - int len = be16_to_cpu(p->head.length) - (sizeof(*p) - sizeof(p->head));
    int toggle = DCBP_get_start(p);
    int have;
    int bits;
    @@ -3458,10 +3458,11 @@ recv_bm_rle_bits(struct drbd_conf *mdev,
    static int
    decode_bitmap_c(struct drbd_conf *mdev,
    struct p_compressed_bm *p,
    - struct bm_xfer_ctx *c)
    + struct bm_xfer_ctx *c,
    + unsigned int len)
    {
    if (DCBP_get_code(p) == RLE_VLI_Bits)
    - return recv_bm_rle_bits(mdev, p, c);
    + return recv_bm_rle_bits(mdev, p, c, len);

    /* other variants had been implemented for evaluation,
    * but have been dropped as this one turned out to be "best"
    @@ -3560,7 +3561,7 @@ static int receive_bitmap(struct drbd_conf *mdev, enum drbd_packets cmd, unsigne
    dev_err(DEV, "ReportCBitmap packet too small (l:%u)\n", data_size);
    goto out;
    }
    - err = decode_bitmap_c(mdev, p, &c);
    + err = decode_bitmap_c(mdev, p, &c, data_size);
    } else {
    dev_warn(DEV, "receive_bitmap: cmd neither ReportBitMap nor ReportCBitMap (is 0x%x)", cmd);
    goto out;
    --
    1.7.4.1


    \
     
     \ /
      Last update: 2011-08-25 17:13    [W:4.039 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site