mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Andrew Morton <akpm@osdl.org>
Cc: theonetruekenny@yahoo.com, cel@citi.umich.edu,
	linux-kernel@vger.kernel.org
Subject: Re: infinite loop? with mmap, nfs, pwrite, O_DIRECT
Date: Mon, 21 Nov 2005 19:49:00 -0500	[thread overview]
Message-ID: <1132620540.8011.58.camel@lade.trondhjem.org> (raw)
In-Reply-To: <20051121162837.1a952543.akpm@osdl.org>

On Mon, 2005-11-21 at 16:28 -0800, Andrew Morton wrote:
> Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> >
> > On Mon, 2005-11-21 at 16:09 -0800, Andrew Morton wrote:
> > > Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> > > >
> > > > The only difference I can see between the two paths is the call to
> > > >  unmap_mapping_range(). What effect would that have?
> > > 
> > > It shoots down any mapped pagecache over the affected file region.  Because
> > > the direct-io write is about to make that pagecache out-of-date.  If the
> > > application tries to use that data again it'll get a major fault and will
> > > re-read the file contents.
> > 
> > I assume then, that this couldn't be the cause of the
> > invalidate_inode_pages() failing to complete?
> 
> It sounds unlikely.  This hang is associated with crossing the 2G boundary
> isn't it?
> 
> I don't think we've seen a sysrq-T trace from the hang?

Kenny sent us this trace. The thing appears to be hanging in
unmap_mapping_range() as called by invalidate_inode_pages2()

Pid: 4271, comm:            writetest
EIP: 0060:[<c029cd2b>] CPU: 0
EIP is at prio_tree_first+0x26/0xb8
 EFLAGS: 00000292    Tainted: P       (2.6.15-rc1)
EAX: 00000000 EBX: f6765d94 ECX: f6765d94 EDX: 00000200
ESI: 00000000 EDI: f5da475c EBP: f6765db4 DS: 007b ES: 007b
CR0: 8005003b CR2: b7590000 CR3: 36b5d000 CR4: 000006d0
 [<c029ce5e>] prio_tree_next+0xa1/0xa3
 [<c014822a>] vma_prio_tree_next+0x27/0x51
 [<c014b1dc>] unmap_mapping_range+0x18b/0x210
 [<c0120d06>] __do_softirq+0x6a/0xd1
 [<c0103a24>] apic_timer_interrupt+0x1c/0x24
 [<c0146577>] invalidate_inode_pages2_range+0x215/0x24c
 [<c01465cd>] invalidate_inode_pages2+0x1f/0x26
 [<c01e4031>] nfs_file_direct_write+0x1e1/0x21a
 [<c0159ea4>] do_sync_write+0xc7/0x10d
 [<c012ff32>] autoremove_wake_function+0x0/0x57
 [<c0159f92>] vfs_write+0xa8/0x177
 [<c015a275>] sys_pwrite64+0x88/0x8c
 [<c0102f51>] syscall_call+0x7/0xb

> > Unless there is some
> > method to prevent applications from faulting in the page while we're
> > inside generic_file_direct_IO(), then the same race would be able to
> > occur there.
> 
> Yes, there are still windows.
> 
> Another thing the unmap_mapping_range() does is to push pte-dirty bits into
> the software-dirty flags, so the modified data does get written.  If we
> didn't do this, a page which was dirtied via mmap before the direct-io
> write would get written back _after_ the direct-io write, arguably causing
> corruption.

As far as we're concerned, anybody using direct-io is responsible for
enforcing their own ordering. The pagecache is one thing, but in NFS,
direct IO is mainly used in situations where several clients are writing
to the same file. There is no way to ensure fully safe mmap() semantics.

