On Thu 01-05-08 08:16:21, Badari Pulavarty wrote:As Mingming pointed out there are few other places where we could hold the bh reference. Note also that we accumulate references to buffers in the wbuf[] list and we need that for submit_bh() which consumes one bh reference. Generally, it seems to me as a too fragile and impractical rule "nobody can hold bh reference when not holding page lock" which is basically what it comes down to if you really want to be sure that journal_try_to_free_buffers() succeeds. And also note that in principle there are other places which hold references to buffers without holding the page lock - for example writepage() in ordered mode (although this one is in practice hardly triggerable). So how we could fix at least the races with commit code is to implement launder_page() callback for ext3/4 which would wait for the previous transaction commit in case the page has buffers that are part of that commit (I don't want this logic in journal_try_to_free_buffers() as that is called also on memory-reclaim path, but journal_launder_page() is fine with me). This would be correct but could considerably slow down O_DIRECT writes in cases they're mixed with buffered writes so I'm not sure if this is acceptable. OTOH with the ordered mode rewrite patch, the problem with commit code also goes away since there we don't need extra references to data buffers (we use just filemap_fdatawrite). Honza -- Jan Kara <jack@suse.cz> SUSE Labs, CR --
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Linus Torvalds | Linux 2.6.27 |
| Andrew Morton | Re: PROBLEM: high load average when idle |
git: | |
| Nguyen Thai Ngoc Duy | Re: VCS comparison table |
| Michael Hendricks | removing content from git history |
| walt | git versus CVS (versus bk) |
| Francis Moreau | emacs and git... |
| Marcos Laufer | dmesg IBM x3650 OpenBSD 4.3 |
| Richard Stallman | Real men don't attack straw men |
| Karel Kulhavy | lookup option in /etc/resolv.conf ignored |
| Alexey Suslikov | OT: OpenBSD on Asus eeePC |
| Paul Moore | [PATCH v7 00/17] Labeled networking patches for 2.6.28 |
| Dale Farnsworth | Re: [PATCH 01/39] mv643xx_eth: reverse topological sort of functions |
| David Miller | Re: xfrm_state locking regression... |
| Michael Chan | [PATCH net-next 4/6] bnx2: Eliminate TSO header modifications. |
| How to make my PCIE ATA storage device running in Linux | 8 hours ago | Linux general |
| sata/ide timeout errors on asus server-mb | 12 hours ago | Linux kernel |
| Shared swap partition | 12 hours ago | Linux general |
| usb mic not detected | 17 hours ago | Applications and Utilities |
| Problem in Inserting a module | 17 hours ago | Linux kernel |
| Treason Uncloaked | 23 hours ago | Linux kernel |
| high memory | 3 days ago | Linux kernel |
| semaphore access speed | 3 days ago | Applications and Utilities |
| the kernel how to power off the machine | 3 days ago | Linux kernel |
| Easter Eggs in windows XP | 3 days ago | Windows |
