Re: [PATCH 19/18] Unexport do_add_mount() and add in follow_automount(), not ->d_automount()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 14, 2011 at 05:26:09PM +0000, David Howells wrote:
> 
> Unexport do_add_mount() and make ->d_automount() return the vfsmount to be
> added rather than calling do_add_mount() itself.  follow_automount() will then
> do the addition.
> 
> This slightly complicates things as ->d_automount() normally wants to add the
> new vfsmount to an expiration list and start an expiration timer.  The problem
> with that is that the vfsmount will be deleted if it has a refcount of 1 and
> the timer will not repeat if the expiration list is empty.
> 
> To this end, we require the vfsmount to be returned from d_automount() with a
> refcount of (at least) 2.  One of these refs will be dropped unconditionally.
> In addition, follow_automount() must get a 3rd ref around the call to
> do_add_mount() lest it eat a ref and return an error, leaving the mount we
> have open to being expired as we would otherwise have only 1 ref on it.

Yechh...  I'd rather take mntput_long() (yuck) out into callers (all two
of them) and lose the extra mntget/mntput in follow_automount().

> This patch also fixes the call to do_add_mount() for AFS and CIFS to propagate
> the mount flags from the parent vfsmount.

CIFS actually used to be OK; that breakage was introduced earlier in the
series.  AFS was broken wrt flags.  I'll fix the CIFS patch and adjust
that one accordingly.

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux