Re: [PATCH] autofs - fix symlinks aren't checked for expiry
On Fri, 2013-12-27 at 11:53 +0100, Sedat Dilek wrote: > On Fri, Dec 27, 2013 at 5:32 AM, Ian Kent wrote: > > Hi, > > saw some typos... Right, I'm pretty tired, and seem to be so a lot these days. Andrew, let me fix the typos and re-submit the patch. > > > From: Ian Kent > > > > The autofs4 module doesn't consider symlinks for expire as it did > > in the older autofs v3 module (so it's actually a long stnding > > s/stnding/standing > > > regression). > > > > The user space daemon has focused on the use of bind mounts instead > > of symlinks for a long time now and that's why this has not been > > noticed. But with the future addition of amd map parsing to > > automount(8), not to mention amd itself (of am-utils), symlink > > expiry will be needed. > > > > The direct and offset mount types can't be symlinks and the tree > > mounts of version 4 were always real mounts so only indirect > > mounts need expire symlinks. > > > > Since the current users of the autofs4 module haven't reproted > > s/reproted/reported > > - Sedat - > > > this as a problem to date this patch probably isn't a candidate > > for backport to stable. > > > > Signed-off-by: Ian Kent > > --- > > fs/autofs4/expire.c | 14 ++ > > fs/autofs4/symlink.c |4 > > 2 files changed, 18 insertions(+) > > > > diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c > > index 3d9d3f5..394e90b 100644 > > --- a/fs/autofs4/expire.c > > +++ b/fs/autofs4/expire.c > > @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct > > super_block *sb, > > goto next; > > } > > > > + if (dentry->d_inode && S_ISLNK(dentry->d_inode->i_mode)) { > > + DPRINTK("checking symlink %p %.*s", > > + dentry, (int)dentry->d_name.len, > > dentry->d_name.name); > > + /* > > +* A symlink can't be "busy" in the usual sense so > > +* just check last used for expire timeout. > > +*/ > > + if (autofs4_can_expire(dentry, timeout, do_now)) { > > + expired = dentry; > > + goto found; > > + } > > + goto next; > > + } > > + > > if (simple_empty(dentry)) > > goto next; > > > > diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c > > index f27c094..1e8ea19 100644 > > --- a/fs/autofs4/symlink.c > > +++ b/fs/autofs4/symlink.c > > @@ -14,6 +14,10 @@ > > > > static void *autofs4_follow_link(struct dentry *dentry, struct nameidata > > *nd) > > { > > + struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); > > + struct autofs_info *ino = autofs4_dentry_ino(dentry); > > + if (ino && !autofs4_oz_mode(sbi)) > > + ino->last_used = jiffies; > > nd_set_link(nd, dentry->d_inode->i_private); > > return NULL; > > } > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > > the body of a message to majord...@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] autofs - fix symlinks aren't checked for expiry
On Fri, Dec 27, 2013 at 5:32 AM, Ian Kent wrote: Hi, saw some typos... > From: Ian Kent > > The autofs4 module doesn't consider symlinks for expire as it did > in the older autofs v3 module (so it's actually a long stnding s/stnding/standing > regression). > > The user space daemon has focused on the use of bind mounts instead > of symlinks for a long time now and that's why this has not been > noticed. But with the future addition of amd map parsing to > automount(8), not to mention amd itself (of am-utils), symlink > expiry will be needed. > > The direct and offset mount types can't be symlinks and the tree > mounts of version 4 were always real mounts so only indirect > mounts need expire symlinks. > > Since the current users of the autofs4 module haven't reproted s/reproted/reported - Sedat - > this as a problem to date this patch probably isn't a candidate > for backport to stable. > > Signed-off-by: Ian Kent > --- > fs/autofs4/expire.c | 14 ++ > fs/autofs4/symlink.c |4 > 2 files changed, 18 insertions(+) > > diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c > index 3d9d3f5..394e90b 100644 > --- a/fs/autofs4/expire.c > +++ b/fs/autofs4/expire.c > @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct > super_block *sb, > goto next; > } > > + if (dentry->d_inode && S_ISLNK(dentry->d_inode->i_mode)) { > + DPRINTK("checking symlink %p %.*s", > + dentry, (int)dentry->d_name.len, > dentry->d_name.name); > + /* > +* A symlink can't be "busy" in the usual sense so > +* just check last used for expire timeout. > +*/ > + if (autofs4_can_expire(dentry, timeout, do_now)) { > + expired = dentry; > + goto found; > + } > + goto next; > + } > + > if (simple_empty(dentry)) > goto next; > > diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c > index f27c094..1e8ea19 100644 > --- a/fs/autofs4/symlink.c > +++ b/fs/autofs4/symlink.c > @@ -14,6 +14,10 @@ > > static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) > { > + struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); > + struct autofs_info *ino = autofs4_dentry_ino(dentry); > + if (ino && !autofs4_oz_mode(sbi)) > + ino->last_used = jiffies; > nd_set_link(nd, dentry->d_inode->i_private); > return NULL; > } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] autofs - fix symlinks aren't checked for expiry
On Fri, Dec 27, 2013 at 5:32 AM, Ian Kent ra...@themaw.net wrote: Hi, saw some typos... From: Ian Kent ik...@redhat.com The autofs4 module doesn't consider symlinks for expire as it did in the older autofs v3 module (so it's actually a long stnding s/stnding/standing regression). The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now and that's why this has not been noticed. But with the future addition of amd map parsing to automount(8), not to mention amd itself (of am-utils), symlink expiry will be needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Since the current users of the autofs4 module haven't reproted s/reproted/reported - Sedat - this as a problem to date this patch probably isn't a candidate for backport to stable. Signed-off-by: Ian Kent ik...@redhat.com --- fs/autofs4/expire.c | 14 ++ fs/autofs4/symlink.c |4 2 files changed, 18 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..394e90b 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry-d_inode S_ISLNK(dentry-d_inode-i_mode)) { + DPRINTK(checking symlink %p %.*s, + dentry, (int)dentry-d_name.len, dentry-d_name.name); + /* +* A symlink can't be busy in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..1e8ea19 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,10 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_sb_info *sbi = autofs4_sbi(dentry-d_sb); + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino !autofs4_oz_mode(sbi)) + ino-last_used = jiffies; nd_set_link(nd, dentry-d_inode-i_private); return NULL; } -- To unsubscribe from this list: send the line unsubscribe linux-fsdevel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] autofs - fix symlinks aren't checked for expiry
On Fri, 2013-12-27 at 11:53 +0100, Sedat Dilek wrote: On Fri, Dec 27, 2013 at 5:32 AM, Ian Kent ra...@themaw.net wrote: Hi, saw some typos... Right, I'm pretty tired, and seem to be so a lot these days. Andrew, let me fix the typos and re-submit the patch. From: Ian Kent ik...@redhat.com The autofs4 module doesn't consider symlinks for expire as it did in the older autofs v3 module (so it's actually a long stnding s/stnding/standing regression). The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now and that's why this has not been noticed. But with the future addition of amd map parsing to automount(8), not to mention amd itself (of am-utils), symlink expiry will be needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Since the current users of the autofs4 module haven't reproted s/reproted/reported - Sedat - this as a problem to date this patch probably isn't a candidate for backport to stable. Signed-off-by: Ian Kent ik...@redhat.com --- fs/autofs4/expire.c | 14 ++ fs/autofs4/symlink.c |4 2 files changed, 18 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..394e90b 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry-d_inode S_ISLNK(dentry-d_inode-i_mode)) { + DPRINTK(checking symlink %p %.*s, + dentry, (int)dentry-d_name.len, dentry-d_name.name); + /* +* A symlink can't be busy in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..1e8ea19 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,10 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_sb_info *sbi = autofs4_sbi(dentry-d_sb); + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino !autofs4_oz_mode(sbi)) + ino-last_used = jiffies; nd_set_link(nd, dentry-d_inode-i_private); return NULL; } -- To unsubscribe from this list: send the line unsubscribe linux-fsdevel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] autofs - fix symlinks aren't checked for expiry
From: Ian Kent The autofs4 module doesn't consider symlinks for expire as it did in the older autofs v3 module (so it's actually a long stnding regression). The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now and that's why this has not been noticed. But with the future addition of amd map parsing to automount(8), not to mention amd itself (of am-utils), symlink expiry will be needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Since the current users of the autofs4 module haven't reproted this as a problem to date this patch probably isn't a candidate for backport to stable. Signed-off-by: Ian Kent --- fs/autofs4/expire.c | 14 ++ fs/autofs4/symlink.c |4 2 files changed, 18 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..394e90b 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry->d_inode && S_ISLNK(dentry->d_inode->i_mode)) { + DPRINTK("checking symlink %p %.*s", + dentry, (int)dentry->d_name.len, dentry->d_name.name); + /* +* A symlink can't be "busy" in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..1e8ea19 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,10 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino && !autofs4_oz_mode(sbi)) + ino->last_used = jiffies; nd_set_link(nd, dentry->d_inode->i_private); return NULL; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] autofs - fix symlinks aren't checked for expiry
From: Ian Kent ik...@redhat.com The autofs4 module doesn't consider symlinks for expire as it did in the older autofs v3 module (so it's actually a long stnding regression). The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now and that's why this has not been noticed. But with the future addition of amd map parsing to automount(8), not to mention amd itself (of am-utils), symlink expiry will be needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Since the current users of the autofs4 module haven't reproted this as a problem to date this patch probably isn't a candidate for backport to stable. Signed-off-by: Ian Kent ik...@redhat.com --- fs/autofs4/expire.c | 14 ++ fs/autofs4/symlink.c |4 2 files changed, 18 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..394e90b 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,20 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry-d_inode S_ISLNK(dentry-d_inode-i_mode)) { + DPRINTK(checking symlink %p %.*s, + dentry, (int)dentry-d_name.len, dentry-d_name.name); + /* +* A symlink can't be busy in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..1e8ea19 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,10 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_sb_info *sbi = autofs4_sbi(dentry-d_sb); + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino !autofs4_oz_mode(sbi)) + ino-last_used = jiffies; nd_set_link(nd, dentry-d_inode-i_private); return NULL; } -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] autofs - fix symlinks aren't checked for expiry
From: Ian Kent The autofs4 module doesn't consider symlinks for expire. The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now. But, with the future addition of amd map parsing in automount(8), not to mention amd iteslf, symlink expiry is needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Signed-off-by: Ian Kent --- fs/autofs4/expire.c | 12 fs/autofs4/symlink.c |3 +++ 2 files changed, 15 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..ce7df7c 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,18 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry->d_inode && S_ISLNK(dentry->d_inode->i_mode)) { + /* +* A symlink can't be "busy" in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..061a692 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,9 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino) + ino->last_used = jiffies; nd_set_link(nd, dentry->d_inode->i_private); return NULL; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] autofs - fix symlinks aren't checked for expiry
From: Ian Kent ik...@redhat.com The autofs4 module doesn't consider symlinks for expire. The user space daemon has focused on the use of bind mounts instead of symlinks for a long time now. But, with the future addition of amd map parsing in automount(8), not to mention amd iteslf, symlink expiry is needed. The direct and offset mount types can't be symlinks and the tree mounts of version 4 were always real mounts so only indirect mounts need expire symlinks. Signed-off-by: Ian Kent ik...@redhat.com --- fs/autofs4/expire.c | 12 fs/autofs4/symlink.c |3 +++ 2 files changed, 15 insertions(+) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 3d9d3f5..ce7df7c 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -402,6 +402,18 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb, goto next; } + if (dentry-d_inode S_ISLNK(dentry-d_inode-i_mode)) { + /* +* A symlink can't be busy in the usual sense so +* just check last used for expire timeout. +*/ + if (autofs4_can_expire(dentry, timeout, do_now)) { + expired = dentry; + goto found; + } + goto next; + } + if (simple_empty(dentry)) goto next; diff --git a/fs/autofs4/symlink.c b/fs/autofs4/symlink.c index f27c094..061a692 100644 --- a/fs/autofs4/symlink.c +++ b/fs/autofs4/symlink.c @@ -14,6 +14,9 @@ static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) { + struct autofs_info *ino = autofs4_dentry_ino(dentry); + if (ino) + ino-last_used = jiffies; nd_set_link(nd, dentry-d_inode-i_private); return NULL; } -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/