Messages in this thread | | | Date | Mon, 25 Oct 2004 20:20:48 +0300 | From | Mika Penttilä <> | Subject | Re: [PATCH 13/28] VFS: Introduce soft reference counts |
| |
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? Why does soft put decrement mnt_count which isn't increment by soft get? How do soft references allow userland umount? I don't see soft references used anywhere...
--Mika
- 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/
| |