commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] Hurd branch, master, updated. v0.6-47-g7a2c17f


From: Samuel Thibault
Subject: [SCM] Hurd branch, master, updated. v0.6-47-g7a2c17f
Date: Sun, 06 Sep 2015 19:43:36 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hurd".

The branch, master has been updated
       via  7a2c17fcbb789997421725d726340301ef35d84c (commit)
      from  918a8c2ce462cea65e3e7a614f19b4f5ae4ff1e1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7a2c17fcbb789997421725d726340301ef35d84c
Author: James Clarke <address@hidden>
Date:   Thu Aug 27 17:22:11 2015 +0100

    Fix race condition in ext2fs when remounting
    
    On some systems, ext2fs.static would regularly hang at startup, as a
    race condition meant it would process paging requests while remounting.
    To fix this, libpager has been altered to allow inhibiting and resuming
    its worker threads, and ext2fs uses this to inhibit paging while
    remounting.
    
    * console/pager.c (pager_requests): New variable.
    (user_pager_init): Updated call to pager_start_workers to use new
    pager_requests variable.
    * daemons/runsystem.sh: Removed artificial delay working around the race
    condition.
    * ext2fs/ext2fs.c (diskfs_reload_global_state): Call new
    inhibit_ext2_pager and resume_ext2_pager functions, and leave sblock as
    non-NULL so it will be munmapped.
    * ext2fs/ext2fs.h (inhibit_ext2_pager,resume_ext2_pager): New functions.
    * ext2fs/pager.c (file_pager_requests): New variable.
    (create_disk_pager): Updated call to pager_start_workers to use new
    file_pager_requests variable.
    (inhibit_ext2_pager,resume_ext2_pager): New functions.
    * fatfs/fatfs.h (inhibit_fat_pager,resume_fat_pager): New functions.
    * fatfs/pager.c (file_pager_requests): New variable.
    (create_fat_pager): Updated call to pager_start_workers to use new
    file_pager_requests variable.
    (inhibit_fat_pager,resume_fat_pager): New functions.
    * libdiskfs/disk-pager.c (diskfs_disk_pager_requests): New variable.
    (diskfs_start_disk_pager): Updated call to pager_start_workers to use
    new diskfs_disk_pager_requests variable.
    * libdiskfs/diskfs-pager.h (diskfs_disk_pager_requests): New variable.
    * libpager/demuxer.c (struct pager_requests): Renamed struct requests to
    struct pager_requests. Replaced queue with queue_in and queue_out
    pointers. Added inhibit_wakeup field.
    (pager_demuxer): Updated to use new queue_in/queue_out pointers. Only
    wake up workers if not inhibited.
    (worker_func): Updated to use new queue_in/queue_out pointers. Final
    worker thread to sleep notifies the inhibit_wakeup condition variable.
    (pager_start_workers): Added out parameter for the requests instance.
    Allocate heap space shared by both queues. Initialise new inhibit_wakeup
    condition.
    (pager_inhibit_workers,pager_resume_workers): New functions.
    * libpager/pager.h (struct pager_requests): Public forward definition.
    (pager_start_workers): Added out parameter for the requests instance.
    (pager_inhibit_workers,pager_resume_workers): New functions.
    * libpager/queue.h (queue_empty): New function.
    * storeio/pager.c (pager_requests): New variable.
    (init_dev_paging): Updated call to pager_start_workers to use new
    pager_requests variable.

-----------------------------------------------------------------------

Summary of changes:
 console/pager.c          |    3 +-
 daemons/runsystem.sh     |    3 -
 ext2fs/ext2fs.c          |   12 ++++-
 ext2fs/ext2fs.h          |    6 ++
 ext2fs/pager.c           |   33 ++++++++++++-
 fatfs/fatfs.h            |    2 +
 fatfs/pager.c            |   33 ++++++++++++-
 libdiskfs/disk-pager.c   |    3 +-
 libdiskfs/diskfs-pager.h |    1 +
 libpager/demuxer.c       |  119 +++++++++++++++++++++++++++++++++++++++------
 libpager/pager.h         |   28 ++++++++++-
 libpager/queue.h         |    8 +++
 storeio/pager.c          |    3 +-
 13 files changed, 227 insertions(+), 27 deletions(-)


hooks/post-receive
-- 
Hurd



reply via email to

[Prev in Thread] Current Thread [Next in Thread]