linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Sterba <dsterba@suse.cz>
To: Goldwyn Rodrigues <rgoldwyn@suse.de>
Cc: linux-btrfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	hch@infradead.org, darrick.wong@oracle.com, fdmanana@kernel.org
Subject: Re: [PATCH 0/5 v2] btrfs direct-io using iomap
Date: Wed, 27 Nov 2019 16:51:08 +0100	[thread overview]
Message-ID: <20191127155108.GT2734@twin.jikos.cz> (raw)
In-Reply-To: <20191126031456.12150-1-rgoldwyn@suse.de>

On Mon, Nov 25, 2019 at 09:14:51PM -0600, Goldwyn Rodrigues wrote:
> This is an effort to use iomap for direct I/O in btrfs. This would
> change the call from __blockdev_direct_io() to iomap_dio_rw().
> 
> The main objective is to lose the buffer head and use bio defined by
> iomap code, and hopefully to use more of generic-FS codebase.
> 
> These patches are based on xfs/iomap-for-next, though I tested it
> against the patches on xfs/iomap-for-next on top of v5.4 (there are no
> changes to existing iomap patches).
> 
> I have tested it against xfstests/btrfs.
> 
> Changes since v1
> - Incorporated back the efficiency change for inode locking
> - Review comments about coding style and git comments
> - Merge related patches into one
> - Direct read to go through btrfs_direct_IO()
> - Removal of no longer used function dio_end_io()

I see a lockdep assertion during test btrfs/004

iomap_dio_rw()
...
	lockdep_assert_held(&inode->i_rwsem);

btrfs/004               [15:46:30][   69.749908] run fstests btrfs/004 at 2019-11-27 15:46:30
[   70.180401] BTRFS info (device vda): disk space caching is enabled
[   70.183496] BTRFS info (device vda): has skinny extents
[   70.378865] BTRFS: device fsid a10200b4-f17d-49a0-8c82-b06b69871613 devid 1 transid 5 /dev/vdb scanned by mkfs.btrfs (21271)
[   70.405858] BTRFS info (device vdb): turning on discard
[   70.408279] BTRFS info (device vdb): disk space caching is enabled
[   70.410630] BTRFS info (device vdb): has skinny extents
[   70.412358] BTRFS info (device vdb): flagging fs with big metadata feature
[   70.420386] BTRFS info (device vdb): checking UUID tree
[   70.427675] ------------[ cut here ]------------
[   70.429375] WARNING: CPU: 2 PID: 21300 at fs/iomap/direct-io.c:413 iomap_dio_rw+0x255/0x560
[   70.432208] Modules linked in: xxhash_generic btrfs blake2b_generic libcrc32c crc32c_intel xor zstd_decompress zstd_compress xxhash lzo_compress lzo_decompress raid6_pq loop
[   70.437096] CPU: 2 PID: 21300 Comm: fsstress Not tainted 5.4.0-default+ #881
[   70.439135] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58-rebuilt.opensuse.org 04/01/2014
[   70.442462] RIP: 0010:iomap_dio_rw+0x255/0x560
[   70.449092] RSP: 0018:ffffa36dc5b37c80 EFLAGS: 00010246
[   70.450701] RAX: 0000000000000000 RBX: ffffa36dc5b37e78 RCX: 0000000000000001
[   70.453062] RDX: ffff88d5b3f75500 RSI: ffff88d5a0c29018 RDI: ffff88d5b3f75d10
[   70.455308] RBP: ffffa36dc5b37d20 R08: 0000000000000001 R09: ffffffffaef84850
[   70.457479] R10: ffffa36dc5b37d40 R11: 0000000000007000 R12: ffffa36dc5b37e50
[   70.459479] R13: 0000000000049000 R14: ffff88d5a0c28ec0 R15: 0000000000049000
[   70.461790] FS:  00007fab1f5cdb80(0000) GS:ffff88d5bda00000(0000) knlGS:0000000000000000
[   70.464601] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   70.466503] CR2: 000000000041e000 CR3: 0000000061097006 CR4: 0000000000160ee0
[   70.468475] Call Trace:
[   70.469477]  ? btrfs_direct_IO+0x215/0x360 [btrfs]
[   70.471201]  ? __lock_acquired+0x1f0/0x320
[   70.472837]  ? btrfs_direct_IO+0xda/0x360 [btrfs]
[   70.474453]  btrfs_direct_IO+0xda/0x360 [btrfs]
[   70.476101]  ? lockdep_hardirqs_on+0x103/0x190
[   70.477732]  btrfs_file_write_iter+0x20b/0x5f0 [btrfs]
[   70.479450]  ? _copy_to_user+0x76/0x90
[   70.480943]  new_sync_write+0x118/0x1b0
[   70.482446]  vfs_write+0xde/0x1d0
[   70.483789]  ksys_write+0x68/0xe0
[   70.485136]  do_syscall_64+0x50/0x210
[   70.486578]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[   70.488390] RIP: 0033:0x7fab1f7a8f93
[   70.495054] RSP: 002b:00007ffea7b21208 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[   70.497693] RAX: ffffffffffffffda RBX: 0000000000007000 RCX: 00007fab1f7a8f93
[   70.499708] RDX: 0000000000007000 RSI: 0000000000416000 RDI: 0000000000000003
[   70.501754] RBP: 0000000000000003 R08: 0000000000416000 R09: 0000000000000231
[   70.503682] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000009
[   70.505622] R13: 0000000000049000 R14: 0000000000416000 R15: 0000000000000000
[   70.507683] irq event stamp: 1532
[   70.508931] hardirqs last  enabled at (1531): [<ffffffffc01d7bfb>] get_alloc_profile+0x1ab/0x2b0 [btrfs]
[   70.512256] hardirqs last disabled at (1532): [<ffffffffad002a8b>] trace_hardirqs_off_thunk+0x1a/0x1c
[   70.515039] softirqs last  enabled at (0): [<ffffffffad07efd0>] copy_process+0x680/0x1b70
[   70.517193] softirqs last disabled at (0): [<0000000000000000>] 0x0
[   70.519153] ---[ end trace 7fa25c75a89dbc97 ]---

