On Wed, 25 May 2016 10:41:53 +0300
Ian Ray <ian....@ge.com> wrote:

> posix_fallocate() does an explicit rollback if it gets EINTR, and
> this is a problem on slow systems because when the allocation size
> is sufficiently large posix_fallocate() will always be interrupted
> by the smart scheduler's SIGALRM.
> 
> Changes since v1 - big comment in the code to explain what is going on
> 
> Signed-off-by: Ian Ray <ian....@ge.com>
> ---
>  hw/xwayland/xwayland-shm.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/hw/xwayland/xwayland-shm.c b/hw/xwayland/xwayland-shm.c
> index c199e5e..82a9414 100644
> --- a/hw/xwayland/xwayland-shm.c
> +++ b/hw/xwayland/xwayland-shm.c
> @@ -28,6 +28,8 @@
>  #include <dix-config.h>
>  #endif
>  
> +#include "os.h"
> +
>  #include "xwayland.h"
>  
>  #include <sys/mman.h>
> @@ -140,9 +142,17 @@ os_create_anonymous_file(off_t size)
>          return -1;
>  
>  #ifdef HAVE_POSIX_FALLOCATE
> +    /*
> +     * posix_fallocate does an explicit rollback if it gets EINTR.
> +     * Temporarily block signals to allow the call to succeed on
> +     * slow systems where the smart scheduler's SIGALRM prevents
> +     * large allocation attempts from ever succeeding.
> +     */
> +    OsBlockSignals();
>      do {
>          ret = posix_fallocate(fd, 0, size);
>      } while (ret == EINTR);
> +    OsReleaseSignals();
>  
>      if (ret != 0) {
>          close(fd);

This is still:
Acked-by: Pekka Paalanen <pekka.paala...@collabora.co.uk>


Thanks,
pq

Attachment: pgpXrI3ifDPu5.pgp
Description: OpenPGP digital signature

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to