From: "Stephen C. Tweedie" <sct@redhat.com>
To: Rob van Nieuwkerk <robn@verdi.et.tudelft.nl>
Cc: root@chaos.analogic.com, linux-kernel@vger.kernel.org,
Stephen Tweedie <sct@redhat.com>,
Marcelo Tosatti <marcelo@conectiva.com.br>
Subject: Re: 2.4 bug: fifo-write causes diskwrites to read-only fs !
Date: Fri, 30 May 2003 14:21:12 +0100 [thread overview]
Message-ID: <20030530132112.GA9572@redhat.com> (raw)
In-Reply-To: <200305282052.h4SKqUBw016537@verdi.et.tudelft.nl>
[-- Attachment #1: Type: text/plain, Size: 455 bytes --]
Hi,
On Wed, May 28, 2003 at 10:52:30PM +0200, Rob van Nieuwkerk wrote:
> I don't have the POSIX spec, but maybe it specifies what "read-only"
> is supposed to mean somewhere too ..
SingleUnix says:
http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap04.html#tag_04_07
"Marks for update, and updates themselves, are not done for files on
read-only file systems"
So we're wrong here. Patch below fixes it for me for 2.4.
Cheers,
Stephen
[-- Attachment #2: 4202-vfs-mctime-rofs.patch --]
[-- Type: text/plain, Size: 1602 bytes --]
--- linux-2.4-odirect/fs/inode.c.=K0004=.orig
+++ linux-2.4-odirect/fs/inode.c
@@ -1194,6 +1194,24 @@ void update_atime (struct inode *inode)
mark_inode_dirty_sync (inode);
} /* End Function update_atime */
+/**
+ * update_mctime - update the mtime and ctime
+ * @inode: inode accessed
+ *
+ * Update the modified and changed times on an inode for writes to special
+ * files such as fifos. No change is forced if the timestamps are already
+ * up-to-date or if the filesystem is readonly.
+ */
+
+void update_mctime (struct inode *inode)
+{
+ if (inode->i_mtime == CURRENT_TIME && inode->i_ctime == CURRENT_TIME)
+ return;
+ if ( IS_RDONLY (inode) ) return;
+ inode->i_ctime = inode->i_mtime = CURRENT_TIME;
+ mark_inode_dirty (inode);
+} /* End Function update_mctime */
+
/*
* Quota functions that want to walk the inode lists..
--- linux-2.4-odirect/fs/pipe.c.=K0004=.orig
+++ linux-2.4-odirect/fs/pipe.c
@@ -230,8 +230,7 @@ pipe_write(struct file *filp, const char
/* Signal readers asynchronously that there is more data. */
wake_up_interruptible(PIPE_WAIT(*inode));
- inode->i_ctime = inode->i_mtime = CURRENT_TIME;
- mark_inode_dirty(inode);
+ update_mctime(inode);
out:
up(PIPE_SEM(*inode));
--- linux-2.4-odirect/include/linux/fs.h.=K0004=.orig
+++ linux-2.4-odirect/include/linux/fs.h
@@ -201,6 +201,7 @@ extern int leases_enable, dir_notify_ena
#include <asm/byteorder.h>
extern void update_atime (struct inode *);
+extern void update_mctime (struct inode *);
#define UPDATE_ATIME(inode) update_atime (inode)
extern void buffer_init(unsigned long);
next prev parent reply other threads:[~2003-05-30 13:07 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-28 17:58 2.4 bug: fifo-write causes diskwrites to read-only fs ! Rob van Nieuwkerk
2003-05-28 18:52 ` Rob van Nieuwkerk
2003-05-28 19:17 ` Richard B. Johnson
2003-05-28 19:34 ` Rob van Nieuwkerk
2003-05-28 20:22 ` Richard B. Johnson
2003-05-28 20:52 ` Rob van Nieuwkerk
2003-05-30 13:21 ` Stephen C. Tweedie [this message]
2003-05-30 14:58 ` Christoph Hellwig
2003-05-30 15:18 ` Stephen C. Tweedie
2003-05-30 16:36 ` Andrew Morton
2003-05-28 19:22 ` Nuno Silva
2003-05-28 19:37 ` Rob van Nieuwkerk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030530132112.GA9572@redhat.com \
--to=sct@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo@conectiva.com.br \
--cc=robn@verdi.et.tudelft.nl \
--cc=root@chaos.analogic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.