2006-12-03 20:31:53

by Mark Fasheh

[permalink] [raw]
Subject: What's in ocfs2.git

This e-mail describes the OCFS2 patches which I intend to push
upstream to Linus for 2.6.20.

* Various ocfs2 cleanups, including a patchset by me intended to clean up
some of the internal ocfs2 journal api. Mostly this revolves around
removing the ocfs2_journal_handle wrapper around handle_t. The immediate
benefits are better readability and a slightly smaller memory footprint
for open journal transactions.


* Configfs gets some small cleanups and some mutex annotations.


* Atime updates - thanks to Tiger Yang <[email protected]>, ocfs2 now
writes to the inode atime field. This doesn't require any disk changes,
and is completely backwards compatible with older ocfs2 versions. An
inodes Atime is only updated if it hasn't changed within a certain
quantum. The user can define their own value at mount time, with 0
indicating that atime should always be updated. This is very similar to
the scheme implemented by gfs2. In the future, I'd like to see a "relative
atime" mode, which functions in the manner described by Valerie Henson at:

http://lkml.org/lkml/2006/8/25/380


* sys_splice - ocfs2 now has splice read and write support. Thanks again to
Tiger for the bulk of this functionality. Mostly we make use of the
generic_splice_read() and generic_file_splice_write_nolock() functions
provided already in fs/splice.c.

- There is one patch in the ocfs2 splice() series external to fs/ocfs2 - a
simple export of should_remove_suid(). This is done for code reuse
purposes. That particular patch can be seen at:

http://ftp.kernel.org/pub/linux/kernel/people/mfasheh/ocfs2/ocfs2_git_patches/ocfs2-upstream-linus-20061201/0025-Export-should_remove_suid.txt

I'll also attach it to this mail for review purposes.


* Last in the list of notable patches is a somewhat involved fix by Kurt
Hackel <[email protected]> within the ocfs2 dlm. We had temporarily
disable automatic migration of certain lock types because it was causing
us problems during stress testing. This patch fixes those problems and
re-enables migration. Overall this should reduce memory usage of the ocfs2
dlm.


The patches can be found in

git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git upstream-linus

Additionally, broken out patches are available at:

http://ftp.kernel.org/pub/linux/kernel/people/mfasheh/ocfs2/ocfs2_git_patches/ocfs2-upstream-linus-20060924/

Thanks,
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]


[PATCH] Export should_remove_suid()

This helps us avoid replicating the same logic within file system drivers.

Signed-off-by: Mark Fasheh <[email protected]>

---

mm/filemap.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

d23a147bb6e8d467e8df73b6589888717da3b9ce
diff --git a/mm/filemap.c b/mm/filemap.c
index 7b84dc8..13df01c 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1893,6 +1893,7 @@ int should_remove_suid(struct dentry *de

return 0;
}
+EXPORT_SYMBOL(should_remove_suid);

int __remove_suid(struct dentry *dentry, int kill)
{
--
1.3.3


2006-12-04 10:52:39

by Steven Whitehouse

[permalink] [raw]
Subject: Re: What's in ocfs2.git

Hi,

On Sun, 2006-12-03 at 12:31 -0800, Mark Fasheh wrote:
> This e-mail describes the OCFS2 patches which I intend to push
> upstream to Linus for 2.6.20.
>
> * Atime updates - thanks to Tiger Yang <[email protected]>, ocfs2 now
> writes to the inode atime field. This doesn't require any disk changes,
> and is completely backwards compatible with older ocfs2 versions. An
> inodes Atime is only updated if it hasn't changed within a certain
> quantum. The user can define their own value at mount time, with 0
> indicating that atime should always be updated. This is very similar to
> the scheme implemented by gfs2. In the future, I'd like to see a "relative
> atime" mode, which functions in the manner described by Valerie Henson at:
>
> http://lkml.org/lkml/2006/8/25/380
>
I'd like to second that. [adding Val Henson to the "to"] What (if
anything) remains to be done before the relative atime patch is ready to
go upstream? I'm happy to help out here if required,

Steve.


2006-12-05 00:10:19

by Mark Fasheh

[permalink] [raw]
Subject: Re: What's in ocfs2.git

Hi Steve,

