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:0.101 / U:0.820 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site