The branch is xfs/iomap-for-next + this patchset.

      parent reply	other threads:[~2019-11-27 15:51 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-26  3:14 [PATCH 0/5 v2] btrfs direct-io using iomap Goldwyn Rodrigues
2019-11-26  3:14 ` [PATCH 1/5] fs: Export generic_file_buffered_read() Goldwyn Rodrigues
2019-11-26  3:43   ` Matthew Wilcox
2019-11-26 10:10   ` Johannes Thumshirn
2019-11-26 10:43     ` Johannes Thumshirn
2019-11-26  3:14 ` [PATCH 2/5] iomap: add a filesystem hook for direct I/O bio submission Goldwyn Rodrigues
2019-11-26 10:53   ` Nikolay Borisov
2019-11-26 11:51   ` Johannes Thumshirn
2019-11-26  3:14 ` [PATCH 3/5] btrfs: Switch to iomap_dio_rw() for dio Goldwyn Rodrigues
2019-11-26 11:54   ` Nikolay Borisov
2019-11-26 12:13   ` Nikolay Borisov
2019-11-26  3:14 ` [PATCH 4/5] btrfs: Wait for extent bits to release page Goldwyn Rodrigues
2019-11-26 12:38   ` Nikolay Borisov
2019-11-26 12:42   ` Johannes Thumshirn
2019-11-26  3:14 ` [PATCH 5/5] fs: Remove dio_end_io() Goldwyn Rodrigues
2019-11-26 12:39   ` Nikolay Borisov
2019-11-26 12:50   ` Johannes Thumshirn
2019-11-27 15:51 ` David Sterba [this message]

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=20191127155108.GT2734@twin.jikos.cz \
    --to=dsterba@suse.cz \
    --cc=darrick.wong@oracle.com \
    --cc=fdmanana@kernel.org \
    --cc=hch@infradead.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=rgoldwyn@suse.de \
    /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;
as well as URLs for NNTP newsgroup(s).