On Wed, Oct 17, 2018 at 11:29 AM Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > Cc: linux-unionfs@vger > > On Wed, Oct 17, 2018 at 10:00 AM, Stefan Agner <stefan@xxxxxxxx> wrote: > > Hi, > > > > I noticed this warning since we moved to 4.18. It appears when > > using Docker (which uses overlayfs). Is this a known issue? > > > > [ 543.235366] WARNING: possible recursive locking detected > > [ 543.240747] 4.18.14 #1 Not tainted > > [ 543.244195] -------------------------------------------- > > [ 543.249573] dockerd/522 is trying to acquire lock: > > [ 543.254426] 86b0f89c (sb_writers#7){.+.+}, at: mnt_want_write+0x20/0x4c > > [ 543.261152] but task is already holding lock: > > [ 543.267053] 86b0f89c (sb_writers#7){.+.+}, at: mnt_want_write_file_path+0x24/0x54 > > [ 543.274641] other info that might help us debug this: > > [ 543.281242] Possible unsafe locking scenario: > > [ 543.287227] CPU0 > > [ 543.289706] ---- > > [ 543.292183] lock(sb_writers#7); > > [ 543.295547] lock(sb_writers#7); > > [ 543.298912] *** DEADLOCK *** > > [ 543.306825] May be due to missing lock nesting notation > > [ 543.315594] 2 locks held by dockerd/522: > > [ 543.320487] #0: 86b0f89c (sb_writers#7){.+.+}, at: mnt_want_write_file_path+0x24/0x54 > > [ 543.330353] #1: fbe4681b (&ovl_i_mutex_key[depth]){+.+.}, at: chown_common+0xf8/0x1c0 This is a stable tree regression because upstream commit a6795a585929 vfs: fix freeze protection in mnt_want_write_file() for overlayfs SHOULD NOT have been applied to kernel <= 4.18 Miklos, You must have confused "the algorithm" by including a "fix" commit in rc1 pull request without mentioning that it "Fixes" a commit in the same pull request. It probably didn't help that the commit applied cleanly to the wrong function :-/ Upstream commit a6795a585929: @@ -441,10 +441,10 @@ int mnt_want_write_file(struct file *file) { int ret; - sb_start_write(file->f_path.mnt->mnt_sb); + sb_start_write(file_inode(file)->i_sb); Backported v4.18.14 commit 5e1002ab5c9b: @@ -446,10 +446,10 @@ int mnt_want_write_file_path(struct file *file) { int ret; - sb_start_write(file->f_path.mnt->mnt_sb); + sb_start_write(file_inode(file)->i_sb); Ouch! Is there a way for git/quilt to raise a red flag in cases like this? I could reproduce another lockdep warning on v4.18.14 with xfstest overlay/030, which is fixed by reverting this commit. Stefan, Can you verify that reverting that commit solved the problem for you? Thanks, Amir.