[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <1249318687.29890.28.camel@tucsk>
Date: Mon, 03 Aug 2009 18:58:07 +0200
From: Miklos Szeredi <mszeredi@...e.cz>
To: Amerigo Wang <amwang@...hat.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org, heiko.carstens@...ibm.com,
linux-fsdevel@...r.kernel.org, viro@...iv.linux.org.uk
Subject: Re: [Patch] pipe: use file_update_time() when hold i_mutex
On Wed, 2009-07-22 at 17:21 +0800, Amerigo Wang wrote:
> Miklos Szeredi wrote:
> > On Tue, 2009-07-21 at 18:07 +0800, Amerigo Wang wrote:
> >
> >> Andrew Morton wrote:
> >>
> >>> On Mon, 6 Jul 2009 01:35:30 -0400
> >>> Amerigo Wang <amwang@...hat.com> wrote:
> >>>
> >>>
> >>>
> >>>> file_update_time() should be called with i_mutex held,
> >>>> move it before mutex_unlock().
> >>>>
> >>>>
> >>>>
> >>> Why do you believe that file_update_time() needs i_mutex?
> >>>
> >>>
> >> file_update_time() modifies inode, no? :)
> >>
> >
> > So does touch_atime(), yet neither needs i_mutex.
> >
> Yes?
>
> Then how the inode is protected when file_update_time() modifies
> it?
Protected against what?
For example the inode isn't protected against concurrent access by
stat(2), since that doesn't take i_mutex.
And indeed it looks like there are races there, since set/get operations
are not atomic on the timestamp, so stat could return a garbled value if
it races with file_update_time() or touch_atime().
Possibly worth fixing, but I'm not sure how to do that without affecting
the scalability of stat and friends and without adding too much
complexity.
Thanks,
Miklos
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists