All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Pavel Reichl <preichl@redhat.com>
Cc: linux-xfs@vger.kernel.org, Dave Chinner <dchinner@redhat.com>
Subject: Re: [PATCH v2 1/7] xfs: Add xfs_is_{i,io,mmap}locked functions
Date: Mon, 3 Feb 2020 22:19:21 -0800	[thread overview]
Message-ID: <20200204061921.GA2910@infradead.org> (raw)
In-Reply-To: <20200203175850.171689-2-preichl@redhat.com>

> +static inline bool
> +__xfs_is_ilocked(
> +	struct rw_semaphore	*rwsem,
> +	bool			shared,
> +	bool			excl)

This calling conventions seems odd.  In other places like
lockdep we just have a bool excl.  This means we might get a false
positive when the lock is held exclusive but only shared is asserted,
but given that the low-level helpers can't give better information
that isn't going to hurt.

Also I'd name this function xfs_rwsem_is_locked, as there is nothing
inode specific here.

I also agree that this function needs good comments explaining the
rationale.

> +bool
> +xfs_is_ilocked(
> +	struct xfs_inode	*ip,
> +	int			lock_flags)
> +{
> +	return __xfs_is_ilocked(&ip->i_lock.mr_lock,
> +			(lock_flags & XFS_ILOCK_SHARED),
> +			(lock_flags & XFS_ILOCK_EXCL));
> +}
> +
> +bool
> +xfs_is_mmaplocked(
> +	struct xfs_inode	*ip,
> +	int			lock_flags)
> +{
> +	return __xfs_is_ilocked(&ip->i_mmaplock.mr_lock,
> +			(lock_flags & XFS_MMAPLOCK_SHARED),
> +			(lock_flags & XFS_MMAPLOCK_EXCL));
> +}
> +
> +bool
> +xfs_is_iolocked(
> +	struct xfs_inode	*ip,
> +	int			lock_flags)
> +{
> +	return __xfs_is_ilocked(&VFS_I(ip)->i_rwsem,
> +			(lock_flags & XFS_IOLOCK_SHARED),
> +			(lock_flags & XFS_IOLOCK_EXCL));
> +}
>  #endif

What is the benefit of these helpers?  xfs_isilocked can just
call __xfs_is_ilocked / xfs_rwsem_is_locked directly.

  parent reply	other threads:[~2020-02-04  6:19 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03 17:58 [PATCH v2 0/7] xfs: Remove wrappers for some semaphores Pavel Reichl
2020-02-03 17:58 ` [PATCH v2 1/7] xfs: Add xfs_is_{i,io,mmap}locked functions Pavel Reichl
2020-02-03 21:00   ` Chaitanya Kulkarni
2020-02-03 23:15   ` Dave Chinner
2020-02-03 23:45   ` Eric Sandeen
2020-02-04  6:19   ` Christoph Hellwig [this message]
2020-02-03 17:58 ` [PATCH v2 2/7] xfs: Update checking excl. locks for ilock Pavel Reichl
2020-02-03 23:16   ` Dave Chinner
2020-02-04  6:21   ` Christoph Hellwig
2020-02-04 16:08     ` Eric Sandeen
2020-02-04 21:06       ` Dave Chinner
2020-02-04 22:20         ` Eric Sandeen
2020-02-03 17:58 ` [PATCH v2 3/7] xfs: Update checking read or write " Pavel Reichl
2020-02-03 23:18   ` Dave Chinner
2020-02-03 17:58 ` [PATCH v2 4/7] xfs: Update checking for iolock Pavel Reichl
2020-02-03 23:24   ` Dave Chinner
2020-02-03 17:58 ` [PATCH v2 5/7] xfs: Update checking for mmaplock Pavel Reichl
2020-02-03 23:25   ` Dave Chinner
2020-02-03 17:58 ` [PATCH v2 6/7] xfs: update excl. lock check for IOLOCK and ILOCK Pavel Reichl
2020-02-03 23:35   ` Dave Chinner
2020-02-03 17:58 ` [PATCH v2 7/7] xfs: Replace mrlock_t by rw_semaphore Pavel Reichl

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=20200204061921.GA2910@infradead.org \
    --to=hch@infradead.org \
    --cc=dchinner@redhat.com \
    --cc=linux-xfs@vger.kernel.org \
    --cc=preichl@redhat.com \
    /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 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.