On Mon, Dec 04, 2006 at 10:54:53AM +0000, Steven Whitehouse wrote:
> > In the future, I'd like to see a "relative atime" mode, which functions
> > in the manner described by Valerie Henson at:
> >
> > http://lkml.org/lkml/2006/8/25/380
> >
> I'd like to second that. [adding Val Henson to the "to"] What (if
> anything) remains to be done before the relative atime patch is ready to
> go upstream? I'm happy to help out here if required,
Last time I looked at them, things seemed to be in pretty good shape - it
wasn't a very large patch series.

The thing is (I'm going from memory here), gfs2 and ocfs2 are likely to just
make use of the option parsing (and setting of the MNT_RELATIME flag), and
ignore the changes to touch_atime() since we we handle our own atime
updates.

Overall I think it's a matter of pushing the patches to the kernel and to
mount(8). For ocfs2/gfs2 we implement a small amount of the logic in our
"lock and update atime" functions.
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2006-12-05 00:37:36

by Valerie Henson

[permalink] [raw]
Subject: Relative atime (was Re: What's in ocfs2.git)

On Mon, Dec 04, 2006 at 04:10:07PM -0800, Mark Fasheh wrote:
> Hi Steve,
>
> On Mon, Dec 04, 2006 at 10:54:53AM +0000, Steven Whitehouse wrote:
> > > In the future, I'd like to see a "relative atime" mode, which functions
> > > in the manner described by Valerie Henson at:
> > >
> > > http://lkml.org/lkml/2006/8/25/380
> > >
> > I'd like to second that. [adding Val Henson to the "to"] What (if
> > anything) remains to be done before the relative atime patch is ready to
> > go upstream? I'm happy to help out here if required,
> Last time I looked at them, things seemed to be in pretty good shape - it
> wasn't a very large patch series.

Yep, the relative atime patch is tiny and pretty much done - just
needs some soak time in -mm and a little more review (cc'd Viro and
fsdevel). Kernel patch against 2.6.18-rc4 appended, patch to mount
following. (Note that my web server suffered a RAID failure and my
patches page is unavailable till the restore finishes.)

-VAL

Add "relatime" (relative atime) support. Relative atime only updates
the atime if the previous atime is older than the mtime or ctime.
Like noatime, but useful for applications like mutt that need to know
when a file has been read since it was last modified.

Signed-off-by: Valerie Henson <[email protected]>

---
fs/inode.c | 11 ++++++++++-
fs/namespace.c | 5 ++++-
include/linux/fs.h | 1 +
include/linux/mount.h | 1 +
4 files changed, 16 insertions(+), 2 deletions(-)

--- linux-2.6.18-rc4-relatime.orig/fs/inode.c
+++ linux-2.6.18-rc4-relatime/fs/inode.c
@@ -1200,7 +1200,16 @@ void touch_atime(struct vfsmount *mnt, s
return;

now = current_fs_time(inode->i_sb);
- if (!timespec_equal(&inode->i_atime, &now)) {
+ if (timespec_equal(&inode->i_atime, &now))
+ return;
+ /*
+ * With relative atime, only update atime if the previous
+ * atime is earlier than either the ctime or mtime.
+ */
+ if (!mnt ||
+ !(mnt->mnt_flags & MNT_RELATIME) ||
+ (timespec_compare(&inode->i_atime, &inode->i_mtime) < 0) ||
+ (timespec_compare(&inode->i_atime, &inode->i_ctime) < 0)) {
inode->i_atime = now;
mark_inode_dirty_sync(inode);
}
--- linux-2.6.18-rc4-relatime.orig/fs/namespace.c
+++ linux-2.6.18-rc4-relatime/fs/namespace.c
@@ -376,6 +376,7 @@ static int show_vfsmnt(struct seq_file *
{ MNT_NOEXEC, ",noexec" },
{ MNT_NOATIME, ",noatime" },
{ MNT_NODIRATIME, ",nodiratime" },
+ { MNT_RELATIME, ",relatime" },
{ 0, NULL }
};
struct proc_fs_info *fs_infop;
@@ -1413,9 +1414,11 @@ long do_mount(char *dev_name, char *dir_
mnt_flags |= MNT_NOATIME;
if (flags & MS_NODIRATIME)
mnt_flags |= MNT_NODIRATIME;
+ if (flags & MS_RELATIME)
+ mnt_flags |= MNT_RELATIME;

flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE |
- MS_NOATIME | MS_NODIRATIME);
+ MS_NOATIME | MS_NODIRATIME | MS_RELATIME);

/* ... and get the mountpoint */
retval = path_lookup(dir_name, LOOKUP_FOLLOW, &nd);
--- linux-2.6.18-rc4-relatime.orig/include/linux/fs.h
+++ linux-2.6.18-rc4-relatime/include/linux/fs.h
@@ -119,6 +119,7 @@ extern int dir_notify_enable;
#define MS_PRIVATE (1<<18) /* change to private */
#define MS_SLAVE (1<<19) /* change to slave */
#define MS_SHARED (1<<20) /* change to shared */
+#define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */
#define MS_ACTIVE (1<<30)
#define MS_NOUSER (1<<31)

--- linux-2.6.18-rc4-relatime.orig/include/linux/mount.h
+++ linux-2.6.18-rc4-relatime/include/linux/mount.h
@@ -27,6 +27,7 @@ struct namespace;
#define MNT_NOEXEC 0x04
#define MNT_NOATIME 0x08
#define MNT_NODIRATIME 0x10
+#define MNT_RELATIME 0x20

#define MNT_SHRINKABLE 0x100

2006-12-05 00:57:36

by Valerie Henson

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Mon, Dec 04, 2006 at 04:36:20PM -0800, Valerie Henson wrote:
> On Mon, Dec 04, 2006 at 04:10:07PM -0800, Mark Fasheh wrote:
> > Hi Steve,
> >
> > On Mon, Dec 04, 2006 at 10:54:53AM +0000, Steven Whitehouse wrote:
> > > > In the future, I'd like to see a "relative atime" mode, which functions
> > > > in the manner described by Valerie Henson at:
> > > >
> > > > http://lkml.org/lkml/2006/8/25/380
> > > >
> > > I'd like to second that. [adding Val Henson to the "to"] What (if
> > > anything) remains to be done before the relative atime patch is ready to
> > > go upstream? I'm happy to help out here if required,
> > Last time I looked at them, things seemed to be in pretty good shape - it
> > wasn't a very large patch series.

And the userland part.

-VAL

Add the "relatime" (relative atime) option support to mount. Relative
atime only updates the atime if the previous atime is older than the
mtime or ctime. Like noatime, but useful for applications like mutt
that need to know when a file has been read since it was last
modified.

Signed-off-by: Valerie Henson <[email protected]>

---
mount/mount.8 | 7 +++++++
mount/mount.c | 6 ++++++
mount/mount_constants.h | 4 ++++
3 files changed, 17 insertions(+)
--- util-linux-2.13-pre7.orig/mount/mount.8
+++ util-linux-2.13-pre7/mount/mount.8
@@ -586,6 +586,13 @@ access on the news spool to speed up new
.B nodiratime
Do not update directory inode access times on this filesystem.
.TP
+.B relatime
+Update inode access times relative to modify or change time. Access
+time is only updated if the previous access time was earlier than the
+current modify or change time. (Similar to noatime, but doesn't break
+mutt or other applications that need to know if a file has been read
+since the last time it was modified.)
+.TP
.B noauto
Can only be mounted explicitly (i.e., the
.B \-a
--- util-linux-2.13-pre7.orig/mount/mount.c
+++ util-linux-2.13-pre7/mount/mount.c
@@ -164,6 +164,12 @@ static const struct opt_map opt_map[] =
{ "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */
{ "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */
#endif
+#ifdef MS_RELATIME
+ { "relatime", 0, 0, MS_RELATIME }, /* Update access times relative to
+ mtime/ctime */
+ { "norelatime", 0, 1, MS_RELATIME }, /* Update access time without regard
+ to mtime/ctime */
+#endif
{ NULL, 0, 0, 0 }
};

--- util-linux-2.13-pre7.orig/mount/mount_constants.h
+++ util-linux-2.13-pre7/mount/mount_constants.h
@@ -57,6 +57,10 @@ if we have a stack or plain mount - moun
#ifndef MS_VERBOSE
#define MS_VERBOSE 0x8000 /* 32768 */
#endif
+#ifndef MS_RELATIME
+#define MS_RELATIME 0x200000 /* 200000: Update access times relative
+ to mtime/ctime */
+#endif
/*
* Magic mount flag number. Had to be or-ed to the flag values.
*/

2006-12-05 22:20:45

by Mark Fasheh

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Mon, Dec 04, 2006 at 04:36:20PM -0800, Valerie Henson wrote:
> > Last time I looked at them, things seemed to be in pretty good shape - it
> > wasn't a very large patch series.
>
> Yep, the relative atime patch is tiny and pretty much done - just
> needs some soak time in -mm and a little more review (cc'd Viro and
> fsdevel). Kernel patch against 2.6.18-rc4 appended, patch to mount
> following. (Note that my web server suffered a RAID failure and my
> patches page is unavailable till the restore finishes.)

Well, here's what the ocfs2 patch would look like. If we care to push this
forward, some time in -mm would be nice...
--Mark

From: Mark Fasheh <[email protected]>
Date: Tue, 5 Dec 2006 14:13:41 -0800
Subject: [PATCH] ocfs2: relative atime support

Update ocfs2_should_update_atime() to understand the MNT_RELATIME flag and
to test against mtime / ctime accordingly.

Signed-off-by: Mark Fasheh <[email protected]>
---
fs/ocfs2/file.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 8786b3c..16a9b5e 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -154,6 +154,15 @@ int ocfs2_should_update_atime(struct ino
return 0;

now = CURRENT_TIME;
+
+ if (vfsmnt->mnt_flags & MNT_RELATIME) {
+ if ((timespec_compare(&inode->i_atime, &inode->i_mtime) < 0) ||
+ (timespec_compare(&inode->i_atime, &inode->i_ctime) < 0))
+ return 1;
+
+ return 0;
+ }
+
if ((now.tv_sec - inode->i_atime.tv_sec <= osb->s_atime_quantum))
return 0;
else
--
1.4.2.4

2006-12-06 04:58:36

by Andrew Morton

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

> On Mon, 4 Dec 2006 16:36:20 -0800 Valerie Henson <[email protected]> wrote:
> Add "relatime" (relative atime) support. Relative atime only updates
> the atime if the previous atime is older than the mtime or ctime.
> Like noatime, but useful for applications like mutt that need to know
> when a file has been read since it was last modified.

That seems like a good idea.

I found touch_atime() to be rather putrid, so I hacked it around a bit. The
end result:

void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
{
struct inode *inode = dentry->d_inode;
struct timespec now;

if (IS_RDONLY(inode))
return;
if (inode->i_flags & S_NOATIME)
return;
if (inode->i_sb->s_flags & MS_NOATIME)
return;
if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
return;

/*
* We may have a NULL vfsmount when coming from NFSD
*/
if (mnt) {
if (mnt->mnt_flags & MNT_NOATIME)
return;
if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
return;

if (mnt->mnt_flags & MNT_RELATIME) {
/*
* With relative atime, only update atime if the
* previous atime is earlier than either the ctime or
* mtime.
*/
if (timespec_compare(&inode->i_mtime,
&inode->i_atime) < 0 &&
timespec_compare(&inode->i_ctime,
&inode->i_atime) < 0)
return;
}
}

now = current_fs_time(inode->i_sb);
if (timespec_equal(&inode->i_atime, &now))
return;

inode->i_atime = now;
mark_inode_dirty_sync(inode);
}

Does it still look right?

Note the reordering to avoid the current_fs_time() call if poss.


That's the easy part. How are we going to get mount(8) patched?

2006-12-06 06:12:05

by Andrew Morton

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Tue, 5 Dec 2006 14:20:27 -0800
Mark Fasheh <[email protected]> wrote:

> Update ocfs2_should_update_atime() to understand the MNT_RELATIME flag and
> to test against mtime / ctime accordingly.
>
> ...
>
> --- a/fs/ocfs2/file.c
> +++ b/fs/ocfs2/file.c
> @@ -154,6 +154,15 @@ int ocfs2_should_update_atime(struct ino
> return 0;
>
> now = CURRENT_TIME;
> +
> + if (vfsmnt->mnt_flags & MNT_RELATIME) {
> + if ((timespec_compare(&inode->i_atime, &inode->i_mtime) < 0) ||
> + (timespec_compare(&inode->i_atime, &inode->i_ctime) < 0))
> + return 1;
> +
> + return 0;

So if atime == mtime == ctime, we don't update the atime.

I think we should. It seems risky to leave them all equal.

2006-12-06 08:59:46

by Valerie Henson

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Tue, Dec 05, 2006 at 08:58:02PM -0800, Andrew Morton wrote:
> > On Mon, 4 Dec 2006 16:36:20 -0800 Valerie Henson <[email protected]> wrote:
> > Add "relatime" (relative atime) support. Relative atime only updates
> > the atime if the previous atime is older than the mtime or ctime.
> > Like noatime, but useful for applications like mutt that need to know
> > when a file has been read since it was last modified.
>
> That seems like a good idea.
>
> I found touch_atime() to be rather putrid, so I hacked it around a bit. The
> end result:

I like that rather better - add my:

Signed-off-by: Valerie Henson <[email protected]>

> That's the easy part. How are we going to get mount(8) patched?

Well, the nodiratime documentation got in. (I was going to add that as
part of this apatch, but lo and behold.)

-VAL

2006-12-06 09:42:44

by Eric Dumazet

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Wednesday 06 December 2006 05:58, Andrew Morton wrote:
> > On Mon, 4 Dec 2006 16:36:20 -0800 Valerie Henson
> > <[email protected]> wrote: Add "relatime" (relative atime)
> > support. Relative atime only updates the atime if the previous atime is
> > older than the mtime or ctime. Like noatime, but useful for applications
> > like mutt that need to know when a file has been read since it was last
> > modified.
>
> That seems like a good idea.
>
> I found touch_atime() to be rather putrid, so I hacked it around a bit.

I find this function full of tests...

> The end result:
>
> void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
> {
> struct inode *inode = dentry->d_inode;
> struct timespec now;
>
> if (IS_RDONLY(inode))
> return;

While we are adding new tests, we could try to be smart here testing both
MS_RDONLY and MS_NOATIME.

if (__IS_FLG(inode, MS_RDONLY | MS_NOATIME))
return;

> if (inode->i_flags & S_NOATIME)
> return;

> if (inode->i_sb->s_flags & MS_NOATIME)
> return;
So that that one can be deleted.

>????????if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
>????????????????return;

if (__IS_FLG(inode, MS_NODIRATIME) && S_ISDIR(inode->i_mode))
return;

Eric

2006-12-06 12:48:40

by Arjan van de Ven

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)



>
> > if (inode->i_sb->s_flags & MS_NOATIME)
> > return;
> So that that one can be deleted.


Hi,

I would mostly expect the compiler to be relatively smart about this and
group a bunch of these tests together... so I rather see readable code
than optimized code for something the compiler should be doing for us ;)

Greetings,
Arjan van de Ven

2006-12-09 03:16:35

by Valerie Henson

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Tue, Dec 05, 2006 at 08:58:02PM -0800, Andrew Morton wrote:
> That's the easy part. How are we going to get mount(8) patched?

Karel, interested in taking a look at the following patch? The kernel
bits are in -mm currently.

-VAL

Add the "relatime" (relative atime) option support to mount. Relative
atime only updates the atime if the previous atime is older than the
mtime or ctime. Like noatime, but useful for applications like mutt
that need to know when a file has been read since it was last
modified.

Cc: Adrian Bunk <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Karel Zak <[email protected]>

Signed-off-by: Valerie Henson <[email protected]>

---
mount/mount.8 | 7 +++++++
mount/mount.c | 6 ++++++
mount/mount_constants.h | 4 ++++
3 files changed, 17 insertions(+)

--- util-linux-2.13-pre7.orig/mount/mount.8
+++ util-linux-2.13-pre7/mount/mount.8
@@ -586,6 +586,13 @@ access on the news spool to speed up new
.B nodiratime
Do not update directory inode access times on this filesystem.
.TP
+.B relatime
+Update inode access times relative to modify or change time. Access
+time is only updated if the previous access time was earlier than the
+current modify or change time. (Similar to noatime, but doesn't break
+mutt or other applications that need to know if a file has been read
+since the last time it was modified.)
+.TP
.B noauto
Can only be mounted explicitly (i.e., the
.B \-a
--- util-linux-2.13-pre7.orig/mount/mount.c
+++ util-linux-2.13-pre7/mount/mount.c
@@ -164,6 +164,12 @@ static const struct opt_map opt_map[] =
{ "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */
{ "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */
#endif
+#ifdef MS_RELATIME
+ { "relatime", 0, 0, MS_RELATIME }, /* Update access times relative to
+ mtime/ctime */
+ { "norelatime", 0, 1, MS_RELATIME }, /* Update access time without regard
+ to mtime/ctime */
+#endif
{ NULL, 0, 0, 0 }
};

--- util-linux-2.13-pre7.orig/mount/mount_constants.h
+++ util-linux-2.13-pre7/mount/mount_constants.h
@@ -57,6 +57,10 @@ if we have a stack or plain mount - moun
#ifndef MS_VERBOSE
#define MS_VERBOSE 0x8000 /* 32768 */
#endif
+#ifndef MS_RELATIME
+#define MS_RELATIME 0x200000 /* 200000: Update access times relative
+ to mtime/ctime */
+#endif
/*
* Magic mount flag number. Had to be or-ed to the flag values.
*/

2006-12-12 09:30:57

by Karel Zak

[permalink] [raw]
Subject: Re: Relative atime (was Re: What's in ocfs2.git)

On Fri, Dec 08, 2006 at 07:15:14PM -0800, Valerie Henson wrote:
> On Tue, Dec 05, 2006 at 08:58:02PM -0800, Andrew Morton wrote:
> > That's the easy part. How are we going to get mount(8) patched?
>
> Karel, interested in taking a look at the following patch? The kernel
> bits are in -mm currently.

The patch looks good. I'll add it to my development util-linux tree.
Thanks.

Karel

> Add the "relatime" (relative atime) option support to mount. Relative
> atime only updates the atime if the previous atime is older than the
> mtime or ctime. Like noatime, but useful for applications like mutt
> that need to know when a file has been read since it was last
> modified.
>
> Cc: Adrian Bunk <[email protected]>
> Cc: Al Viro <[email protected]>
> Cc: Karel Zak <[email protected]>
>
> Signed-off-by: Valerie Henson <[email protected]>
>
> ---
> mount/mount.8 | 7 +++++++
> mount/mount.c | 6 ++++++
> mount/mount_constants.h | 4 ++++
> 3 files changed, 17 insertions(+)
>
> --- util-linux-2.13-pre7.orig/mount/mount.8
> +++ util-linux-2.13-pre7/mount/mount.8
> @@ -586,6 +586,13 @@ access on the news spool to speed up new
> .B nodiratime
> Do not update directory inode access times on this filesystem.
> .TP
> +.B relatime
> +Update inode access times relative to modify or change time. Access
> +time is only updated if the previous access time was earlier than the
> +current modify or change time. (Similar to noatime, but doesn't break
> +mutt or other applications that need to know if a file has been read
> +since the last time it was modified.)
> +.TP
> .B noauto
> Can only be mounted explicitly (i.e., the
> .B \-a
> --- util-linux-2.13-pre7.orig/mount/mount.c
> +++ util-linux-2.13-pre7/mount/mount.c
> @@ -164,6 +164,12 @@ static const struct opt_map opt_map[] =
> { "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */
> { "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */
> #endif
> +#ifdef MS_RELATIME
> + { "relatime", 0, 0, MS_RELATIME }, /* Update access times relative to
> + mtime/ctime */
> + { "norelatime", 0, 1, MS_RELATIME }, /* Update access time without regard
> + to mtime/ctime */
> +#endif
> { NULL, 0, 0, 0 }
> };
>
> --- util-linux-2.13-pre7.orig/mount/mount_constants.h
> +++ util-linux-2.13-pre7/mount/mount_constants.h
> @@ -57,6 +57,10 @@ if we have a stack or plain mount - moun
> #ifndef MS_VERBOSE
> #define MS_VERBOSE 0x8000 /* 32768 */
> #endif
> +#ifndef MS_RELATIME
> +#define MS_RELATIME 0x200000 /* 200000: Update access times relative
> + to mtime/ctime */
> +#endif
> /*
> * Magic mount flag number. Had to be or-ed to the flag values.
> */
> -
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Karel Zak <[email protected]>