Re: [PATCH] autofs - fix symlinks aren't checked for expiry

2013-12-27 Thread Ian Kent
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

2013-12-27 Thread Sedat Dilek
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

2013-12-27 Thread Sedat Dilek
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

2013-12-27 Thread Ian Kent
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

2013-12-26 Thread Ian Kent
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

2013-12-26 Thread Ian Kent
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

2013-11-28 Thread Ian Kent
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

2013-11-28 Thread Ian Kent
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/