+1, looks fine to me also.
Roger
On 4/13/2016 6:46 AM, Thomas Stüfe wrote:
Thanks Dmitry!
On Wed, Apr 13, 2016 at 12:00 PM, Dmitry Samersoff
<dmitry.samers...@oracle.com <mailto:dmitry.samers...@oracle.com>> wrote:
Thomas,
Looks good for me!
-Dmitry
On 2016-04-13 12:12, Thomas Stüfe wrote:
> Hi Roger, Dmitry,
>
> May I ask you both to have a last look at this change before I
commit?
> It took a while for this to go through our internal tests, hence
the delay.
>
> New
> version:
http://cr.openjdk.java.net/~stuefe/webrevs/8150460-linux_close-fdTable/webrev.03/webrev/
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8150460-linux_close-fdTable/webrev.03/webrev/>
> Delta to last
> version:
http://cr.openjdk.java.net/~stuefe/webrevs/8150460-linux_close-fdTable/webrev.02-webrev.03/webrev/
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8150460-linux_close-fdTable/webrev.02-webrev.03/webrev/>
>
> The changes are mostly cosmetic:
>
> - I tweaked a number of comments to make them clearer
> - If getrlimit(RLIMIT_NOFILE) returns an error, I now handle
this correctly.
> - Just for readability, I explicitly initialize global variables
instead
> of relying on static zero-initialization.
> - As Roger requested, I changed accesses to the entry table elements
> from using implicit pointer arithmetic to explicit array
accesses with "&".
>
> Thank you for your time!
>
> Kind Regards, Thomas
>
> On Sat, Mar 12, 2016 at 8:38 AM, Thomas Stüfe
<thomas.stu...@gmail.com <mailto:thomas.stu...@gmail.com>
> <mailto:thomas.stu...@gmail.com <mailto:thomas.stu...@gmail.com>>> wrote:
>
> Thank you Roger!
>
> On Fri, Mar 11, 2016 at 4:26 PM, Roger Riggs
<roger.ri...@oracle.com <mailto:roger.ri...@oracle.com>
> <mailto:roger.ri...@oracle.com <mailto:roger.ri...@oracle.com>>>
wrote:
>
> Hi Thomas,
>
> When returning the address of the fdentry, the style using
> &fdTable[fd] is preferred over
> the implicit pointer arithmetic (as it was in the
previous version).
>
> Occurs in all 3 deltas:
>
> src/java.base/*/native/libnet/*_close.c:
> + result = fdTable + fd;
>
> and
> + result = fdOverflowTable[rootindex] + slabindex;
>
> The rest looks fine.
>
> Thanks, Roger
>
>
>
>
> On 3/10/2016 7:59 AM, Thomas Stüfe wrote:
>
> Thank you Dmitry!
>
> I will fix the typo before comitting.
>
> Kind Regards, Thomas
>
> On Thu, Mar 10, 2016 at 9:19 AM, Dmitry Samersoff <
> dmitry.samers...@oracle.com <mailto:dmitry.samers...@oracle.com>
> <mailto:dmitry.samers...@oracle.com
<mailto:dmitry.samers...@oracle.com>>>
wrote:
>
> Thomas,
>
> Looks good for me. But please wait for someone from
> core-libs team.
>
> PS: Could you also fix a typeo at 79, 51, 53?
>
> s/initialized/initialization/
>
> 51 * Heap allocated during initialization -
one entry
> per fd
>
> -Dmitry
>
> On 2016-03-10 10:59, Thomas Stüfe wrote:
>
> Hi,
>
> may I have a review of this new iteration
for this fix?
>
> Thank you!
>
> Thomas
>
> On Thu, Mar 3, 2016 at 5:26 PM, Thomas Stüfe
> <thomas.stu...@gmail.com
<mailto:thomas.stu...@gmail.com>
> <mailto:thomas.stu...@gmail.com
<mailto:thomas.stu...@gmail.com>>>
> wrote:
>
> Hi all,
>
> https://bugs.openjdk.java.net/browse/JDK-8150460
>
> thanks to all who took the time to
review the
> first version of this fix!
>
> This is the new version:
>
>
>
>
http://cr.openjdk.java.net/~stuefe/webrevs/8150460-linux_close-fdTable/webrev.02/webrev/
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8150460-linux_close-fdTable/webrev.02/webrev/>
>
> I reworked the fix, trying to add in all the
> input I got: This fix uses
>
> a
>
> simple one-dimensional array,
preallocated at
> startup, for low-value
>
> file
>
> descriptors. Like the code did before.
Only for
> large values of file
> descriptors it switches to an overflow
table,
> organized as two
>
> dimensional
>
> sparse array of fixed sized slabs, which are
> allocated on demand. Only
>
> the
>
> overflow table is protected by a lock.
>
> For 99% of all cases we will be using
the plain
> simple fdTable structure
> as before. Only for unusually large file
> descriptor values we will be
>
> using
>
> this overflow table.
>
> Memory footprint is kept low: for small
values
> of RLIMIT_NOFILE, we will
> only allocate as much space as we need.
Only if
> file descriptor values
>
> get
>
> large, memory is allocated in the
overflow table.
>
> Note that I avoided the proposed
double-checked
> locking solution: I find
> it too risky in this place and also
unnecessary.
> When calling
>
> getFdEntry(),
>
> we will be executing a blocking IO operation
> afterwards, flanked by two
> mutex locks (in startOp and endOp). So,
I do not
> think the third mutex
>
> lock
>
> in getFdEntry will add much, especially
since it
> is only used in case of
> larger file descriptor values.
>
> I also added the fix to bsd_close.c and
> aix_close.c. I do not like this
> code triplication. I briefly played
around with
> unifying this code, but
> this is more difficult than it seems:
> implementations subtly differ
>
> between
>
> the three platforms, and solaris
implementation
> is completely
>
> different. It
>
> may be a worthwhile cleanup, but that
would be a
> separate issue.
>
> I did some artificial tests to check how the
> code does with many and
>
> large
>
> file descriptor values, all seemed to
work well.
> I also ran java/net
>
> jtreg
>
> tests on Linux and AIX.
>
> Kind Regards, Thomas
>
>
>
> --
> Dmitry Samersoff
> Oracle Java development team, Saint Petersburg,
Russia
> * I would love to change the world, but they
won't give
> me the sources.
>
>
>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the
sources.