Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1498568

Re: [PATCH 1/7] pstore: Make spinlock per zone instead of global

From Kees Cook <keescook@chromium.org>
Newsgroups linux.kernel
Subject Re: [PATCH 1/7] pstore: Make spinlock per zone instead of global
Date 2016-10-11 02:00 +0200
Message-ID <sqSEa-7CV-9@gated-at.bofh.it> (permalink)
References <spSmS-2SF-3@gated-at.bofh.it> <spSmS-2SF-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Fri, Oct 7, 2016 at 10:28 PM, Joel Fernandes <joelaf@google.com> wrote:
> Currently pstore has a global spinlock for all zones. Since the zones are
> independent and modify different areas of memory, there's no need to have
> a global lock, make the lock per-zone to protect the respective zone.

This seems fine to me, though I'd like the commit message to at least
hint at what's next, and why this change is needed, rather than just
the general organizational justification.

-Kees

>
> Signed-off-by: Joel Fernandes <joelaf@google.com>
> ---
>  fs/pstore/ram_core.c       | 11 +++++------
>  include/linux/pstore_ram.h |  1 +
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c
> index 3975dee..cb92055 100644
> --- a/fs/pstore/ram_core.c
> +++ b/fs/pstore/ram_core.c
> @@ -48,8 +48,6 @@ static inline size_t buffer_start(struct persistent_ram_zone *prz)
>         return atomic_read(&prz->buffer->start);
>  }
>
> -static DEFINE_RAW_SPINLOCK(buffer_lock);
> -
>  /* increase and wrap the start pointer, returning the old value */
>  static size_t buffer_start_add(struct persistent_ram_zone *prz, size_t a)
>  {
> @@ -57,7 +55,7 @@ static size_t buffer_start_add(struct persistent_ram_zone *prz, size_t a)
>         int new;
>         unsigned long flags;
>
> -       raw_spin_lock_irqsave(&buffer_lock, flags);
> +       raw_spin_lock_irqsave(&prz->buffer_lock, flags);
>
>         old = atomic_read(&prz->buffer->start);
>         new = old + a;
> @@ -65,7 +63,7 @@ static size_t buffer_start_add(struct persistent_ram_zone *prz, size_t a)
>                 new -= prz->buffer_size;
>         atomic_set(&prz->buffer->start, new);
>
> -       raw_spin_unlock_irqrestore(&buffer_lock, flags);
> +       raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
>
>         return old;
>  }
> @@ -77,7 +75,7 @@ static void buffer_size_add(struct persistent_ram_zone *prz, size_t a)
>         size_t new;
>         unsigned long flags;
>
> -       raw_spin_lock_irqsave(&buffer_lock, flags);
> +       raw_spin_lock_irqsave(&prz->buffer_lock, flags);
>
>         old = atomic_read(&prz->buffer->size);
>         if (old == prz->buffer_size)
> @@ -89,7 +87,7 @@ static void buffer_size_add(struct persistent_ram_zone *prz, size_t a)
>         atomic_set(&prz->buffer->size, new);
>
>  exit:
> -       raw_spin_unlock_irqrestore(&buffer_lock, flags);
> +       raw_spin_unlock_irqrestore(&prz->buffer_lock, flags);
>  }
>
>  static void notrace persistent_ram_encode_rs8(struct persistent_ram_zone *prz,
> @@ -493,6 +491,7 @@ static int persistent_ram_post_init(struct persistent_ram_zone *prz, u32 sig,
>
>         prz->buffer->sig = sig;
>         persistent_ram_zap(prz);
> +       prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
>
>         return 0;
>  }
> diff --git a/include/linux/pstore_ram.h b/include/linux/pstore_ram.h
> index c668c86..244d242 100644
> --- a/include/linux/pstore_ram.h
> +++ b/include/linux/pstore_ram.h
> @@ -40,6 +40,7 @@ struct persistent_ram_zone {
>         void *vaddr;
>         struct persistent_ram_buffer *buffer;
>         size_t buffer_size;
> +       raw_spinlock_t buffer_lock;
>
>         /* ECC correction */
>         char *par_buffer;
> --
> 2.7.4
>



-- 
Kees Cook
Nexus Security

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[RFC 0/7] pstore: Improve performance of ftrace backend with ramoops Joel Fernandes <joelaf@google.com> - 2016-10-08 07:30 +0200
  [PATCH 2/7] pstore: locking: dont lock unless caller asks to Joel Fernandes <joelaf@google.com> - 2016-10-08 07:30 +0200
    Re: [PATCH 2/7] pstore: locking: dont lock unless caller asks to Kees Cook <keescook@chromium.org> - 2016-10-11 01:50 +0200
      Re: [PATCH 2/7] pstore: locking: dont lock unless caller asks to Joel Fernandes <joelaf@google.com> - 2016-10-11 17:10 +0200
  [PATCH 3/7] pstore: Remove case of PSTORE_TYPE_PMSG write using deprecated function Joel Fernandes <joelaf@google.com> - 2016-10-08 07:30 +0200
    Re: [PATCH 3/7] pstore: Remove case of PSTORE_TYPE_PMSG write using  deprecated function Kees Cook <keescook@chromium.org> - 2016-10-11 02:00 +0200
      Re: [PATCH 3/7] pstore: Remove case of PSTORE_TYPE_PMSG write using  deprecated function Joel Fernandes <joelaf@google.com> - 2016-10-11 16:50 +0200
  [PATCH 7/7] pstore: Merge per-CPU ftrace zones into one zone for output Joel Fernandes <joelaf@google.com> - 2016-10-08 07:30 +0200
  [PATCH 1/7] pstore: Make spinlock per zone instead of global Joel Fernandes <joelaf@google.com> - 2016-10-08 07:30 +0200
    Re: [PATCH 1/7] pstore: Make spinlock per zone instead of global Joel Fernandes <joelaf@google.com> - 2016-10-08 07:50 +0200
    Re: [PATCH 1/7] pstore: Make spinlock per zone instead of global Kees Cook <keescook@chromium.org> - 2016-10-11 02:00 +0200
  [PATCH 4/7] pstore: Make ramoops_init_przs generic for other prz arrays Joel Fernandes <joelaf@google.com> - 2016-10-08 07:40 +0200
    Re: [PATCH 4/7] pstore: Make ramoops_init_przs generic for other prz arrays Kees Cook <keescook@chromium.org> - 2016-10-11 02:00 +0200
  [PATCH 6/7] pstore: Add support to store timestamp counter in ftrace records Joel Fernandes <joelaf@google.com> - 2016-10-08 07:40 +0200
  [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Joel Fernandes <joelaf@google.com> - 2016-10-08 07:40 +0200
    Re: [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Joel Fernandes <joelaf@google.com> - 2016-10-09 19:20 +0200
      Re: [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Kees Cook <keescook@chromium.org> - 2016-10-11 02:00 +0200
        Re: [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Kees Cook <keescook@chromium.org> - 2016-10-11 02:10 +0200
  Re: [RFC 0/7] pstore: Improve performance of ftrace backend with  ramoops Steven Rostedt <rostedt@goodmis.org> - 2016-10-11 12:00 +0200

csiph-web