;
; Bind Mount Extensions
;
; This part adds the required checks for touch_atime() to allow
; for vfsmount based NOATIME and NODIRATIME
; autofs4 update_atime is the only exception (ignored on purpose)
;
; Copyright (C) 2003-2005 Herbert P?tzl <[email protected]>
;
; Changelog:
;
; 0.01 - broken out part from bme0.05
;
; this patch is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License
; as published by the Free Software Foundation; either version 2
; of the License, or (at your option) any later version.
;
; this patch is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
diff -NurpP --minimal linux-2.6.11-rc4-bme0.06-bm0.01/include/linux/fs.h linux-2.6.11-rc4-bme0.06-bm0.01-at0.01/include/linux/fs.h
--- linux-2.6.11-rc4-bme0.06-bm0.01/include/linux/fs.h 2005-02-19 06:31:24 +0100
+++ linux-2.6.11-rc4-bme0.06-bm0.01-at0.01/include/linux/fs.h 2005-02-19 06:31:36 +0100
@@ -1038,8 +1038,16 @@ static inline void mark_inode_dirty_sync
static inline void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
{
- /* per-mountpoint checks will go here */
- update_atime(dentry->d_inode);
+ struct inode *inode = dentry->d_inode;
+
+ if (MNT_IS_NOATIME(mnt))
+ return;
+ if (S_ISDIR(inode->i_mode) && MNT_IS_NODIRATIME(mnt))
+ return;
+ if (IS_RDONLY(inode) || MNT_IS_RDONLY(mnt))
+ return;
+
+ update_atime(inode);
}
static inline void file_accessed(struct file *file)
On Tue, Feb 22, 2005 at 01:11:29PM +0100, Herbert Poetzl wrote:
>
>
> ;
> ; Bind Mount Extensions
> ;
> ; This part adds the required checks for touch_atime() to allow
> ; for vfsmount based NOATIME and NODIRATIME
> ; autofs4 update_atime is the only exception (ignored on purpose)
and that purpose is? Did you discuss this with the autofs maintainers?
On Wed, Feb 23, 2005 at 11:01:05PM +0000, Christoph Hellwig wrote:
> On Tue, Feb 22, 2005 at 01:11:29PM +0100, Herbert Poetzl wrote:
> >
> >
> > ;
> > ; Bind Mount Extensions
> > ;
> > ; This part adds the required checks for touch_atime() to allow
> > ; for vfsmount based NOATIME and NODIRATIME
> > ; autofs4 update_atime is the only exception (ignored on purpose)
>
> and that purpose is?
this is based on a statement from Al Viro:
| autofs4 use - AFAICS there we want atime updated unconditionally,
| so calling update_atime() (update atime after checking
| noatime/nodiratime/readonly flags) is wrong.
agreed, maybe a proper fix would be better ...
> Did you discuss this with the autofs maintainers?
not yet!
(cc-ed to automounter maintainer and list)
thanks,
Herbert
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
On Thu, 24 Feb 2005, Herbert Poetzl wrote:
> On Wed, Feb 23, 2005 at 11:01:05PM +0000, Christoph Hellwig wrote:
>> On Tue, Feb 22, 2005 at 01:11:29PM +0100, Herbert Poetzl wrote:
>>>
>>>
>>> ;
>>> ; Bind Mount Extensions
>>> ;
>>> ; This part adds the required checks for touch_atime() to allow
>>> ; for vfsmount based NOATIME and NODIRATIME
>>> ; autofs4 update_atime is the only exception (ignored on purpose)
>>
>> and that purpose is?
>
> this is based on a statement from Al Viro:
>
> | autofs4 use - AFAICS there we want atime updated unconditionally,
> | so calling update_atime() (update atime after checking
> | noatime/nodiratime/readonly flags) is wrong.
>
> agreed, maybe a proper fix would be better ...
>
>> Did you discuss this with the autofs maintainers?
I've had a look at the patch and I can't see any problem.
autofs4 doesn't use the inode atime for expire purposes but does update it
in sync with its dentry info struct field that is used for this purpose.
So AFAICS the atime is an external view of expire status,
but only when updated within the autofs4 module VFS callbacks.
I haven't yet looked at the v3 (autofs) module.
I'll get back if I see an issue there.
Ian