Commit ec82687f authored by Dave Hansen's avatar Dave Hansen Committed by Al Viro

[PATCH] r/o bind mounts: elevate count for xfs timestamp updates

Elevate the write count during the xfs m/ctime updates.

XFS has to do it's own timestamp updates due to an unfortunate VFS
design limitation, so it will have to track writers by itself aswell.

[hch: split out from the touch_atime patch as it's not related to it at all]
Acked-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2f676cbc
...@@ -155,13 +155,6 @@ xfs_ichgtime_fast( ...@@ -155,13 +155,6 @@ xfs_ichgtime_fast(
*/ */
ASSERT((flags & XFS_ICHGTIME_ACC) == 0); ASSERT((flags & XFS_ICHGTIME_ACC) == 0);
/*
* We're not supposed to change timestamps in readonly-mounted
* filesystems. Throw it away if anyone asks us.
*/
if (unlikely(IS_RDONLY(inode)))
return;
if (flags & XFS_ICHGTIME_MOD) { if (flags & XFS_ICHGTIME_MOD) {
tvp = &inode->i_mtime; tvp = &inode->i_mtime;
ip->i_d.di_mtime.t_sec = (__int32_t)tvp->tv_sec; ip->i_d.di_mtime.t_sec = (__int32_t)tvp->tv_sec;
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include "xfs_vnodeops.h" #include "xfs_vnodeops.h"
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/mount.h>
#include <linux/writeback.h> #include <linux/writeback.h>
...@@ -670,10 +671,16 @@ xfs_write( ...@@ -670,10 +671,16 @@ xfs_write(
if (new_size > xip->i_size) if (new_size > xip->i_size)
xip->i_new_size = new_size; xip->i_new_size = new_size;
if (likely(!(ioflags & IO_INVIS))) { /*
* We're not supposed to change timestamps in readonly-mounted
* filesystems. Throw it away if anyone asks us.
*/
if (likely(!(ioflags & IO_INVIS) &&
!mnt_want_write(file->f_path.mnt))) {
file_update_time(file); file_update_time(file);
xfs_ichgtime_fast(xip, inode, xfs_ichgtime_fast(xip, inode,
XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
mnt_drop_write(file->f_path.mnt);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment