From: Nick Piggin <npiggin@gmail.com> To: Arnd Bergmann <arnd@arndb.de> Cc: linux-kernel@vger.kernel.org, Nick Bowler <nbowler@elliptictech.com>, Evgeniy Dushistov <dushistov@mail.ru> Subject: Re: [PATCH 15/20] ufs: remove the BKL Date: Thu, 27 Jan 2011 16:47:55 +1100 [thread overview] Message-ID: <AANLkTinKO=HM1BqDdFkdcCAGz85co64Ma79qomw6PDPp@mail.gmail.com> (raw) In-Reply-To: <1295993854-4971-16-git-send-email-arnd@arndb.de> Really great work in removing BKL, Arnd. It's awesome work and I'm sure a lot of it was pretty thankless along the way. On Wed, Jan 26, 2011 at 9:17 AM, Arnd Bergmann <arnd@arndb.de> wrote: > This introduces a new per-superblock mutex in UFS to replace > the big kernel lock. I have been careful to avoid nested > calls to lock_ufs and to get the lock order right with > respect to other mutexes, in particular lock_super. When I looked at removing bkl from minix a long time ago, I was a bit worried about reclaim and fs/io recursion in some of the filesystems with bkl. > @@ -436,7 +439,8 @@ int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buffer_head > ret = 0; > bh = NULL; > > - lock_kernel(); > + if (needs_lock) > + lock_ufs(sb); > > UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment); > if (fragment > [...] > @@ -55,16 +54,16 @@ static struct dentry *ufs_lookup(struct inode * dir, struct dentry *dentry, stru > if (dentry->d_name.len > UFS_MAXNAMLEN) > return ERR_PTR(-ENAMETOOLONG); > > - lock_kernel(); > + lock_ufs(dir->i_sb); > ino = ufs_inode_by_name(dir, &dentry->d_name); > if (ino) { > inode = ufs_iget(dir->i_sb, ino); > if (IS_ERR(inode)) { > - unlock_kernel(); > + unlock_ufs(dir->i_sb); > return ERR_CAST(inode); > } > } > - unlock_kernel(); > + unlock_ufs(dir->i_sb); > d_add(dentry, inode); > return NULL; > } versus 1405static struct inode *ufs_alloc_inode(struct super_block *sb) 1406{ 1407 struct ufs_inode_info *ei; 1408 ei = (struct ufs_inode_info *)kmem_cache_alloc(ufs_inode_cachep, GFP_KERNEL); 1409 if (!ei) 1410 return NULL; 1411 ei->vfs_inode.i_version = 1; 1412 return &ei->vfs_inode; 1413} So, get_block can be called for .writepage in page reclaim, which takes the lock. ufs_lookup takes the lock and winds up calling ufs_alloc_inode. And ufs_alloc_inode does GFP_KERNEL, which can enter reclaim with __GFP_FS set. I didn't look through all your filesystem conversions, but it is something tricky to watch out for I think. Changing everything to GFP_NOFS may be an option, for such crufty old filesystems...
next prev parent reply other threads:[~2011-01-27 5:47 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-01-25 22:17 [RFC 00/20] Proposal for remaining BKL users Arnd Bergmann 2011-01-25 22:17 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 01/20] drm/i810: remove the BKL Arnd Bergmann 2011-01-25 22:17 ` [PATCH 02/20] drm: remove i830 driver Arnd Bergmann 2011-01-25 22:17 ` [PATCH 03/20] staging/usbip: convert to kthread Arnd Bergmann 2011-01-28 17:53 ` Max Vozeler 2011-01-28 18:48 ` Arnd Bergmann 2011-03-01 22:15 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 04/20] staging/cx25721: serialize access to devlist Arnd Bergmann 2011-01-26 16:23 ` Palash Bandyopadhyay 2011-01-31 21:37 ` Greg KH 2011-01-25 22:17 ` [PATCH 05/20] staging/go7007: remove the BKL Arnd Bergmann 2011-01-25 22:17 ` [PATCH 06/20] staging: Remove autofs3 Arnd Bergmann 2011-01-26 7:41 ` H. Peter Anvin 2011-01-25 22:17 ` [PATCH 07/20] staging: remove smbfs Arnd Bergmann 2011-01-25 22:17 ` [PATCH 08/20] adfs: remove the big kernel lock Arnd Bergmann 2011-01-25 22:20 ` Russell King 2011-01-25 22:17 ` [PATCH 09/20] hpfs: rename big kernel lock to hpfs_lock Arnd Bergmann 2011-01-25 22:17 ` [PATCH 10/20] hpfs: replace BKL with a global mutex Arnd Bergmann 2011-01-26 0:15 ` Andi Kleen 2011-01-26 0:19 ` Andi Kleen 2011-01-26 12:48 ` [PATCH v2] hpfs: remove the BKL Arnd Bergmann 2011-01-26 12:50 ` [PATCH 10/20] hpfs: replace BKL with a global mutex Arnd Bergmann 2011-01-26 16:52 ` Andi Kleen 2011-01-27 5:01 ` Nick Piggin 2011-01-27 10:57 ` Miklos Szeredi 2011-01-25 22:17 ` [PATCH 11/20] hpfs: move to drivers/staging Arnd Bergmann 2011-02-07 16:17 ` Mikulas Patocka 2011-02-07 19:31 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 12/20] x25: remove the BKL Arnd Bergmann 2011-01-27 10:07 ` Andrew Hendry 2011-01-27 12:17 ` Arnd Bergmann 2011-01-27 12:38 ` [PATCH v2] " Arnd Bergmann 2011-01-27 13:20 ` Eric Dumazet 2011-01-27 13:43 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 13/20] appletalk: move to staging Arnd Bergmann 2011-01-25 22:17 ` [PATCH 14/20] staging/appletalk: remove the BKL Arnd Bergmann 2011-01-25 22:29 ` David Miller 2011-01-26 12:57 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 15/20] ufs: " Arnd Bergmann 2011-01-26 2:30 ` Nick Bowler 2011-01-26 12:53 ` Arnd Bergmann 2011-01-27 5:47 ` Nick Piggin [this message] 2011-01-27 13:13 ` Arnd Bergmann 2011-01-25 22:17 ` [PATCH 16/20] ipx: " Arnd Bergmann 2011-01-25 22:17 ` [PATCH 17/20] tracing: don't trace " Arnd Bergmann 2011-01-25 22:28 ` Frederic Weisbecker 2011-01-25 22:17 ` [PATCH 18/20] rtmutex-tester: remove BKL tests Arnd Bergmann 2011-01-26 15:00 ` [tip:core/locking] rtmutex-tester: Remove " tip-bot for Arnd Bergmann 2011-02-22 20:57 ` [tip:irq/core] rtmutex: tester: " tip-bot for Arnd Bergmann 2011-01-25 22:17 ` [PATCH 19/20] drivers: remove extraneous includes of smp_lock.h Arnd Bergmann 2011-01-25 22:17 ` [PATCH 20/20] BKL: That's all, folks Arnd Bergmann 2011-01-26 6:19 ` Ingo Molnar 2011-01-26 8:47 ` Alan Cox 2011-01-26 11:01 ` Ingo Molnar 2011-01-26 11:22 ` Thomas Gleixner 2011-01-26 2:22 ` [RFC 00/20] Proposal for remaining BKL users Greg KH 2011-01-26 2:22 ` Greg KH 2011-01-26 11:31 ` Arnd Bergmann 2011-01-26 11:31 ` Arnd Bergmann 2011-01-26 11:58 ` Mauro Carvalho Chehab 2011-01-26 13:45 ` Arnd Bergmann 2011-01-26 13:45 ` Arnd Bergmann 2011-01-26 16:24 ` Palash Bandyopadhyay
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='AANLkTinKO=HM1BqDdFkdcCAGz85co64Ma79qomw6PDPp@mail.gmail.com' \ --to=npiggin@gmail.com \ --cc=arnd@arndb.de \ --cc=dushistov@mail.ru \ --cc=linux-kernel@vger.kernel.org \ --cc=nbowler@elliptictech.com \ --subject='Re: [PATCH 15/20] ufs: remove the BKL' \ /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
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.