Patch "vmbus: eliminate duplicate cached index" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
vmbus: eliminate duplicate cached index
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
vmbus-eliminate-duplicate-cached-index.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
05d00bc94ac27d220d8a78e365d7fa3a26dcca17Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <[email protected]>
Date: Sun, 25 Jun 2017 12:30:27 -0700
Subject: vmbus: eliminate duplicate cached index
From: Stephen Hemminger <[email protected]>
commit 05d00bc94ac27d220d8a78e365d7fa3a26dcca17 upstream.
Don't need cached read index anymore now that packet iterator is used. The iterator has the original read index until the visible read_index is updated.
--- drivers/hv/ring_buffer.c | 17 ++++------------- include/linux/hyperv.h | 14 -------------- 2 files changed, 4 insertions(+), 27 deletions(-)
drivers/hv/ring_buffer.c +4 -13
@@ -358,9 +358,6 @@ struct vmpacket_descriptor *hv_pkt_iter_ {struct hv_ring_buffer_info *rbi = &channel->inbound; -/* set state for later hv_pkt_iter_close */ - rbi->cached_read_index = rbi->ring_buffer->read_index; -if (hv_pkt_iter_avail (rbi) <sizeof (struct vmpacket_descriptor ))return NULL ;
@@ -388,10 +385,7 @@ __hv_pkt_iter_next(struct vmbus_channel rbi->priv_read_index -= dsize;/* more data? */ -if (hv_pkt_iter_avail (rbi) <sizeof (struct vmpacket_descriptor )) -return NULL ; -else -return hv_get_ring_buffer (rbi) + rbi->priv_read_index; +return hv_pkt_iter_first (channel); }EXPORT_SYMBOL_GPL (__hv_pkt_iter_next);
@@ -401,7 +395,7 @@ EXPORT_SYMBOL_GPL(__hv_pkt_iter_next);void hv_pkt_iter_close (struct vmbus_channel *channel) {struct hv_ring_buffer_info *rbi = &channel->inbound; -u32 cur_write_sz, cached_write_sz; +u32 orig_write_sz =hv_get_bytes_to_write (rbi);u32 pending_sz;/*
@@ -430,13 +424,10 @@ void hv_pkt_iter_close(struct vmbus_chanif (pending_sz ==0 )return ; - cur_write_sz =hv_get_bytes_to_write (rbi); - -if (cur_write_sz < pending_sz) +if (hv_get_bytes_to_write (rbi) < pending_sz)return ; - cached_write_sz =hv_get_cached_bytes_to_write (rbi); -if (cached_write_sz < pending_sz) +if (orig_write_sz < pending_sz)vmbus_setevent (channel); }EXPORT_SYMBOL_GPL (hv_pkt_iter_close);
include/linux/hyperv.h +0 -14
@@ -127,7 +127,6 @@ struct hv_ring_buffer_info {u32 ring_data_startoffset;u32 priv_write_index;u32 priv_read_index; -u32 cached_read_index; };/*
@@ -180,19 +179,6 @@ static inline u32 hv_get_bytes_to_write(return write; } -static inline u32 hv_get_cached_bytes_to_write ( -const struct hv_ring_buffer_info *rbi) -{ -u32 read_loc, write_loc, dsize, write; - - dsize = rbi->ring_datasize; - read_loc = rbi->cached_read_index; - write_loc = rbi->ring_buffer->write_index; - - write = write_loc >= read_loc ? dsize - (write_loc - read_loc) : - read_loc - write_loc; -return write; -}/* * VMBUS version is 32 bit entity broken up into * two 16 bit quantities: major_number. minor_number.
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/vmbus-more-host-signalling-avoidance.patch queue-4.13/vmbus-refactor-hv_signal_on_read.patch queue-4.13/vmbus-simplify-hv_ringbuffer_read.patch queue-4.13/vmbus-eliminate-duplicate-cached-index.patch