From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Ryusuke Konishi <konishi.ryusuke@gmail.com>,
syzbot+0d5b462a6f07447991b3@syzkaller.appspotmail.com,
syzbot+34ef28bb2aeb28724aa0@syzkaller.appspotmail.com,
Hao Sun <sunhao.th@gmail.com>,
David Hildenbrand <david@redhat.com>,
Matthew Wilcox <willy@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 4.14 066/210] nilfs2: fix lockdep warnings in page operations for btree nodes
Date: Mon, 24 Oct 2022 13:29:43 +0200 [thread overview]
Message-ID: <20221024112959.192988322@linuxfoundation.org> (raw)
In-Reply-To: <20221024112956.797777597@linuxfoundation.org>
From: Ryusuke Konishi <konishi.ryusuke@gmail.com>
commit e897be17a441fa637cd166fc3de1445131e57692 upstream.
Patch series "nilfs2 lockdep warning fixes".
The first two are to resolve the lockdep warning issue, and the last one
is the accompanying cleanup and low priority.
Based on your comment, this series solves the issue by separating inode
object as needed. Since I was worried about the impact of the object
composition changes, I tested the series carefully not to cause
regressions especially for delicate functions such like disk space
reclamation and snapshots.
This patch (of 3):
If CONFIG_LOCKDEP is enabled, nilfs2 hits lockdep warnings at
inode_to_wb() during page/folio operations for btree nodes:
WARNING: CPU: 0 PID: 6575 at include/linux/backing-dev.h:269 inode_to_wb include/linux/backing-dev.h:269 [inline]
WARNING: CPU: 0 PID: 6575 at include/linux/backing-dev.h:269 folio_account_dirtied mm/page-writeback.c:2460 [inline]
WARNING: CPU: 0 PID: 6575 at include/linux/backing-dev.h:269 __folio_mark_dirty+0xa7c/0xe30 mm/page-writeback.c:2509
Modules linked in:
...
RIP: 0010:inode_to_wb include/linux/backing-dev.h:269 [inline]
RIP: 0010:folio_account_dirtied mm/page-writeback.c:2460 [inline]
RIP: 0010:__folio_mark_dirty+0xa7c/0xe30 mm/page-writeback.c:2509
...
Call Trace:
__set_page_dirty include/linux/pagemap.h:834 [inline]
mark_buffer_dirty+0x4e6/0x650 fs/buffer.c:1145
nilfs_btree_propagate_p fs/nilfs2/btree.c:1889 [inline]
nilfs_btree_propagate+0x4ae/0xea0 fs/nilfs2/btree.c:2085
nilfs_bmap_propagate+0x73/0x170 fs/nilfs2/bmap.c:337
nilfs_collect_dat_data+0x45/0xd0 fs/nilfs2/segment.c:625
nilfs_segctor_apply_buffers+0x14a/0x470 fs/nilfs2/segment.c:1009
nilfs_segctor_scan_file+0x47a/0x700 fs/nilfs2/segment.c:1048
nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1224 [inline]
nilfs_segctor_collect fs/nilfs2/segment.c:1494 [inline]
nilfs_segctor_do_construct+0x14f3/0x6c60 fs/nilfs2/segment.c:2036
nilfs_segctor_construct+0x7a7/0xb30 fs/nilfs2/segment.c:2372
nilfs_segctor_thread_construct fs/nilfs2/segment.c:2480 [inline]
nilfs_segctor_thread+0x3c3/0xf90 fs/nilfs2/segment.c:2563
kthread+0x405/0x4f0 kernel/kthread.c:327
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
This is because nilfs2 uses two page caches for each inode and
inode->i_mapping never points to one of them, the btree node cache.
This causes inode_to_wb(inode) to refer to a different page cache than
the caller page/folio operations such like __folio_start_writeback(),
__folio_end_writeback(), or __folio_mark_dirty() acquired the lock.
This patch resolves the issue by allocating and using an additional
inode to hold the page cache of btree nodes. The inode is attached
one-to-one to the traditional nilfs2 inode if it requires a block
mapping with b-tree. This setup change is in memory only and does not
affect the disk format.
Link: https://lkml.kernel.org/r/1647867427-30498-1-git-send-email-konishi.ryusuke@gmail.com
Link: https://lkml.kernel.org/r/1647867427-30498-2-git-send-email-konishi.ryusuke@gmail.com
Link: https://lore.kernel.org/r/YXrYvIo8YRnAOJCj@casper.infradead.org
Link: https://lore.kernel.org/r/9a20b33d-b38f-b4a2-4742-c1eb5b8e4d6c@redhat.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Reported-by: syzbot+0d5b462a6f07447991b3@syzkaller.appspotmail.com
Reported-by: syzbot+34ef28bb2aeb28724aa0@syzkaller.appspotmail.com
Reported-by: Hao Sun <sunhao.th@gmail.com>
Reported-by: David Hildenbrand <david@redhat.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/nilfs2/btnode.c | 23 ++++++++++-
fs/nilfs2/btnode.h | 1
fs/nilfs2/btree.c | 27 +++++++++----
fs/nilfs2/gcinode.c | 7 ++-
fs/nilfs2/inode.c | 104 +++++++++++++++++++++++++++++++++++++++++++++-------
fs/nilfs2/mdt.c | 7 ++-
fs/nilfs2/nilfs.h | 14 ++-----
fs/nilfs2/page.c | 7 +--
fs/nilfs2/segment.c | 11 +++--
fs/nilfs2/super.c | 5 +-
10 files changed, 155 insertions(+), 51 deletions(-)
--- a/fs/nilfs2/btnode.c
+++ b/fs/nilfs2/btnode.c
@@ -29,6 +29,23 @@
#include "page.h"
#include "btnode.h"
+
+/**
+ * nilfs_init_btnc_inode - initialize B-tree node cache inode
+ * @btnc_inode: inode to be initialized
+ *
+ * nilfs_init_btnc_inode() sets up an inode for B-tree node cache.
+ */
+void nilfs_init_btnc_inode(struct inode *btnc_inode)
+{
+ struct nilfs_inode_info *ii = NILFS_I(btnc_inode);
+
+ btnc_inode->i_mode = S_IFREG;
+ ii->i_flags = 0;
+ memset(&ii->i_bmap_data, 0, sizeof(struct nilfs_bmap));
+ mapping_set_gfp_mask(btnc_inode->i_mapping, GFP_NOFS);
+}
+
void nilfs_btnode_cache_clear(struct address_space *btnc)
{
invalidate_mapping_pages(btnc, 0, -1);
@@ -38,7 +55,7 @@ void nilfs_btnode_cache_clear(struct add
struct buffer_head *
nilfs_btnode_create_block(struct address_space *btnc, __u64 blocknr)
{
- struct inode *inode = NILFS_BTNC_I(btnc);
+ struct inode *inode = btnc->host;
struct buffer_head *bh;
bh = nilfs_grab_buffer(inode, btnc, blocknr, BIT(BH_NILFS_Node));
@@ -66,7 +83,7 @@ int nilfs_btnode_submit_block(struct add
struct buffer_head **pbh, sector_t *submit_ptr)
{
struct buffer_head *bh;
- struct inode *inode = NILFS_BTNC_I(btnc);
+ struct inode *inode = btnc->host;
struct page *page;
int err;
@@ -166,7 +183,7 @@ int nilfs_btnode_prepare_change_key(stru
struct nilfs_btnode_chkey_ctxt *ctxt)
{
struct buffer_head *obh, *nbh;
- struct inode *inode = NILFS_BTNC_I(btnc);
+ struct inode *inode = btnc->host;
__u64 oldkey = ctxt->oldkey, newkey = ctxt->newkey;
int err;
--- a/fs/nilfs2/btnode.h
+++ b/fs/nilfs2/btnode.h
@@ -39,6 +39,7 @@ struct nilfs_btnode_chkey_ctxt {
struct buffer_head *newbh;
};
+void nilfs_init_btnc_inode(struct inode *btnc_inode);
void nilfs_btnode_cache_clear(struct address_space *);
struct buffer_head *nilfs_btnode_create_block(struct address_space *btnc,
__u64 blocknr);
--- a/fs/nilfs2/btree.c
+++ b/fs/nilfs2/btree.c
@@ -67,7 +67,8 @@ static void nilfs_btree_free_path(struct
static int nilfs_btree_get_new_block(const struct nilfs_bmap *btree,
__u64 ptr, struct buffer_head **bhp)
{
- struct address_space *btnc = &NILFS_BMAP_I(btree)->i_btnode_cache;
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
+ struct address_space *btnc = btnc_inode->i_mapping;
struct buffer_head *bh;
bh = nilfs_btnode_create_block(btnc, ptr);
@@ -479,7 +480,8 @@ static int __nilfs_btree_get_block(const
struct buffer_head **bhp,
const struct nilfs_btree_readahead_info *ra)
{
- struct address_space *btnc = &NILFS_BMAP_I(btree)->i_btnode_cache;
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
+ struct address_space *btnc = btnc_inode->i_mapping;
struct buffer_head *bh, *ra_bh;
sector_t submit_ptr = 0;
int ret;
@@ -1751,6 +1753,10 @@ nilfs_btree_prepare_convert_and_insert(s
dat = nilfs_bmap_get_dat(btree);
}
+ ret = nilfs_attach_btree_node_cache(&NILFS_BMAP_I(btree)->vfs_inode);
+ if (ret < 0)
+ return ret;
+
ret = nilfs_bmap_prepare_alloc_ptr(btree, dreq, dat);
if (ret < 0)
return ret;
@@ -1923,7 +1929,7 @@ static int nilfs_btree_prepare_update_v(
path[level].bp_ctxt.newkey = path[level].bp_newreq.bpr_ptr;
path[level].bp_ctxt.bh = path[level].bp_bh;
ret = nilfs_btnode_prepare_change_key(
- &NILFS_BMAP_I(btree)->i_btnode_cache,
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
&path[level].bp_ctxt);
if (ret < 0) {
nilfs_dat_abort_update(dat,
@@ -1949,7 +1955,7 @@ static void nilfs_btree_commit_update_v(
if (buffer_nilfs_node(path[level].bp_bh)) {
nilfs_btnode_commit_change_key(
- &NILFS_BMAP_I(btree)->i_btnode_cache,
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
&path[level].bp_ctxt);
path[level].bp_bh = path[level].bp_ctxt.bh;
}
@@ -1968,7 +1974,7 @@ static void nilfs_btree_abort_update_v(s
&path[level].bp_newreq.bpr_req);
if (buffer_nilfs_node(path[level].bp_bh))
nilfs_btnode_abort_change_key(
- &NILFS_BMAP_I(btree)->i_btnode_cache,
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
&path[level].bp_ctxt);
}
@@ -2144,7 +2150,8 @@ static void nilfs_btree_add_dirty_buffer
static void nilfs_btree_lookup_dirty_buffers(struct nilfs_bmap *btree,
struct list_head *listp)
{
- struct address_space *btcache = &NILFS_BMAP_I(btree)->i_btnode_cache;
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
+ struct address_space *btcache = btnc_inode->i_mapping;
struct list_head lists[NILFS_BTREE_LEVEL_MAX];
struct pagevec pvec;
struct buffer_head *bh, *head;
@@ -2198,12 +2205,12 @@ static int nilfs_btree_assign_p(struct n
path[level].bp_ctxt.newkey = blocknr;
path[level].bp_ctxt.bh = *bh;
ret = nilfs_btnode_prepare_change_key(
- &NILFS_BMAP_I(btree)->i_btnode_cache,
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
&path[level].bp_ctxt);
if (ret < 0)
return ret;
nilfs_btnode_commit_change_key(
- &NILFS_BMAP_I(btree)->i_btnode_cache,
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
&path[level].bp_ctxt);
*bh = path[level].bp_ctxt.bh;
}
@@ -2408,6 +2415,10 @@ int nilfs_btree_init(struct nilfs_bmap *
if (nilfs_btree_root_broken(nilfs_btree_get_root(bmap), bmap->b_inode))
ret = -EIO;
+ else
+ ret = nilfs_attach_btree_node_cache(
+ &NILFS_BMAP_I(bmap)->vfs_inode);
+
return ret;
}
--- a/fs/nilfs2/gcinode.c
+++ b/fs/nilfs2/gcinode.c
@@ -135,9 +135,10 @@ int nilfs_gccache_submit_read_data(struc
int nilfs_gccache_submit_read_node(struct inode *inode, sector_t pbn,
__u64 vbn, struct buffer_head **out_bh)
{
+ struct inode *btnc_inode = NILFS_I(inode)->i_assoc_inode;
int ret;
- ret = nilfs_btnode_submit_block(&NILFS_I(inode)->i_btnode_cache,
+ ret = nilfs_btnode_submit_block(btnc_inode->i_mapping,
vbn ? : pbn, pbn, REQ_OP_READ, 0,
out_bh, &pbn);
if (ret == -EEXIST) /* internal code (cache hit) */
@@ -179,7 +180,7 @@ int nilfs_init_gcinode(struct inode *ino
ii->i_flags = 0;
nilfs_bmap_init_gc(ii->i_bmap);
- return 0;
+ return nilfs_attach_btree_node_cache(inode);
}
/**
@@ -194,7 +195,7 @@ void nilfs_remove_all_gcinodes(struct th
ii = list_first_entry(head, struct nilfs_inode_info, i_dirty);
list_del_init(&ii->i_dirty);
truncate_inode_pages(&ii->vfs_inode.i_data, 0);
- nilfs_btnode_cache_clear(&ii->i_btnode_cache);
+ nilfs_btnode_cache_clear(ii->i_assoc_inode->i_mapping);
iput(&ii->vfs_inode);
}
}
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -37,12 +37,14 @@
* @cno: checkpoint number
* @root: pointer on NILFS root object (mounted checkpoint)
* @for_gc: inode for GC flag
+ * @for_btnc: inode for B-tree node cache flag
*/
struct nilfs_iget_args {
u64 ino;
__u64 cno;
struct nilfs_root *root;
- int for_gc;
+ bool for_gc;
+ bool for_btnc;
};
static int nilfs_iget_test(struct inode *inode, void *opaque);
@@ -331,7 +333,8 @@ static int nilfs_insert_inode_locked(str
unsigned long ino)
{
struct nilfs_iget_args args = {
- .ino = ino, .root = root, .cno = 0, .for_gc = 0
+ .ino = ino, .root = root, .cno = 0, .for_gc = false,
+ .for_btnc = false
};
return insert_inode_locked4(inode, ino, nilfs_iget_test, &args);
@@ -561,6 +564,13 @@ static int nilfs_iget_test(struct inode
return 0;
ii = NILFS_I(inode);
+ if (test_bit(NILFS_I_BTNC, &ii->i_state)) {
+ if (!args->for_btnc)
+ return 0;
+ } else if (args->for_btnc) {
+ return 0;
+ }
+
if (!test_bit(NILFS_I_GCINODE, &ii->i_state))
return !args->for_gc;
@@ -572,15 +582,15 @@ static int nilfs_iget_set(struct inode *
struct nilfs_iget_args *args = opaque;
inode->i_ino = args->ino;
- if (args->for_gc) {
+ NILFS_I(inode)->i_cno = args->cno;
+ NILFS_I(inode)->i_root = args->root;
+ if (args->root && args->ino == NILFS_ROOT_INO)
+ nilfs_get_root(args->root);
+
+ if (args->for_gc)
NILFS_I(inode)->i_state = BIT(NILFS_I_GCINODE);
- NILFS_I(inode)->i_cno = args->cno;
- NILFS_I(inode)->i_root = NULL;
- } else {
- if (args->root && args->ino == NILFS_ROOT_INO)
- nilfs_get_root(args->root);
- NILFS_I(inode)->i_root = args->root;
- }
+ if (args->for_btnc)
+ NILFS_I(inode)->i_state |= BIT(NILFS_I_BTNC);
return 0;
}
@@ -588,7 +598,8 @@ struct inode *nilfs_ilookup(struct super
unsigned long ino)
{
struct nilfs_iget_args args = {
- .ino = ino, .root = root, .cno = 0, .for_gc = 0
+ .ino = ino, .root = root, .cno = 0, .for_gc = false,
+ .for_btnc = false
};
return ilookup5(sb, ino, nilfs_iget_test, &args);
@@ -598,7 +609,8 @@ struct inode *nilfs_iget_locked(struct s
unsigned long ino)
{
struct nilfs_iget_args args = {
- .ino = ino, .root = root, .cno = 0, .for_gc = 0
+ .ino = ino, .root = root, .cno = 0, .for_gc = false,
+ .for_btnc = false
};
return iget5_locked(sb, ino, nilfs_iget_test, nilfs_iget_set, &args);
@@ -629,7 +641,8 @@ struct inode *nilfs_iget_for_gc(struct s
__u64 cno)
{
struct nilfs_iget_args args = {
- .ino = ino, .root = NULL, .cno = cno, .for_gc = 1
+ .ino = ino, .root = NULL, .cno = cno, .for_gc = true,
+ .for_btnc = false
};
struct inode *inode;
int err;
@@ -649,6 +662,68 @@ struct inode *nilfs_iget_for_gc(struct s
return inode;
}
+/**
+ * nilfs_attach_btree_node_cache - attach a B-tree node cache to the inode
+ * @inode: inode object
+ *
+ * nilfs_attach_btree_node_cache() attaches a B-tree node cache to @inode,
+ * or does nothing if the inode already has it. This function allocates
+ * an additional inode to maintain page cache of B-tree nodes one-on-one.
+ *
+ * Return Value: On success, 0 is returned. On errors, one of the following
+ * negative error code is returned.
+ *
+ * %-ENOMEM - Insufficient memory available.
+ */
+int nilfs_attach_btree_node_cache(struct inode *inode)
+{
+ struct nilfs_inode_info *ii = NILFS_I(inode);
+ struct inode *btnc_inode;
+ struct nilfs_iget_args args;
+
+ if (ii->i_assoc_inode)
+ return 0;
+
+ args.ino = inode->i_ino;
+ args.root = ii->i_root;
+ args.cno = ii->i_cno;
+ args.for_gc = test_bit(NILFS_I_GCINODE, &ii->i_state) != 0;
+ args.for_btnc = true;
+
+ btnc_inode = iget5_locked(inode->i_sb, inode->i_ino, nilfs_iget_test,
+ nilfs_iget_set, &args);
+ if (unlikely(!btnc_inode))
+ return -ENOMEM;
+ if (btnc_inode->i_state & I_NEW) {
+ nilfs_init_btnc_inode(btnc_inode);
+ unlock_new_inode(btnc_inode);
+ }
+ NILFS_I(btnc_inode)->i_assoc_inode = inode;
+ NILFS_I(btnc_inode)->i_bmap = ii->i_bmap;
+ ii->i_assoc_inode = btnc_inode;
+
+ return 0;
+}
+
+/**
+ * nilfs_detach_btree_node_cache - detach the B-tree node cache from the inode
+ * @inode: inode object
+ *
+ * nilfs_detach_btree_node_cache() detaches the B-tree node cache and its
+ * holder inode bound to @inode, or does nothing if @inode doesn't have it.
+ */
+void nilfs_detach_btree_node_cache(struct inode *inode)
+{
+ struct nilfs_inode_info *ii = NILFS_I(inode);
+ struct inode *btnc_inode = ii->i_assoc_inode;
+
+ if (btnc_inode) {
+ NILFS_I(btnc_inode)->i_assoc_inode = NULL;
+ ii->i_assoc_inode = NULL;
+ iput(btnc_inode);
+ }
+}
+
void nilfs_write_inode_common(struct inode *inode,
struct nilfs_inode *raw_inode, int has_bmap)
{
@@ -797,7 +872,8 @@ static void nilfs_clear_inode(struct ino
if (test_bit(NILFS_I_BMAP, &ii->i_state))
nilfs_bmap_clear(ii->i_bmap);
- nilfs_btnode_cache_clear(&ii->i_btnode_cache);
+ if (!test_bit(NILFS_I_BTNC, &ii->i_state))
+ nilfs_detach_btree_node_cache(inode);
if (ii->i_root && inode->i_ino == NILFS_ROOT_INO)
nilfs_put_root(ii->i_root);
--- a/fs/nilfs2/mdt.c
+++ b/fs/nilfs2/mdt.c
@@ -540,7 +540,7 @@ int nilfs_mdt_save_to_shadow_map(struct
goto out;
ret = nilfs_copy_dirty_pages(&shadow->frozen_btnodes,
- &ii->i_btnode_cache);
+ ii->i_assoc_inode->i_mapping);
if (ret)
goto out;
@@ -631,8 +631,9 @@ void nilfs_mdt_restore_from_shadow_map(s
nilfs_clear_dirty_pages(inode->i_mapping, true);
nilfs_copy_back_pages(inode->i_mapping, &shadow->frozen_data);
- nilfs_clear_dirty_pages(&ii->i_btnode_cache, true);
- nilfs_copy_back_pages(&ii->i_btnode_cache, &shadow->frozen_btnodes);
+ nilfs_clear_dirty_pages(ii->i_assoc_inode->i_mapping, true);
+ nilfs_copy_back_pages(ii->i_assoc_inode->i_mapping,
+ &shadow->frozen_btnodes);
nilfs_bmap_restore(ii->i_bmap, &shadow->bmap_store);
--- a/fs/nilfs2/nilfs.h
+++ b/fs/nilfs2/nilfs.h
@@ -37,7 +37,7 @@
* @i_xattr: <TODO>
* @i_dir_start_lookup: page index of last successful search
* @i_cno: checkpoint number for GC inode
- * @i_btnode_cache: cached pages of b-tree nodes
+ * @i_assoc_inode: associated inode (B-tree node cache holder or back pointer)
* @i_dirty: list for connecting dirty files
* @xattr_sem: semaphore for extended attributes processing
* @i_bh: buffer contains disk inode
@@ -52,7 +52,7 @@ struct nilfs_inode_info {
__u64 i_xattr; /* sector_t ??? */
__u32 i_dir_start_lookup;
__u64 i_cno; /* check point number for GC inode */
- struct address_space i_btnode_cache;
+ struct inode *i_assoc_inode;
struct list_head i_dirty; /* List for connecting dirty files */
#ifdef CONFIG_NILFS_XATTR
@@ -84,13 +84,6 @@ NILFS_BMAP_I(const struct nilfs_bmap *bm
return container_of(bmap, struct nilfs_inode_info, i_bmap_data);
}
-static inline struct inode *NILFS_BTNC_I(struct address_space *btnc)
-{
- struct nilfs_inode_info *ii =
- container_of(btnc, struct nilfs_inode_info, i_btnode_cache);
- return &ii->vfs_inode;
-}
-
/*
* Dynamic state flags of NILFS on-memory inode (i_state)
*/
@@ -107,6 +100,7 @@ enum {
NILFS_I_INODE_SYNC, /* dsync is not allowed for inode */
NILFS_I_BMAP, /* has bmap and btnode_cache */
NILFS_I_GCINODE, /* inode for GC, on memory only */
+ NILFS_I_BTNC, /* inode for btree node cache */
};
/*
@@ -277,6 +271,8 @@ struct inode *nilfs_iget(struct super_bl
unsigned long ino);
extern struct inode *nilfs_iget_for_gc(struct super_block *sb,
unsigned long ino, __u64 cno);
+int nilfs_attach_btree_node_cache(struct inode *inode);
+void nilfs_detach_btree_node_cache(struct inode *inode);
extern void nilfs_update_inode(struct inode *, struct buffer_head *, int);
extern void nilfs_truncate(struct inode *);
extern void nilfs_evict_inode(struct inode *);
--- a/fs/nilfs2/page.c
+++ b/fs/nilfs2/page.c
@@ -462,10 +462,9 @@ void nilfs_mapping_init(struct address_s
/*
* NILFS2 needs clear_page_dirty() in the following two cases:
*
- * 1) For B-tree node pages and data pages of the dat/gcdat, NILFS2 clears
- * page dirty flags when it copies back pages from the shadow cache
- * (gcdat->{i_mapping,i_btnode_cache}) to its original cache
- * (dat->{i_mapping,i_btnode_cache}).
+ * 1) For B-tree node pages and data pages of DAT file, NILFS2 clears dirty
+ * flag of pages when it copies back pages from shadow cache to the
+ * original cache.
*
* 2) Some B-tree operations like insertion or deletion may dispose buffers
* in dirty state, and this needs to cancel the dirty state of their pages.
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -751,16 +751,19 @@ static void nilfs_lookup_dirty_node_buff
struct list_head *listp)
{
struct nilfs_inode_info *ii = NILFS_I(inode);
- struct address_space *mapping = &ii->i_btnode_cache;
+ struct inode *btnc_inode = ii->i_assoc_inode;
struct pagevec pvec;
struct buffer_head *bh, *head;
unsigned int i;
pgoff_t index = 0;
+ if (!btnc_inode)
+ return;
+
pagevec_init(&pvec, 0);
- while (pagevec_lookup_tag(&pvec, mapping, &index, PAGECACHE_TAG_DIRTY,
- PAGEVEC_SIZE)) {
+ while (pagevec_lookup_tag(&pvec, btnc_inode->i_mapping, &index,
+ PAGECACHE_TAG_DIRTY, PAGEVEC_SIZE)) {
for (i = 0; i < pagevec_count(&pvec); i++) {
bh = head = page_buffers(pvec.pages[i]);
do {
@@ -2429,7 +2432,7 @@ nilfs_remove_written_gcinodes(struct the
continue;
list_del_init(&ii->i_dirty);
truncate_inode_pages(&ii->vfs_inode.i_data, 0);
- nilfs_btnode_cache_clear(&ii->i_btnode_cache);
+ nilfs_btnode_cache_clear(ii->i_assoc_inode->i_mapping);
iput(&ii->vfs_inode);
}
}
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -161,7 +161,8 @@ struct inode *nilfs_alloc_inode(struct s
ii->i_state = 0;
ii->i_cno = 0;
ii->vfs_inode.i_version = 1;
- nilfs_mapping_init(&ii->i_btnode_cache, &ii->vfs_inode);
+ ii->i_assoc_inode = NULL;
+ ii->i_bmap = &ii->i_bmap_data;
return &ii->vfs_inode;
}
@@ -1392,8 +1393,6 @@ static void nilfs_inode_init_once(void *
#ifdef CONFIG_NILFS_XATTR
init_rwsem(&ii->xattr_sem);
#endif
- address_space_init_once(&ii->i_btnode_cache);
- ii->i_bmap = &ii->i_bmap_data;
inode_init_once(&ii->vfs_inode);
}
next prev parent reply other threads:[~2022-10-24 12:07 UTC|newest]
Thread overview: 214+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-24 11:28 [PATCH 4.14 000/210] 4.14.296-rc1 review Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 001/210] uas: add no-uas quirk for Hiksemi usb_disk Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 002/210] usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 003/210] uas: ignore UAS for Thinkplus chips Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 004/210] net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455 Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 005/210] ntfs: fix BUG_ON in ntfs_lookup_inode_by_name() Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 006/210] mmc: moxart: fix 4-bit bus width and remove 8-bit bus width Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 007/210] mm/page_alloc: fix race condition between build_all_zonelists and page allocation Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 008/210] mm: prevent page_frag_alloc() from corrupting the memory Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 009/210] mm/migrate_device.c: flush TLB while holding PTL Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 010/210] soc: sunxi: sram: Actually claim SRAM regions Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 011/210] soc: sunxi: sram: Fix debugfs info for A64 SRAM C Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 012/210] Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time" Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 013/210] Input: melfas_mip4 - fix return value check in mip4_probe() Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 014/210] usbnet: Fix memory leak in usbnet_disconnect() Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 015/210] nvme: add new line after variable declatation Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 016/210] nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 017/210] selftests: Fix the if conditions of in test_extra_filter() Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 018/210] clk: iproc: Minor tidy up of iproc pll data structures Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 019/210] clk: iproc: Do not rely on node name for correct PLL setup Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 020/210] Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 021/210] i2c: dev: prevent ZERO_SIZE_PTR deref in i2cdev_ioctl_rdwr() Greg Kroah-Hartman
2022-10-24 11:28 ` [PATCH 4.14 022/210] ARM: fix function graph tracer and unwinder dependencies Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 023/210] fs: fix UAF/GPF bug in nilfs_mdt_destroy Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 024/210] dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 025/210] dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API failure Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 026/210] ARM: dts: fix Moxa SDIO compatible, remove sdhci misnomer Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 027/210] net/ieee802154: fix uninit value bug in dgram_sendmsg Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 028/210] um: Cleanup syscall_handler_t cast in syscalls_32.h Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 029/210] um: Cleanup compiler warning in arch/x86/um/tls_32.c Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 030/210] usb: mon: make mmapped memory read only Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 031/210] USB: serial: ftdi_sio: fix 300 bps rate for SIO Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 032/210] mmc: core: Replace with already defined values for readability Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 033/210] mmc: core: Terminate infinite loop in SD-UHS voltage switch Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 034/210] rpmsg: qcom: glink: replace strncpy() with strscpy_pad() Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 035/210] netfilter: nf_queue: fix socket leak Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 036/210] nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level() Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 037/210] nilfs2: fix leak of nilfs_root in case of writer thread creation failure Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 038/210] nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 039/210] ceph: dont truncate file in atomic_open Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 040/210] random: clamp credited irq bits to maximum mixed Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 041/210] ALSA: hda: Fix position reporting on Poulsbo Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 042/210] scsi: stex: Properly zero out the passthrough command structure Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 043/210] USB: serial: qcserial: add new usb-id for Dell branded EM7455 Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 044/210] random: restore O_NONBLOCK support Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 045/210] random: avoid reading two cache lines on irq randomness Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 046/210] wifi: mac80211_hwsim: avoid mac80211 warning on bad rate Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 047/210] Input: xpad - add supported devices as contributed on github Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 048/210] Input: xpad - fix wireless 360 controller breaking after suspend Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 049/210] random: use expired timer rather than wq for mixing fast pool Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 050/210] ALSA: oss: Fix potential deadlock at unregistration Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 051/210] ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free() Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 052/210] ALSA: usb-audio: Fix potential memory leaks Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 053/210] ALSA: usb-audio: Fix NULL dererence at error path Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 054/210] iio: dac: ad5593r: Fix i2c read protocol requirements Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 055/210] fs: dlm: fix race between test_bit() and queue_work() Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 056/210] fs: dlm: handle -EBUSY first in lock arg validation Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 057/210] HID: multitouch: Add memory barriers Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 058/210] quota: Check next/prev free block number after reading from quota file Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 059/210] regulator: qcom_rpm: Fix circular deferral regression Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 060/210] Revert "fs: check FMODE_LSEEK to control internal pipe splicing" Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 061/210] parisc: fbdev/stifb: Align graphics memory size to 4MB Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 062/210] UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 063/210] PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 064/210] fbdev: smscufx: Fix use-after-free in ufx_ops_open() Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 065/210] nilfs2: fix use-after-free bug of struct nilfs_root Greg Kroah-Hartman
2022-10-24 11:29 ` Greg Kroah-Hartman [this message]
2022-10-24 11:29 ` [PATCH 4.14 067/210] nilfs2: fix lockdep warnings during disk space reclamation Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 068/210] ext4: avoid crash when inline data creation follows DIO write Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 069/210] ext4: fix null-ptr-deref in ext4_write_info Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 070/210] ext4: make ext4_lazyinit_thread freezable Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 071/210] ext4: place buffer head allocation before handle start Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 072/210] livepatch: fix race between fork and KLP transition Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 073/210] ftrace: Properly unset FTRACE_HASH_FL_MOD Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 074/210] ring-buffer: Allow splice to read previous partially read pages Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 075/210] ring-buffer: Check pending waiters when doing wake ups as well Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 076/210] ring-buffer: Fix race between reset page and reading page Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 077/210] KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 078/210] KVM: nVMX: Unconditionally purge queued/injected events on nested "exit" Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 079/210] gcov: support GCC 12.1 and newer compilers Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 080/210] selinux: use "grep -E" instead of "egrep" Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 081/210] sh: machvec: Use char[] for section boundaries Greg Kroah-Hartman
2022-10-24 11:29 ` [PATCH 4.14 082/210] wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 083/210] wifi: mac80211: allow bw change during channel switch in mesh Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 084/210] wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 085/210] spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 086/210] spi: qup: add missing clk_disable_unprepare on error in spi_qup_pm_resume_runtime() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 087/210] wifi: rtl8xxxu: Fix skb misuse in TX queue selection Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 088/210] wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 089/210] net: fs_enet: Fix wrong check in do_pd_setup Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 090/210] spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 091/210] netfilter: nft_fib: Fix for rpath check with VRF devices Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 092/210] spi: s3c64xx: Fix large transfers with DMA Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 093/210] vhost/vsock: Use kvmalloc/kvfree for larger packets Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 094/210] mISDN: fix use-after-free bugs in l1oip timer handlers Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 095/210] tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 096/210] net: rds: dont hold sock lock when cancelling work from rds_tcp_reset_callbacks() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 097/210] bnx2x: fix potential memory leak in bnx2x_tpa_stop() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 098/210] drm/mipi-dsi: Detach devices when removing the host Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 099/210] platform/x86: msi-laptop: Fix old-ec check for backlight registering Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 100/210] platform/x86: msi-laptop: Fix resource cleanup Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 101/210] drm/bridge: megachips: Fix a null pointer dereference bug Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 102/210] mmc: au1xmmc: Fix an error handling path in au1xmmc_probe() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 103/210] ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 104/210] ALSA: dmaengine: increment buffer pointer atomically Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 105/210] mmc: wmt-sdmmc: Fix an error handling path in wmt_mci_probe() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 106/210] memory: of: Fix refcount leak bug in of_get_ddr_timings() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 107/210] soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 108/210] soc: qcom: smem_state: Add refcounting for the state->of_node Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 109/210] ARM: dts: turris-omnia: Fix mpp26 pin name and comment Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 110/210] ARM: dts: kirkwood: lsxl: fix serial line Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 111/210] ARM: dts: kirkwood: lsxl: remove first ethernet port Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 112/210] ARM: Drop CMDLINE_* dependency on ATAGS Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 113/210] ARM: dts: exynos: fix polarity of VBUS GPIO of Origen Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 114/210] iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 115/210] iio: inkern: only release the device node when done with it Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 116/210] iio: ABI: Fix wrong format of differential capacitance channel ABI Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 117/210] clk: oxnas: Hold reference returned by of_get_parent() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 118/210] clk: tegra: Fix refcount leak in tegra210_clock_init Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 119/210] clk: tegra: Fix refcount leak in tegra114_clock_init Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 120/210] clk: tegra20: Fix refcount leak in tegra20_clock_init Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 121/210] HSI: omap_ssi: Fix refcount leak in ssi_probe Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 122/210] HSI: omap_ssi_port: Fix dma_map_sg error check Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 123/210] media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 124/210] tty: xilinx_uartps: Fix the ignore_status Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 125/210] media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 126/210] RDMA/rxe: Fix "kernel NULL pointer dereference" error Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 127/210] RDMA/rxe: Fix the error caused by qp->sk Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 128/210] dyndbg: fix module.dyndbg handling Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 129/210] dyndbg: let query-modname override actual module name Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 130/210] ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 131/210] ata: fix ata_id_has_devslp() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 132/210] ata: fix ata_id_has_ncq_autosense() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 133/210] ata: fix ata_id_has_dipm() Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 134/210] md/raid5: Ensure stripe_fill happens on non-read IO with journal Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 135/210] xhci: Dont show warning for reinit on known broken suspend Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 136/210] usb: gadget: function: fix dangling pnp_string in f_printer.c Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 137/210] drivers: serial: jsm: fix some leaks in probe Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 138/210] phy: qualcomm: call clk_disable_unprepare in the error handling Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 139/210] firmware: google: Test spinlock on panic path to avoid lockups Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 140/210] serial: 8250: Fix restoring termios speed after suspend Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 141/210] fsi: core: Check error number after calling ida_simple_get Greg Kroah-Hartman
2022-10-24 11:30 ` [PATCH 4.14 142/210] mfd: intel_soc_pmic: Fix an error handling path in intel_soc_pmic_i2c_probe() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 143/210] mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 144/210] mfd: lp8788: Fix an error handling path in lp8788_probe() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 145/210] mfd: lp8788: Fix an error handling path in lp8788_irq_init() and lp8788_irq_init() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 146/210] mfd: sm501: Add check for platform_driver_register() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 147/210] dmaengine: ioat: stop mod_timer from resurrecting deleted timer in __cleanup() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 148/210] spmi: pmic-arb: correct duplicate APID to PPID mapping logic Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 149/210] clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 150/210] clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 151/210] mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 152/210] powerpc/math_emu/efp: Include module.h Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 153/210] powerpc/sysdev/fsl_msi: Add missing of_node_put() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 154/210] powerpc/pci_dn: " Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 155/210] powerpc/powernv: add missing of_node_put() in opal_export_attrs() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 156/210] powerpc: Fix SPE Power ISA properties for e500v1 platforms Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 157/210] iommu/omap: Fix buffer overflow in debugfs Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 158/210] iommu/iova: Fix module config properly Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 159/210] crypto: cavium - prevent integer overflow loading firmware Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 160/210] f2fs: fix race condition on setting FI_NO_EXTENT flag Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 161/210] ACPI: video: Add Toshiba Satellite/Portege Z830 quirk Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 162/210] MIPS: BCM47XX: Cast memcmp() of function to (void *) Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 163/210] powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 164/210] thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 165/210] x86/entry: Work around Clang __bdos() bug Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 166/210] NFSD: Return nfserr_serverfault if splice_ok but buf->pages have data Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 167/210] wifi: brcmfmac: fix invalid address access when enabling SCAN log level Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 168/210] openvswitch: Fix double reporting of drops in dropwatch Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 169/210] openvswitch: Fix overreporting " Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 170/210] tcp: annotate data-race around tcp_md5sig_pool_populated Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 171/210] wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 172/210] xfrm: Update ipcomp_scratches with NULL when freed Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 173/210] wifi: brcmfmac: fix use-after-free bug in brcmf_netdev_start_xmit() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 174/210] Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 175/210] Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 176/210] can: bcm: check the result of can_send() in bcm_can_tx() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 177/210] wifi: rt2x00: dont run Rt5592 IQ calibration on MT7620 Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 178/210] wifi: rt2x00: set correct TX_SW_CFG1 MAC register for MT7620 Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 179/210] wifi: rt2x00: set SoC wmac clock register Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 180/210] wifi: rt2x00: correctly set BBP register 86 for MT7620 Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 181/210] net: If sock is dead dont access socks sk_wq in sk_stream_wait_memory Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 182/210] Bluetooth: L2CAP: Fix user-after-free Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 183/210] r8152: Rate limit overflow messages Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 184/210] drm: Use size_t type for len variable in drm_copy_field() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 185/210] drm: Prevent drm_copy_field() to attempt copying a NULL pointer Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 186/210] drm/vc4: vec: Fix timings for VEC modes Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 187/210] platform/x86: msi-laptop: Change DMI match / alias strings to fix module autoloading Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 188/210] drm/amdgpu: fix initial connector audio value Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 189/210] ARM: dts: imx7d-sdb: config the max pressure for tsc2046 Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 190/210] ARM: dts: imx6q: add missing properties for sram Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 191/210] ARM: dts: imx6dl: " Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 192/210] ARM: dts: imx6qp: " Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 193/210] ARM: dts: imx6sl: " Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 194/210] media: cx88: Fix a null-ptr-deref bug in buffer_prepare() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 195/210] scsi: 3w-9xxx: Avoid disabling device if failing to enable it Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 196/210] nbd: Fix hung when signal interrupts nbd_start_device_ioctl() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 197/210] HID: roccat: Fix use-after-free in roccat_read() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 198/210] md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 199/210] usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info() Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 200/210] usb: musb: Fix musb_gadget.c rxstate overflow bug Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 201/210] Revert "usb: storage: Add quirk for Samsung Fit flash" Greg Kroah-Hartman
2022-10-24 11:31 ` [PATCH 4.14 202/210] usb: idmouse: fix an uninit-value in idmouse_open Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 203/210] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 204/210] net: ieee802154: return -EINVAL for unknown addr type Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 205/210] net/ieee802154: dont warn zero-sized raw_sendmsg() Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 206/210] ext4: continue to expand file system when the target size doesnt reach Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 207/210] md: Replace snprintf with scnprintf Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 208/210] efi: libstub: drop pointless get_memory_map() call Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 209/210] inet: fully convert sk->sk_rx_dst to RCU rules Greg Kroah-Hartman
2022-10-24 11:32 ` [PATCH 4.14 210/210] thermal: intel_powerclamp: Use first online CPU as control_cpu Greg Kroah-Hartman
2022-10-24 16:41 ` [PATCH 4.14 000/210] 4.14.296-rc1 review Jon Hunter
2022-10-25 4:29 ` Guenter Roeck
2022-10-25 17:38 ` Naresh Kamboju
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=20221024112959.192988322@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=konishi.ryusuke@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=sunhao.th@gmail.com \
--cc=syzbot+0d5b462a6f07447991b3@syzkaller.appspotmail.com \
--cc=syzbot+34ef28bb2aeb28724aa0@syzkaller.appspotmail.com \
--cc=torvalds@linux-foundation.org \
--cc=willy@infradead.org \
/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).