On Fri, Dec 16, 2022 at 08:53:44PM +0000, Matthew Wilcox (Oracle) wrote: > Remove uses of kmap() and b_page. Also move the set_buffer_uptodate() > call to after the memcpy() so that the memory barrier in > set_buffer_uptodate() actually ensures that the old data can't be visible. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > --- > fs/reiserfs/journal.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c > index 9ce4ec296b74..faf2f09d82e1 100644 > --- a/fs/reiserfs/journal.c > +++ b/fs/reiserfs/journal.c > @@ -4200,21 +4200,19 @@ static int do_journal_end(struct reiserfs_transaction_handle *th, int flags) > /* copy all the real blocks into log area. dirty log blocks */ > if (buffer_journaled(cn->bh)) { > struct buffer_head *tmp_bh; > + size_t offset = offset_in_folio(cn->bh->b_folio, > + cn->bh->b_data); > char *addr; > - struct page *page; > tmp_bh = > journal_getblk(sb, > SB_ONDISK_JOURNAL_1st_BLOCK(sb) + > ((cur_write_start + > jindex) % > SB_ONDISK_JOURNAL_SIZE(sb))); > + addr = kmap_local_folio(cn->bh->b_folio, offset); > + memcpy(tmp_bh->b_data, addr, cn->bh->b_size); > + kunmap_local(addr); I think we should have a memcpy_{to|from}_folio() like we do for the pages. Did I miss this in the earlier patch? Ira > set_buffer_uptodate(tmp_bh); > - page = cn->bh->b_page; > - addr = kmap(page); > - memcpy(tmp_bh->b_data, > - addr + offset_in_page(cn->bh->b_data), > - cn->bh->b_size); > - kunmap(page); > mark_buffer_dirty(tmp_bh); > jindex++; > set_buffer_journal_dirty(cn->bh); > -- > 2.35.1 >