[Ocfs2-devel] [PATCH] Bug#841144: kernel BUG at /build/linux-Wgpe2M/linux-4.8.11/fs/ocfs2/alloc.c:1514!
John Lightsey
john at nixnuts.net
Mon Nov 20 20:24:56 PST 2017
On Tue, 2017-11-21 at 11:04 +0800, piaojun wrote:
> > > new = NULL;
> > > unlock:
> > > spin_unlock(&oi->ip_lock);
> > > @@ -2246,7 +2250,7 @@ static int ocfs2_dio_get_block(struct inode
> > > *inode, sector_t iblock,
> > > ue->ue_phys = desc->c_phys;
> > >
> > > list_splice_tail_init(&wc->w_unwritten_list,
> > > &dwc->dw_zero_list);
> > > - dwc->dw_zero_count++;
> > > + dwc->dw_zero_count += wc->w_unwritten_count;
>
> I prefer using a loop to calculate 'dwc->dw_zero_count' rather than
> introducing a new variable as below:
>
> list_for_each(iter, &wc->w_unwritten_list)
> dwc->dw_zero_count++;
If you want to iterate through the list to calculate the length rather
than tracking the length as the list grows, it would make more sense to
remove dw_zero_count.
If you'd prefer walking all of the elements to calculate the length,
this can just be done in ocfs2_dio_end_io_write() where the length of
the list is actually used.
I assumed that the intent of dw_zero_count was to avoid an unnecessary
iteration through dw_zero_list to determine the length.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
Url : http://oss.oracle.com/pipermail/ocfs2-devel/attachments/20171120/85820571/attachment-0001.bin
More information about the Ocfs2-devel
mailing list