lkml.org 
[lkml]   [2010]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] support polling of /proc/swaps
    On Wed, 20 Oct 2010 01:25:47 +0200
    Kay Sievers <kay.sievers@vrfy.org> wrote:

    > On Tue, 2010-10-19 at 15:31 -0700, Andrew Morton wrote:
    > > On Tue, 19 Oct 2010 11:19:16 +0200
    > > Kay Sievers <kay.sievers@vrfy.org> wrote:
    >
    > > It's a bit sad that we have to add quite a pile of infrastructure to
    > > make a procfs file pollable. I wonder if it's possible to provide some
    > > core support for this, and reduce the amount of code at each particular
    > > handler site.
    >
    > You mean something like adding the event counter to the seq_file? There
    > is /proc/self/mounts,mountinfo and /proc/swaps so far, I think.

    Don't know - I was just waving hands about wondering if we really need
    to add 48 new lines of code each time we want to make a procfs file
    pollable.

    > > Also, I wonder how we are to communicate the existence of this feature
    > > to our users. Nobody will look in Documentation/filesystems/. Is
    > > there a manpage? Seems not...
    >
    > Hmm, 'man 5 proc'?

    yes, that mentions /proc/swaps.

    > > > +static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
    > > > +static int proc_poll_event;
    > >
    > > Please pick a lock to protect proc_poll_event.
    >
    > An atomic_t should do it too, right?

    It does.

    > > Then document that
    > > locking here, when you also document proc_poll_event ;)
    >
    > The actual value has no meaning at all, it just tells that something
    > happened if it has changed.
    >

    bah.

    --- a/mm/swapfile.c~proc-swaps-support-polling-fix
    +++ a/mm/swapfile.c
    @@ -60,6 +60,7 @@ static struct swap_info_struct *swap_inf
    static DEFINE_MUTEX(swapon_mutex);

    static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
    +/* Activity counter to indicate that a swapon or swapoff has occurred */
    static atomic_t proc_poll_event = ATOMIC_INIT(0);

    static inline unsigned char swap_count(unsigned char ent)
    _


    \
     
     \ /
      Last update: 2010-10-20 01:43    [W:0.022 / U:91.640 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site