[PATCH 3/9] libports: reduce malloc overhead in _ports_bucket_class_iterate

2014-04-28 Thread Justus Winter
_ports_bucket_class_iterate creates a snapshot of the buckets hash table. This is done so that the lock protecting the hash table can be released while we iterate over the snapshot. Formerly, a linked list was used to store the snapshot. As the maximal number of items is known, using an array

[PATCH 2/9] libports: work around bugs in server termination

2014-04-28 Thread Justus Winter
Some servers use ports_manage_port_operations_one_thread to process requests and terminate when it returns. Since many of them don't detach before shutting down, a client may receive an error if its request arrived while the server is shutting down. Prevent those spurious errors by forcing

[PATCH 1/9] libdiskfs: set the default sync interval to 30 seconds

2014-04-28 Thread Justus Winter
The default sync interval has been changed in 9e55fdd7 from 30 to 5 seconds. This change was not reflected in the documentation. At least for current hardware, using 30 seconds instead of just 5 alleviates the thread-storm problem. Make 30 seconds the default again. * libdiskfs/priv.h

[PATCH 4/9] exec: abbreviate the task name if necessary

2014-04-28 Thread Justus Winter
* exec/exec.c (do_exec): If the formatted task name exceeds TASK_NAME_SIZE, abbreviate it. --- exec/exec.c | 15 +-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/exec/exec.c b/exec/exec.c index 935762e..b068f5e 100644 --- a/exec/exec.c +++ b/exec/exec.c @@ -1168,9

[PATCH 6/9] ext2fs: simplify expression

2014-04-28 Thread Justus Winter
* ext2fs/pager.c (add_pager_max_prot): Simplify expression. --- ext2fs/pager.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ext2fs/pager.c b/ext2fs/pager.c index 6e99c83..9116b8c 100644 --- a/ext2fs/pager.c +++ b/ext2fs/pager.c @@ -1453,8 +1453,7 @@

let's make libpager single-threaded

2014-04-28 Thread Justus Winter
Hi :) tl;dr: How many pager threads does it take to skrew in a light bulb? One. [PATCH 1/9] libdiskfs: set the default sync interval to 30 seconds Well, I made this one before I knew that the thread-storm problem might just be gone with this patch series. Still, we should either apply this

[PATCH 9/9] libpager: remove all the unused seqno parameters

2014-04-28 Thread Justus Winter
* libpager/Makefile (MIGSFLAGS): Drop -DSEQNOS. * libpager/chg-compl.c: Adjust accordingly. * libpager/data-request.c: Likewise. * libpager/data-return.c: Likewise. * libpager/data-unlock.c: Likewise. * libpager/demuxer.c: Likewise. * libpager/lock-completed.c: Likewise. * libpager/no-senders.c:

[PATCH 8/9] libpager: make libpager single-threaded

2014-04-28 Thread Justus Winter
Previously, libpager used multiple threads to service requests to memory objects. This has proven to be problematic, as paging requests often arrive in batches, resulting in the creation of many hundred threads. Furthermore, the semantic of paging requests requires that the requests to an object

[PATCH 5/9] ext2fs: fix type of inum

2014-04-28 Thread Justus Winter
Previously, inum was of type int, whereas dino_ref expects ino_t. On Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is inlined, this does not seem to pose a problem, but if ext2fs is compiled with -O0, this most likely results in an invalid memory access. * ext2fs/ialloc.c

[PATCH 7/9] ext2fs: use two distinct pager buckets for the disk and file pager

2014-04-28 Thread Justus Winter
ext2fs has two kinds of pagers. One for the files, one for the disk. Previously, both were in the same port bucket. If a request for a file pager arrives, it most likely touches some metadata (like the superblock). This is in turn backed by the disk pager, so another request is generated for

Re: [PATCH 1/9] libdiskfs: set the default sync interval to 30 seconds

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:19:56 +0200, a écrit : The default sync interval has been changed in 9e55fdd7 from 30 to 5 seconds. This change was not reflected in the documentation. At least for current hardware, using 30 seconds instead of just 5 alleviates the thread-storm problem.

Re: [PATCH 2/9] libports: work around bugs in server termination

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:19:57 +0200, a écrit : Some servers use ports_manage_port_operations_one_thread to process requests and terminate when it returns. Since many of them don't detach before shutting down, a client may receive an error if its request arrived while the server is

Re: [PATCH 4/9] exec: abbreviate the task name if necessary

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:19:59 +0200, a écrit : * exec/exec.c (do_exec): If the formatted task name exceeds TASK_NAME_SIZE, abbreviate it. Ack. --- exec/exec.c | 15 +-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/exec/exec.c b/exec/exec.c

Re: [PATCH 5/9] ext2fs: fix type of inum

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:20:00 +0200, a écrit : Previously, inum was of type int, whereas dino_ref expects ino_t. On Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is inlined, this does not seem to pose a problem, but if ext2fs is compiled with -O0, this most

Re: [PATCH 6/9] ext2fs: simplify expression

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:20:01 +0200, a écrit : * ext2fs/pager.c (add_pager_max_prot): Simplify expression. Ack. --- ext2fs/pager.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ext2fs/pager.c b/ext2fs/pager.c index 6e99c83..9116b8c 100644 ---

Re: [PATCH 5/9] ext2fs: fix type of inum

2014-04-28 Thread Justus Winter
Quoting Samuel Thibault (2014-04-28 12:34:43) Justus Winter, le Mon 28 Apr 2014 12:20:00 +0200, a écrit : Previously, inum was of type int, whereas dino_ref expects ino_t. On Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is inlined, this does not seem to pose a problem,

hurd and BIOS/RTC problem

2014-04-28 Thread Riccardo Mottola
Hi, while testing my old HURD box (remember, real hardware, not a VM) I noticed that I have troubles with my BIOS settings and the RTC. The preface is that about a year ago, with my old install, I did not have this behavior. If I boot into the hurd, the clock settings are gone! The BIOS

Re: let's make libpager single-threaded

2014-04-28 Thread Richard Braun
On Mon, Apr 28, 2014 at 12:19:55PM +0200, Justus Winter wrote: We will try this change on darnassus and follow-up with the results. Unfortunately, this looks too unstable to merge as it is. There seems to be a port leak somewhere, and it looks like support for notifications is needed, as I could

[bug #18883] nice/getpriority/setpriority enforces even nice values

2014-04-28 Thread Justus Winter
Follow-up Comment #1, bug #18883 (project hurd): Contrary to its documentation, my gnumach has actually 50 priorities: shed.h: #define NRQS50 /* 50 run queues per cpu */ [...] #define invalid_pri(pri) (((pri) 0) || ((pri) = NRQS)) So we can actually have a bijective

[bug #18883] nice/getpriority/setpriority enforces even nice values

2014-04-28 Thread Samuel Thibault
Follow-up Comment #2, bug #18883 (project hurd): Well, yes, I eventually commited the change to gnumach, and the corresponding glibc change is in topgit's t/nice branch :) ___ Reply to this item at: http://savannah.gnu.org/bugs/?18883

Re: [PATCH 3/9] libports: reduce malloc overhead in _ports_bucket_class_iterate

2014-04-28 Thread Samuel Thibault
Justus Winter, le Mon 28 Apr 2014 12:19:58 +0200, a écrit : ports_class_iterate. For this change might make ports_class_iterate less efficient memory-wise if the number of ports belonging to the class is low with respect to the number of ports in the bucket. I'd say reallocing the array to