Cheers,
  Trond


  reply	other threads:[~2005-11-22  0:49 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20051115224645.27832.qmail@web34103.mail.mud.yahoo.com>
2005-11-15 23:47 ` mmap over nfs leads to excessive system load Kenny Simpson
2005-11-16  4:31   ` William Lee Irwin III
2005-11-16  6:05     ` Kenny Simpson
2005-11-16  7:45   ` Andrew Morton
2005-11-16 14:03     ` Trond Myklebust
2005-11-16 15:01       ` Kenny Simpson
2005-11-16 17:44         ` Trond Myklebust
2005-11-16 18:00           ` Andrew Morton
2005-11-16 18:34             ` Trond Myklebust
2005-11-16 18:38               ` Christoph Hellwig
2005-11-17 13:08                 ` Nikita Danilov
2005-11-16 19:09               ` Andrew Morton
2005-11-16 20:05                 ` Trond Myklebust
2005-11-16 20:56                   ` Kenny Simpson
2005-11-16 21:02                     ` Kenny Simpson
2005-11-16 21:09                     ` Trond Myklebust
2005-11-16 21:17                       ` Kenny Simpson
2005-11-16 21:41                       ` Kenny Simpson
2005-11-16 21:57                         ` Trond Myklebust
2005-11-16 22:04                           ` Kenny Simpson
2005-11-16 22:39                           ` Kenny Simpson
2005-11-16 23:06                             ` Trond Myklebust
2005-11-17 15:40                               ` Chuck Lever
2005-11-17 16:56                                 ` Kenny Simpson
2005-11-17 16:01                               ` Kenny Simpson
2005-11-17 21:04                                 ` Andrew Morton
2005-11-17 21:15                                   ` Kenny Simpson
2005-11-18 16:55                                   ` Kenny Simpson
2005-11-18 17:26                                   ` Kenny Simpson
2005-11-18 21:57                                   ` Kenny Simpson
2005-11-21 17:13                                   ` infinite loop? with mmap, nfs, pwrite, O_DIRECT Kenny Simpson
2005-11-21 17:49                                     ` Chuck Lever
2005-11-21 18:40                                       ` Kenny Simpson
2005-11-21 20:39                                         ` Andrew Morton
2005-11-21 21:39                                           ` Kenny Simpson
2005-11-21 22:42                                             ` Trond Myklebust
2005-11-21 23:14                                               ` Kenny Simpson
2005-11-21 23:34                                               ` Andrew Morton
2005-11-21 23:58                                                 ` Trond Myklebust
2005-11-22  0:09                                                   ` Andrew Morton
2005-11-22  0:18                                                     ` Trond Myklebust
2005-11-22  0:25                                                       ` Trond Myklebust
2005-11-22  0:28                                                       ` Andrew Morton
2005-11-22  0:49                                                         ` Trond Myklebust [this message]
2005-11-30 20:04                                                           ` nfs unhappiness with memory pressure Kenny Simpson
2005-11-30 21:42                                                             ` Keith Mannthey
2005-11-30 22:18                                                               ` Kenny Simpson
2005-12-01 14:49                                                               ` Kenny Simpson
2005-12-05 18:01                                                             ` Kenny Simpson
2005-12-05 19:44                                                               ` Kenny Simpson
2005-12-05 20:14                                                                 ` Kenny Simpson
2005-12-05 20:13                                                               ` Trond Myklebust
2005-12-05 20:33                                                                 ` Trond Myklebust
2005-12-05 20:52                                                                   ` Nick Piggin
2005-12-05 21:18                                                                     ` Trond Myklebust
2005-12-05 21:23                                                                       ` Trond Myklebust
2005-12-05 23:40                                                                         ` Nick Piggin
2005-12-06  0:48                                                                           ` Trond Myklebust
2005-12-05 21:51                                                                       ` Kenny Simpson
2005-12-05 21:04                                                                   ` Kenny Simpson
2005-12-05 22:39                                                                     ` Trond Myklebust
2005-12-06  3:36                                                                       ` Andrew Morton
2005-12-06  3:36                                                                       ` Andrew Morton
2005-12-06  4:40                                                                         ` Trond Myklebust
2005-12-06  5:42                                                                           ` Nick Piggin
2005-12-06 12:18                                                                             ` Trond Myklebust
2005-12-06 19:31                                                                         ` Kenny Simpson
2005-12-06 15:51                                                                       ` Kenny Simpson
2005-11-21 21:54                                           ` infinite loop? with mmap, nfs, pwrite, O_DIRECT Kenny Simpson
2005-11-21 20:12                                       ` Kenny Simpson
2005-11-17 17:02                               ` mmap over nfs leads to excessive system load Chuck Lever
2005-11-17 17:07                                 ` Trond Myklebust
2005-11-18 19:59                               ` Kenny Simpson
2005-11-16 21:31                   ` Andrew Morton
2005-11-16 21:49                     ` Trond Myklebust
2005-11-16 22:10                       ` Andrew Morton
2005-11-16 22:23                         ` Trond Myklebust
2005-11-16 22:38                           ` Trond Myklebust
2005-11-16 22:50                             ` Andrew Morton
2005-11-16 22:44                           ` Andrew Morton
2005-11-16 23:10                             ` Trond Myklebust
2005-11-17  0:06                             ` Trond Myklebust
2005-11-17  0:25                               ` Andrew Morton
2005-11-17  0:28                                 ` Trond Myklebust
2005-11-17  0:38                                   ` Andrew Morton
2005-11-17  0:47                                     ` Trond Myklebust
2005-11-16 18:48           ` Kenny Simpson
2005-11-16 19:06           ` Kenny Simpson

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=1132620540.8011.58.camel@lade.trondhjem.org \
    --to=trond.myklebust@fys.uio.no \
    --cc=akpm@osdl.org \
    --cc=cel@citi.umich.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=theonetruekenny@yahoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®