Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f59af75 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Ben Myers
Browse files

xfs: remove iolock lock classes



Content-Disposition: inline; filename=xfs-remove-iolock-classes

Now that we never take the iolock during inode reclaim we don't need
to play games with lock classes.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarRich Johnston <rjohnston@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 5a15322d
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -40,17 +40,6 @@
#include "xfs_trace.h"


/*
 * Define xfs inode iolock lockdep classes. We need to ensure that all active
 * inodes are considered the same for lockdep purposes, including inodes that
 * are recycled through the XFS_IRECLAIMABLE state. This is the the only way to
 * guarantee the locks are considered the same when there are multiple lock
 * initialisation siteѕ. Also, define a reclaimable inode class so it is
 * obvious in lockdep reports which class the report is against.
 */
static struct lock_class_key xfs_iolock_active;
struct lock_class_key xfs_iolock_reclaimable;

/*
 * Allocate and initialise an xfs_inode.
 */
@@ -80,8 +69,6 @@ xfs_inode_alloc(
	ASSERT(ip->i_ino == 0);

	mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino);
	lockdep_set_class_and_name(&ip->i_iolock.mr_lock,
			&xfs_iolock_active, "xfs_iolock_active");

	/* initialise the xfs inode */
	ip->i_ino = ino;
@@ -250,8 +237,6 @@ xfs_iget_cache_hit(

		ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock));
		mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino);
		lockdep_set_class_and_name(&ip->i_iolock.mr_lock,
				&xfs_iolock_active, "xfs_iolock_active");

		spin_unlock(&ip->i_flags_lock);
		spin_unlock(&pag->pag_ici_lock);
+0 −2
Original line number Diff line number Diff line
@@ -487,8 +487,6 @@ static inline int xfs_isiflocked(struct xfs_inode *ip)
#define XFS_IOLOCK_DEP(flags)	(((flags) & XFS_IOLOCK_DEP_MASK) >> XFS_IOLOCK_SHIFT)
#define XFS_ILOCK_DEP(flags)	(((flags) & XFS_ILOCK_DEP_MASK) >> XFS_ILOCK_SHIFT)

extern struct lock_class_key xfs_iolock_reclaimable;

/*
 * For multiple groups support: if S_ISGID bit is set in the parent
 * directory, group of new file is set to that of the parent, and
+2 −16
Original line number Diff line number Diff line
@@ -874,6 +874,8 @@ xfs_fs_evict_inode(
{
	xfs_inode_t		*ip = XFS_I(inode);

	ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock));

	trace_xfs_evict_inode(ip);

	truncate_inode_pages(&inode->i_data, 0);
@@ -882,22 +884,6 @@ xfs_fs_evict_inode(
	XFS_STATS_INC(vn_remove);
	XFS_STATS_DEC(vn_active);

	/*
	 * The iolock is used by the file system to coordinate reads,
	 * writes, and block truncates.  Up to this point the lock
	 * protected concurrent accesses by users of the inode.  But
	 * from here forward we're doing some final processing of the
	 * inode because we're done with it, and although we reuse the
	 * iolock for protection it is really a distinct lock class
	 * (in the lockdep sense) from before.  To keep lockdep happy
	 * (and basically indicate what we are doing), we explicitly
	 * re-init the iolock here.
	 */
	ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock));
	mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino);
	lockdep_set_class_and_name(&ip->i_iolock.mr_lock,
			&xfs_iolock_reclaimable, "xfs_iolock_reclaimable");

	xfs_inactive(ip);
}