diff options
| author | Christoph Hellwig <hch@lst.de> | 2006-01-09 23:52:17 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-10 11:01:34 -0500 |
| commit | fc33a7bb9c6dd8f6e4a014976200f8fdabb3a45c (patch) | |
| tree | 26f4d676de476075545e58057aa5d8c57618741d /include/linux | |
| parent | 0d456fa4261f43433287a10fe3ec04a9818fac64 (diff) | |
[PATCH] per-mountpoint noatime/nodiratime
Turn noatime and nodiratime into per-mount instead of per-sb flags.
After all the preparations this is a rather trivial patch. The mount code
needs to treat the two options as per-mount instead of per-superblock, and
touch_atime needs to be changed to check the new MNT_ flags in addition to
the MS_ flags that are kept for filesystems that are always
noatime/nodiratime but not user settable anymore. Besides that core code
only nfs needed an update because it's leaving atime updates to the server
and thus sets the S_NOATIME flag on every inode, but needs to know whether
it's a real noatime mount for an getattr optimization.
While we're at it I've killed the IS_NOATIME/IS_NODIRATIME macros that were
only used by touch_atime.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/fs.h | 5 | ||||
| -rw-r--r-- | include/linux/mount.h | 8 |
2 files changed, 6 insertions, 7 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 85c5656756b6..d1e370d25f7b 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -114,8 +114,7 @@ extern int dir_notify_enable; | |||
| 114 | /* | 114 | /* |
| 115 | * Superblock flags that can be altered by MS_REMOUNT | 115 | * Superblock flags that can be altered by MS_REMOUNT |
| 116 | */ | 116 | */ |
| 117 | #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME|\ | 117 | #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK) |
| 118 | MS_NODIRATIME) | ||
| 119 | 118 | ||
| 120 | /* | 119 | /* |
| 121 | * Old magic mount flag and mask | 120 | * Old magic mount flag and mask |
| @@ -161,8 +160,6 @@ extern int dir_notify_enable; | |||
| 161 | #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA) | 160 | #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA) |
| 162 | #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) | 161 | #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) |
| 163 | #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE) | 162 | #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE) |
| 164 | #define IS_NOATIME(inode) (__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME)) | ||
| 165 | #define IS_NODIRATIME(inode) __IS_FLG(inode, MS_NODIRATIME) | ||
| 166 | #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL) | 163 | #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL) |
| 167 | 164 | ||
| 168 | #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD) | 165 | #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD) |
diff --git a/include/linux/mount.h b/include/linux/mount.h index b98a709f1794..b7472ae91fa4 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
| @@ -20,10 +20,12 @@ | |||
| 20 | #define MNT_NOSUID 0x01 | 20 | #define MNT_NOSUID 0x01 |
| 21 | #define MNT_NODEV 0x02 | 21 | #define MNT_NODEV 0x02 |
| 22 | #define MNT_NOEXEC 0x04 | 22 | #define MNT_NOEXEC 0x04 |
| 23 | #define MNT_SHARED 0x10 /* if the vfsmount is a shared mount */ | 23 | #define MNT_NOATIME 0x08 |
| 24 | #define MNT_UNBINDABLE 0x20 /* if the vfsmount is a unbindable mount */ | 24 | #define MNT_NODIRATIME 0x10 |
| 25 | 25 | ||
| 26 | #define MNT_PNODE_MASK (MNT_SHARED | MNT_UNBINDABLE) | 26 | #define MNT_SHARED 0x1000 /* if the vfsmount is a shared mount */ |
| 27 | #define MNT_UNBINDABLE 0x2000 /* if the vfsmount is a unbindable mount */ | ||
| 28 | #define MNT_PNODE_MASK 0x3000 /* propogation flag mask */ | ||
| 27 | 29 | ||
| 28 | struct vfsmount { | 30 | struct vfsmount { |
| 29 | struct list_head mnt_hash; | 31 | struct list_head mnt_hash; |
