Re: [BUG] mtime&ctime updated when it should not

From: Jan Kara
Date: Mon Sep 01 2003 - 14:08:07 EST


> On Mon, Sep 01, 2003 at 08:11:13PM +0200, Jan Kara wrote:
> > Hello,
> >
> > one user pointed my attention to the fact that when the write fails
> > (for example when the user quota is exceeded) the modification time is
> > still updated (the problem appears both in 2.4 and 2.6). According to
> > SUSv3 that should not happen because the specification says that mtime
> > and ctime should be marked for update upon a successful completition
> > of a write (not that it would forbid updating the times in other cases
> > but I find it at least a bit nonintuitive).
> > The easiest fix would be probably to "backup" the times at the
> > beginning of the write and restore the original values when the write
> > fails (simply not updating the times would require more surgery because
> > for example vmtruncate() is called when the write fails and it also
> > updates the times).
> > So should I write the patch or is the current behaviour considered
> > correct?
>
> hmm, what if the request only partially succeeds?
>
> for example echo "five" >/tmp/x will create /tmp/x
> if inode limit permits it, but will leave it empty
> if the space limit does not ...
In thi case actually open(2) succeeds (so times will be set correctly)
but following write(2) fails so it won't change times...

> personally I wouldn't care about the modification
> time on such a quota fault ...
In my opinion correct behaviour is to change times if at least one
byte is written...

Honza

--
Jan Kara <jack@xxxxxxx>
SuSE CR Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/