Re: [PATCH 0/7] Allow lock dropping before waiting on inodes being freed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 13, 2016 at 7:42 PM, Andreas Gruenbacher
<agruenba@xxxxxxxxxx> wrote:
> This patch set my Bob and me avoids a deadlock in gfs2 when an inode is being
> freed: normally, when find_inode finds an inode in I_FREEING or I_WILL_FREE
> state, it waits for the inode to go away before returning
> (__wait_on_freeing_inode).  Freeing an inode on gfs2 requires taking the
> inode's glock.  However, in gfs2_lookup_by_inum, we need to be holding the
> inode glock while doing lookups, so we can deadlock with processes concurrently
> freeing inodes.
>
> This patch set allows gfs2_lookup_by_inum to drop the inode glock before
> waiting for inodes to go away.  We could try non-blocking lookups and wait for
> an arbitrary amount of time before retrying the lookup instead as well, but
> waiting for the actual event (i.e., the inode being freed to likely have
> disappeared) makes more sense.

Another approach we have tried was to use iget5_locked and to drop the
glock in the test callback if necessary. However, we'd have to
atomically test for freeing inodes, release the glock, and cause
iget5_locked (actually find_inode) to wait and repeat. The test
callback can only return whether the inode matches the one we're
looking for though; it cannot return an error code like -EBUSY.

I've looked through the existing instances of iget5_locked. All test
callbacks only return 0 or 1, so we could theoretically change
iget5_locked to deal with a test result of -EBUSY or so as well. There
still doesn't seem to be a way of cleanly implementing the waiting for
freeing inodes with this approach though: the test callback is called
without i_lock held; it would have to __iget the inode itself to
prevent if from becoming freeing; find_inode would then __iget the
inode a second time. Yuck.

Andreas
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux