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

Commit 2268419e authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'xfs-5.4-merge-8' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux

Pull xfs fixes from Darrick Wong:
 "There are a couple of bug fixes and some small code cleanups that came
  in recently:

   - Minor code cleanups

   - Fix a superblock logging error

   - Ensure that collapse range converts the data fork to extents format
     when necessary

   - Revert the ALLOC_USERDATA cleanup because it caused subtle behavior
     regressions"

* tag 'xfs-5.4-merge-8' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
  xfs: avoid unused to_mp() function warning
  xfs: log proper length of superblock
  xfs: revert 1baa2800 ("xfs: remove the unused XFS_ALLOC_USERDATA flag")
  xfs: removed unneeded variable
  xfs: convert inode to extent format after extent merge due to shift
parents dadedd85 88d32d39
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -81,9 +81,10 @@ typedef struct xfs_alloc_arg {
/*
 * Defines for datatype
 */
#define XFS_ALLOC_INITIAL_USER_DATA	(1 << 0)/* special case start of file */
#define XFS_ALLOC_USERDATA_ZERO		(1 << 1)/* zero extent on allocation */
#define XFS_ALLOC_NOBUSY		(1 << 2)/* Busy extents not allowed */
#define XFS_ALLOC_USERDATA		(1 << 0)/* allocation is for user data*/
#define XFS_ALLOC_INITIAL_USER_DATA	(1 << 1)/* special case start of file */
#define XFS_ALLOC_USERDATA_ZERO		(1 << 2)/* zero extent on allocation */
#define XFS_ALLOC_NOBUSY		(1 << 3)/* Busy extents not allowed */

static inline bool
xfs_alloc_is_userdata(int datatype)
+11 −2
Original line number Diff line number Diff line
@@ -4042,8 +4042,12 @@ xfs_bmapi_allocate(
	 */
	if (!(bma->flags & XFS_BMAPI_METADATA)) {
		bma->datatype = XFS_ALLOC_NOBUSY;
		if (whichfork == XFS_DATA_FORK && bma->offset == 0)
		if (whichfork == XFS_DATA_FORK) {
			if (bma->offset == 0)
				bma->datatype |= XFS_ALLOC_INITIAL_USER_DATA;
			else
				bma->datatype |= XFS_ALLOC_USERDATA;
		}
		if (bma->flags & XFS_BMAPI_ZERO)
			bma->datatype |= XFS_ALLOC_USERDATA_ZERO;
	}
@@ -5621,6 +5625,11 @@ xfs_bmse_merge(
	if (error)
		return error;

	/* change to extent format if required after extent removal */
	error = xfs_bmap_btree_to_extents(tp, ip, cur, logflags, whichfork);
	if (error)
		return error;

done:
	xfs_iext_remove(ip, icur, 0);
	xfs_iext_prev(XFS_IFORK_PTR(ip, whichfork), icur);
+1 −1
Original line number Diff line number Diff line
@@ -928,7 +928,7 @@ xfs_log_sb(

	xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb);
	xfs_trans_buf_set_type(tp, bp, XFS_BLFT_SB_BUF);
	xfs_trans_log_buf(tp, bp, 0, sizeof(struct xfs_dsb));
	xfs_trans_log_buf(tp, bp, 0, sizeof(struct xfs_dsb) - 1);
}

/*
+1 −2
Original line number Diff line number Diff line
@@ -97,7 +97,6 @@ xchk_allocbt_rec(
	xfs_agnumber_t		agno = bs->cur->bc_private.a.agno;
	xfs_agblock_t		bno;
	xfs_extlen_t		len;
	int			error = 0;

	bno = be32_to_cpu(rec->alloc.ar_startblock);
	len = be32_to_cpu(rec->alloc.ar_blockcount);
@@ -109,7 +108,7 @@ xchk_allocbt_rec(

	xchk_allocbt_xref(bs->sc, bno, len);

	return error;
	return 0;
}

/* Scrub the freespace btrees for some AG. */
+0 −13
Original line number Diff line number Diff line
@@ -63,19 +63,6 @@ static const struct sysfs_ops xfs_sysfs_ops = {
	.store = xfs_sysfs_object_store,
};

/*
 * xfs_mount kobject. The mp kobject also serves as the per-mount parent object
 * that is identified by the fsname under sysfs.
 */

static inline struct xfs_mount *
to_mp(struct kobject *kobject)
{
	struct xfs_kobj *kobj = to_kobj(kobject);

	return container_of(kobj, struct xfs_mount, m_kobj);
}

static struct attribute *xfs_mp_attrs[] = {
	NULL,
};