Re: Bad/Unaligned block number requested

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 19 Apr 2018, Coly Li wrote:

> On 2018/4/19 8:12 AM, Eric Wheeler wrote:
> > On Tue, 17 Apr 2018, Coly Li wrote:
> > 
> >> On 2018/4/17 6:45 AM, Eric Wheeler wrote:
> >>> On Sat, 14 Apr 2018, Coly Li wrote:
> >>>
> >>>> On 2018/4/14 6:46 AM, Eric Wheeler wrote:
> >>>>> Hello all,
> >>>>>
> >>>>> We are running bcache in 4.1.49 with both the cache and backing device 
> >>>>> having 4k blocks. The disk stack is DRBD->dm-thin->bcache->[sdc->sdb] 
> >>>>> Where sdc is the cache.
> >>>>>
> >>>>> Sometimes we get errors like the following:
> >>>>>
> >>>>> [432015.934869] block drbd8065: Began resync as SyncTarget (will sync 880 KB [220 bits set]).
> >>>>> [432015.949469] sd 0:0:0:1: [sdb] Unaligned block number requested: sector_size=4096, block=15724561783, blk_rq=9
> >>>>> [432015.950347] sd 0:0:0:2: [sdc] Unaligned block number requested: sector_size=4096, block=353041040, blk_rq=7
> >>>>> [432015.951146] bcache: bch_count_io_errors() dm-6: IO error on reading from cache, recovering
> >>>>> [432015.952015] block drbd8065: read: error=-5 s=19281488s
> >>>>> [432015.952866] block drbd8065: Local IO failed in drbd_endio_read_sec_final.
> >>>>> [432015.953777] sd 0:0:0:2: [sdc] Unaligned block number requested: sector_size=4096, block=387084784, blk_rq=7
> >>>>> [432015.954710] bcache: bch_count_io_errors() dm-6: IO error on reading from cache, recovering
> >>>>> [432015.959037] sd 0:0:0:1: [sdb] Unaligned block number requested: sector_size=4096, block=15725385535, blk_rq=1
> >>>>> [432015.959938] block drbd8065: read: error=-5 s=19391384s
> >>>>> [432015.960862] block drbd8065: Local IO failed in drbd_endio_read_sec_final.
> >>>>>
> >>>>>
> >>>>> Note that 15724561783 is not divisible by 8, thus it is unaligned to 4k 
> >>>>> blocks.
> >>>>>
> >>>>> Does anyone know if the bcache code is enforcing correct alignment?
> >>>>>
> >>>>> Is there any way that bcache could introduce misalignment?
> >>>>>
> >>>>> We ran blockdev --getbsz and --getpbsz all the way down the stack and 
> >>>>> everything reports 4k.
> >>>>
> >>>> Hi Eric,
> >>>>
> >>>> Do you use 4.1 stable tree, or with your extra patches ? It would be
> >>>> helpful if I may access your kernel tree.
> >>>>
> >>>> So far I cannot tell where the problem is, I just feel there might be
> >>>> some hidden issue triggered by 4KB sector size hard drive. Maybe adding
> >>>> a garden code to detect unaligned I/O request from bcache will be
> >>>> helpful to diagnose the root cause.
> >>>
> >>> Hi Coly,
> >>>
> >>> I just pushed the branch that we built for this system to bitbucket:
> >>> 	https://bitbucket.org/ewheelerinc/linux/branch/ewi-4.1.49-rpmbuild
> >>>
> >>> There are a few changes, but probably nothing that you haven't seen:
> >>>
> >>> 1. We use the BFQ scheduler (but the problem presents in CFQ also)
> >>> 2. dmthin fixes were backported from 4.2/4.3 to fix pool space issues on 
> >>> rolling snapshots
> >>> 3. bcache and dmcrypt have my ioprio patches, but no dmcrypt in this bug
> >>> 4. ibrs patches from Oracle are included for Spectre mitigation
> >>> 5. We attempted to use Mauricio's patch to fix 4k alignment issues, which 
> >>> shows in our tree as 4a595ccc, but it did not fix the issue.
> >>> 6. We updated the error strings in sd.c with our commits aa372d91 and 
> >>> f603bf7e while troubleshooting this issue.
> >>>
> >>> Thank you for your help, let me know if there is anything else that you 
> >>> need to help troubleshoot. I can produce this pretty reliably at the 
> >>> moment.
> >>
> >> Eric,
> >>
> >> Is it possible to apply the attached patch ? This patch will dump call
> >> trace if the request to backing device is not 4KB aligned. Then we can
> >> see what happens indeed.
> > 
> > 
> > Thanks Coly.  It produced this trace.  Can you tell what it is doing?
> > 
> > [   81.426439] bcache: check_4k_alignment() PTR_OFFSET is not 4KB aligned: 4368280612101
> > [   81.426439] CPU: 4 PID: 37 Comm: kworker/4:0 Tainted: G        W  O    4.1.49-2.el7.x86_64 #1
> > [   81.426440] Hardware name: Supermicro X9SCL/X9SCM/X9SCL/X9SCM, BIOS 2.10 01/09/2014
> > [   81.426443] Workqueue: bcache bch_data_insert_keys [bcache]
> > [   81.426444]  0000000000000286 c3f07f1af1e6f322 ffff88080ba276d8 ffffffff816ff534
> > [   81.426445]  0000000000000000 ffff8807f8d5d4e8 ffff88080ba27728 ffffffffa057bfa4
> > [   81.426445]  ffff88080ba27718 00000000812a17ec 0000000000000086 ffff8807f8d5d4e8
> > [   81.426446] Call Trace:
> > [   81.426447]  [<ffffffff816ff534>] dump_stack+0x63/0x81
> > [   81.426450]  [<ffffffffa057bfa4>] __bch_cut_front+0x1a4/0x1b0 [bcache]
> > [   81.426454]  [<ffffffffa0585cb3>] bch_extent_insert_fixup+0x593/0x680 [bcache]
> > [   81.426458]  [<ffffffffa057c347>] ? __bch_btree_iter_init+0x77/0xc0 [bcache]
> > [   81.426461]  [<ffffffffa057c474>] bch_btree_insert_key+0xc4/0x320 [bcache]
> > [   81.426465]  [<ffffffffa057ddae>] btree_insert_key+0x5e/0x120 [bcache]
> > [   81.426468]  [<ffffffffa057e6f2>] bch_btree_insert_keys+0x62/0x250 [bcache]
> > [   81.426472]  [<ffffffffa0581c4c>] bch_btree_insert_node+0x13c/0x3d0 [bcache]
> > [   81.426476]  [<ffffffffa0582e88>] btree_insert_fn+0x28/0x50 [bcache]
> > [   81.426479]  [<ffffffffa05804f4>] bch_btree_map_nodes_recurse+0x54/0x190 [bcache]
> > [   81.426482]  [<ffffffffa0582e60>] ? bch_btree_insert_check_key+0x1c0/0x1c0 [bcache]
> > [   81.426483]  [<ffffffff817051a6>] ? down_write+0x16/0x50
> > [   81.426487]  [<ffffffffa0580278>] ? bch_btree_node_get+0x78/0x2a0 [bcache]
> > [   81.426490]  [<ffffffffa05805a5>] bch_btree_map_nodes_recurse+0x105/0x190 [bcache]
> > [   81.426494]  [<ffffffffa0582e60>] ? bch_btree_insert_check_key+0x1c0/0x1c0 [bcache]
> > [   81.426497]  [<ffffffffa05802d5>] ? bch_btree_node_get+0xd5/0x2a0 [bcache]
> > [   81.426500]  [<ffffffffa05805a5>] bch_btree_map_nodes_recurse+0x105/0x190 [bcache]
> > [   81.426504]  [<ffffffffa0582e60>] ? bch_btree_insert_check_key+0x1c0/0x1c0 [bcache]
> > [   81.426507]  [<ffffffffa058376c>] __bch_btree_map_nodes+0x11c/0x150 [bcache]
> > [   81.426510]  [<ffffffffa0582e60>] ? bch_btree_insert_check_key+0x1c0/0x1c0 [bcache]
> > [   81.426514]  [<ffffffffa0583894>] bch_btree_insert+0xf4/0x170 [bcache]
> > [   81.426515]  [<ffffffff810e7000>] ? prepare_to_wait_event+0xf0/0xf0
> > [   81.426519]  [<ffffffffa058b2be>] bch_data_insert_keys+0x3e/0x160 [bcache]
> > [   81.426520]  [<ffffffff810bac60>] process_one_work+0x150/0x450
> > [   81.426521]  [<ffffffff810bb8c2>] worker_thread+0x112/0x530
> > [   81.426522]  [<ffffffff810bb7b0>] ? rescuer_thread+0x3e0/0x3e0
> > [   81.426523]  [<ffffffff810c10d8>] kthread+0xd8/0xf0
> > [   81.426524]  [<ffffffff810c1000>] ? kthread_create_on_node+0x1b0/0x1b0
> > [   81.426525]  [<ffffffff817074d2>] ret_from_fork+0x42/0x70
> > [   81.426525]  [<ffffffff810c1000>] ? kthread_create_on_node+0x1b0/0x1b0
> 
> Hi Eric,
> 
> I will post another patch for your test. This patch only provides
> information of LBA offset on cache device, backing device LBA check is
> missing. For cache device, 4KB align is not hardware mandatory IMHO.
> 
> Will post an update patch soon.

Thank you Coly!

Note that our cache and backing device both have 4k logical blocks.

--
Eric Wheeler


> 
> Thanks.
> 
> Coly Li
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux