lkml.org 
[lkml]   [2004]   [Oct]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 13/28] VFS: Introduce soft reference counts
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Mika Penttilä wrote:
    > Mike Waychison wrote:
    >
    >> This patch introduces the concept of a 'soft' reference count for a
    >> vfsmount.
    >> This type of reference count allows for references to be held on
    >> mountpoints
    >> that do not affect their busy states for userland unmounting. Some might
    >> argue that this is wrong because 'when I unmount a filesystem, I want the
    >> resources associated with it to go away too', but this way of thinking
    >> was
    >> deprecated with the addition of namespaces and --bind back in the 2.4
    >> series.
    >>
    >> A future addition may see a callback mechanism so that in kernel users
    >> can
    >> use a given mountpoint and have it deregistered some way (quota and
    >> accounting come to mind).
    >>
    >> These soft reference counts are used by a later patch that adds an
    >> interface
    >> for holding and manipulating mountpoints using filedescriptors.
    >>
    >> Signed-off-by: Mike Waychison <michael.waychison@sun.com>
    >>
    >> +static inline struct vfsmount *mntsoftget(struct vfsmount *mnt)
    >> +{
    >> + if (mnt) {
    >> + read_lock(&vfsmountref_lock);
    >> + atomic_inc(&mnt->mnt_softcount);
    >> + mntgroupget(mnt);
    >> + read_unlock(&vfsmountref_lock);
    >> + }
    >> + return mnt;
    >> +}
    >> +
    >> +static inline void mntsoftput(struct vfsmount *mnt)
    >> +{
    >> + struct vfsmount *cleanup;
    >> + might_sleep();
    >> + if (mnt) {
    >> + if (atomic_dec_and_test(&mnt->mnt_count))
    >> + __mntput(mnt);
    >> + read_lock(&vfsmountref_lock);
    >> + cleanup = mntgroupput(mnt);
    >> + atomic_dec(&mnt->mnt_softcount);
    >> + read_unlock(&vfsmountref_lock);
    >> + if (cleanup)
    >> + __mntgroupput(cleanup);
    >> + }
    >> +}
    >> +
    >> extern void free_vfsmnt(struct vfsmount *mnt);
    >>
    >>
    > What is this against? What are mntgroupput and mntgroupget?

    This is against patch [PATCH 11/28] VFS: Allow detachable subtrees.

    In that patch, mntgroup(get|put) handles the count of all non-glue
    references for a given tree of vfsmounts.


    > Why does soft put decrement mnt_count which isn't increment by soft get?

    Ah, thanks for pointing that out. It got messed up when I created the
    patchset from the bk tree. Will fix.

    > How do
    > soft references allow userland umount? I don't see soft references used
    > anywhere...

    Soft references are used by the mountpoint file descriptor patch
    [14/28]. They allow references to be had on a vfsmount such that the
    mountpoint itself is not kept busy in the namespace. This allows a
    program to 'grab a mountpoint' by a magic file (gotten by sys_mountfd),
    and perform ops on it. The mountfd holds a reference to the vfsmount,
    but it doesn't keep userspace from trying to umount(2) the path.

    Does that help?

    - --
    Mike Waychison
    Sun Microsystems, Inc.
    1 (650) 352-5299 voice
    1 (416) 202-8336 voice

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    NOTICE: The opinions expressed in this email are held by me,
    and may not represent the views of Sun Microsystems, Inc.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.5 (GNU/Linux)
    Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

    iD8DBQFBfTcNdQs4kOxk3/MRAnZwAKCTv7SMsT/+o4WLMJGapFVKURsbNwCeI+iF
    sZCOzRRNcnesK8rFN2haEww=
    =eFwD
    -----END PGP SIGNATURE-----
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:07    [W:3.139 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site