Messages in this thread |  | | Date | Wed, 3 Oct 2001 03:05:17 -0400 (EDT) | From | Alexander Viro <> | Subject | Re: 2.4.11-pre2 fs/buffer.c: invalidate: busy buffer |
| |
On Wed, 3 Oct 2001, Neil Brown wrote:
> On Wednesday October 3, adilger@turbolabs.com wrote:
> > 3) Rewrite to do I/O directly via pagecache? > > 4) Rewrite to do I/O directly via generic_make_request just like it > does for all other I/O to underlying devices. > It is on my (mental) todo list, but doesn't have a high priority. > At the same time, it would be good to get write_disk_sb to notice > if the write failed.....
Folks, there's a problem aside of set_blocksize(). You are doing memset and memcpy on unlocked buffer returned by getblk(). That's a race - if that buffer is currently being read into, we will get a random crap. And write it to disk afterwards.
General rule: don't modify buffer you've got from getblk() unless you've locked it and mark it uptodate before you unlock. We had the same bug in ext2, BTW.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |