xfs: fixes for v5.18-rc5
XFS changes for v5.18-rc5: - define buffer bit flags as unsigned to fix gcc-5 + c11 warnings - remove redundant XFS fields from MAINTAINERS - fix inode buffer locking order regression -----BEGIN PGP SIGNATURE----- iQJIBAABCgAyFiEEmJOoJ8GffZYWSjj/regpR/R1+h0FAmJnJ0IUHGRhdmlkQGZy b21vcmJpdC5jb20ACgkQregpR/R1+h0UFw//bdCSgHHT8uKEnaad3BJv3H50Alkc o7W+NvEyPij4FQVbytphl/1TN6XodIt8dBl+NkYneve7emyVVzB9MdDL2VWSl9nr JstswE3hY/v1n2LsRmErmT0jrnmTQbIAvCv6jllnlbR1eqlcK5XVyYAipMi69t3E GLREaiq4dpbTqAJ3sBcIs5eJ6O84euiXlIrOolnhFln/B3+jzgexgzzhdHZyJ9+9 vp7xY0jWdPbPm8QeWNl7Qpebch2qe4gFXXnSTVvYsZNyvL8+FDmYQi6RyAHU15ML I26Ub87hV1UhYcVSsMSyfAOQTR2yElIjmBNiKwPnfwOXIdKjvYI72x71YRNwFDS8 RFyWE8n7z7kpgqvWDuV5o+5pg/7578xfoRO6wXtvidcDAFZiM3OhHS9jz8Tbasx8 /R+jlB8JM10PKHUiMpdtNQGZU1XkHNPT6eZ7hiuvYZm06SudxKr1yH5d7T5Okq4C ciK782LRpKofwgUBX748O5uomYLaBvanTpErW8HP20hb/hRrwx8gXz29O1/ZaCZe 2muPlAniPdvSq2eTz7wyEFlIjIiswRa8tOt4EjLFNLimIA5Ek0GtoToxcjs9xmr1 GP4B+5wymjktn/9/F1EwKBkD9WTR4eJn2RbLqm5fdr/5MXS/xfixF6dYl1X5QtF3 5zRl52y4gU3dPI4= =VfQp -----END PGP SIGNATURE----- Merge tag 'xfs-5.18-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux Pull xfs fixes from Dave Chinner: - define buffer bit flags as unsigned to fix gcc-5 + c11 warnings - remove redundant XFS fields from MAINTAINERS - fix inode buffer locking order regression * tag 'xfs-5.18-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: xfs: reorder iunlink remove operation in xfs_ifree MAINTAINERS: update IOMAP FILESYSTEM LIBRARY and XFS FILESYSTEM xfs: convert buffer flags to unsigned.
This commit is contained in:
commit
8061e16e20
|
@ -10237,8 +10237,6 @@ F: drivers/net/ethernet/sgi/ioc3-eth.c
|
|||
IOMAP FILESYSTEM LIBRARY
|
||||
M: Christoph Hellwig <hch@infradead.org>
|
||||
M: Darrick J. Wong <djwong@kernel.org>
|
||||
M: linux-xfs@vger.kernel.org
|
||||
M: linux-fsdevel@vger.kernel.org
|
||||
L: linux-xfs@vger.kernel.org
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Supported
|
||||
|
@ -21596,7 +21594,6 @@ F: drivers/xen/*swiotlb*
|
|||
XFS FILESYSTEM
|
||||
C: irc://irc.oftc.net/xfs
|
||||
M: Darrick J. Wong <djwong@kernel.org>
|
||||
M: linux-xfs@vger.kernel.org
|
||||
L: linux-xfs@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://xfs.org/
|
||||
|
|
|
@ -406,7 +406,7 @@ xfs_buf_alloc_pages(
|
|||
STATIC int
|
||||
_xfs_buf_map_pages(
|
||||
struct xfs_buf *bp,
|
||||
uint flags)
|
||||
xfs_buf_flags_t flags)
|
||||
{
|
||||
ASSERT(bp->b_flags & _XBF_PAGES);
|
||||
if (bp->b_page_count == 1) {
|
||||
|
@ -868,7 +868,7 @@ xfs_buf_read_uncached(
|
|||
struct xfs_buftarg *target,
|
||||
xfs_daddr_t daddr,
|
||||
size_t numblks,
|
||||
int flags,
|
||||
xfs_buf_flags_t flags,
|
||||
struct xfs_buf **bpp,
|
||||
const struct xfs_buf_ops *ops)
|
||||
{
|
||||
|
@ -903,7 +903,7 @@ int
|
|||
xfs_buf_get_uncached(
|
||||
struct xfs_buftarg *target,
|
||||
size_t numblks,
|
||||
int flags,
|
||||
xfs_buf_flags_t flags,
|
||||
struct xfs_buf **bpp)
|
||||
{
|
||||
int error;
|
||||
|
|
|
@ -22,28 +22,28 @@ struct xfs_buf;
|
|||
|
||||
#define XFS_BUF_DADDR_NULL ((xfs_daddr_t) (-1LL))
|
||||
|
||||
#define XBF_READ (1 << 0) /* buffer intended for reading from device */
|
||||
#define XBF_WRITE (1 << 1) /* buffer intended for writing to device */
|
||||
#define XBF_READ_AHEAD (1 << 2) /* asynchronous read-ahead */
|
||||
#define XBF_NO_IOACCT (1 << 3) /* bypass I/O accounting (non-LRU bufs) */
|
||||
#define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */
|
||||
#define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */
|
||||
#define XBF_STALE (1 << 6) /* buffer has been staled, do not find it */
|
||||
#define XBF_WRITE_FAIL (1 << 7) /* async writes have failed on this buffer */
|
||||
#define XBF_READ (1u << 0) /* buffer intended for reading from device */
|
||||
#define XBF_WRITE (1u << 1) /* buffer intended for writing to device */
|
||||
#define XBF_READ_AHEAD (1u << 2) /* asynchronous read-ahead */
|
||||
#define XBF_NO_IOACCT (1u << 3) /* bypass I/O accounting (non-LRU bufs) */
|
||||
#define XBF_ASYNC (1u << 4) /* initiator will not wait for completion */
|
||||
#define XBF_DONE (1u << 5) /* all pages in the buffer uptodate */
|
||||
#define XBF_STALE (1u << 6) /* buffer has been staled, do not find it */
|
||||
#define XBF_WRITE_FAIL (1u << 7) /* async writes have failed on this buffer */
|
||||
|
||||
/* buffer type flags for write callbacks */
|
||||
#define _XBF_INODES (1 << 16)/* inode buffer */
|
||||
#define _XBF_DQUOTS (1 << 17)/* dquot buffer */
|
||||
#define _XBF_LOGRECOVERY (1 << 18)/* log recovery buffer */
|
||||
#define _XBF_INODES (1u << 16)/* inode buffer */
|
||||
#define _XBF_DQUOTS (1u << 17)/* dquot buffer */
|
||||
#define _XBF_LOGRECOVERY (1u << 18)/* log recovery buffer */
|
||||
|
||||
/* flags used only internally */
|
||||
#define _XBF_PAGES (1 << 20)/* backed by refcounted pages */
|
||||
#define _XBF_KMEM (1 << 21)/* backed by heap memory */
|
||||
#define _XBF_DELWRI_Q (1 << 22)/* buffer on a delwri queue */
|
||||
#define _XBF_PAGES (1u << 20)/* backed by refcounted pages */
|
||||
#define _XBF_KMEM (1u << 21)/* backed by heap memory */
|
||||
#define _XBF_DELWRI_Q (1u << 22)/* buffer on a delwri queue */
|
||||
|
||||
/* flags used only as arguments to access routines */
|
||||
#define XBF_TRYLOCK (1 << 30)/* lock requested, but do not wait */
|
||||
#define XBF_UNMAPPED (1 << 31)/* do not map the buffer */
|
||||
#define XBF_TRYLOCK (1u << 30)/* lock requested, but do not wait */
|
||||
#define XBF_UNMAPPED (1u << 31)/* do not map the buffer */
|
||||
|
||||
typedef unsigned int xfs_buf_flags_t;
|
||||
|
||||
|
@ -58,7 +58,7 @@ typedef unsigned int xfs_buf_flags_t;
|
|||
{ XBF_WRITE_FAIL, "WRITE_FAIL" }, \
|
||||
{ _XBF_INODES, "INODES" }, \
|
||||
{ _XBF_DQUOTS, "DQUOTS" }, \
|
||||
{ _XBF_LOGRECOVERY, "LOG_RECOVERY" }, \
|
||||
{ _XBF_LOGRECOVERY, "LOG_RECOVERY" }, \
|
||||
{ _XBF_PAGES, "PAGES" }, \
|
||||
{ _XBF_KMEM, "KMEM" }, \
|
||||
{ _XBF_DELWRI_Q, "DELWRI_Q" }, \
|
||||
|
@ -247,11 +247,11 @@ xfs_buf_readahead(
|
|||
return xfs_buf_readahead_map(target, &map, 1, ops);
|
||||
}
|
||||
|
||||
int xfs_buf_get_uncached(struct xfs_buftarg *target, size_t numblks, int flags,
|
||||
struct xfs_buf **bpp);
|
||||
int xfs_buf_get_uncached(struct xfs_buftarg *target, size_t numblks,
|
||||
xfs_buf_flags_t flags, struct xfs_buf **bpp);
|
||||
int xfs_buf_read_uncached(struct xfs_buftarg *target, xfs_daddr_t daddr,
|
||||
size_t numblks, int flags, struct xfs_buf **bpp,
|
||||
const struct xfs_buf_ops *ops);
|
||||
size_t numblks, xfs_buf_flags_t flags, struct xfs_buf **bpp,
|
||||
const struct xfs_buf_ops *ops);
|
||||
int _xfs_buf_read(struct xfs_buf *bp, xfs_buf_flags_t flags);
|
||||
void xfs_buf_hold(struct xfs_buf *bp);
|
||||
|
||||
|
|
|
@ -2594,14 +2594,13 @@ xfs_ifree_cluster(
|
|||
}
|
||||
|
||||
/*
|
||||
* This is called to return an inode to the inode free list.
|
||||
* The inode should already be truncated to 0 length and have
|
||||
* no pages associated with it. This routine also assumes that
|
||||
* the inode is already a part of the transaction.
|
||||
* This is called to return an inode to the inode free list. The inode should
|
||||
* already be truncated to 0 length and have no pages associated with it. This
|
||||
* routine also assumes that the inode is already a part of the transaction.
|
||||
*
|
||||
* The on-disk copy of the inode will have been added to the list
|
||||
* of unlinked inodes in the AGI. We need to remove the inode from
|
||||
* that list atomically with respect to freeing it here.
|
||||
* The on-disk copy of the inode will have been added to the list of unlinked
|
||||
* inodes in the AGI. We need to remove the inode from that list atomically with
|
||||
* respect to freeing it here.
|
||||
*/
|
||||
int
|
||||
xfs_ifree(
|
||||
|
@ -2623,13 +2622,16 @@ xfs_ifree(
|
|||
pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
|
||||
|
||||
/*
|
||||
* Pull the on-disk inode from the AGI unlinked list.
|
||||
* Free the inode first so that we guarantee that the AGI lock is going
|
||||
* to be taken before we remove the inode from the unlinked list. This
|
||||
* makes the AGI lock -> unlinked list modification order the same as
|
||||
* used in O_TMPFILE creation.
|
||||
*/
|
||||
error = xfs_iunlink_remove(tp, pag, ip);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
error = xfs_difree(tp, pag, ip->i_ino, &xic);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
error = xfs_iunlink_remove(tp, pag, ip);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -175,7 +175,7 @@ xfs_trans_get_buf(
|
|||
struct xfs_buftarg *target,
|
||||
xfs_daddr_t blkno,
|
||||
int numblks,
|
||||
uint flags,
|
||||
xfs_buf_flags_t flags,
|
||||
struct xfs_buf **bpp)
|
||||
{
|
||||
DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
|
||||
|
|
Loading…
Reference in New Issue