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

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
...@@ -81,9 +81,10 @@ typedef struct xfs_alloc_arg { ...@@ -81,9 +81,10 @@ typedef struct xfs_alloc_arg {
/* /*
* Defines for datatype * Defines for datatype
*/ */
#define XFS_ALLOC_INITIAL_USER_DATA (1 << 0)/* special case start of file */ #define XFS_ALLOC_USERDATA (1 << 0)/* allocation is for user data*/
#define XFS_ALLOC_USERDATA_ZERO (1 << 1)/* zero extent on allocation */ #define XFS_ALLOC_INITIAL_USER_DATA (1 << 1)/* special case start of file */
#define XFS_ALLOC_NOBUSY (1 << 2)/* Busy extents not allowed */ #define XFS_ALLOC_USERDATA_ZERO (1 << 2)/* zero extent on allocation */
#define XFS_ALLOC_NOBUSY (1 << 3)/* Busy extents not allowed */
static inline bool static inline bool
xfs_alloc_is_userdata(int datatype) xfs_alloc_is_userdata(int datatype)
......
...@@ -4042,8 +4042,12 @@ xfs_bmapi_allocate( ...@@ -4042,8 +4042,12 @@ xfs_bmapi_allocate(
*/ */
if (!(bma->flags & XFS_BMAPI_METADATA)) { if (!(bma->flags & XFS_BMAPI_METADATA)) {
bma->datatype = XFS_ALLOC_NOBUSY; bma->datatype = XFS_ALLOC_NOBUSY;
if (whichfork == XFS_DATA_FORK && bma->offset == 0) if (whichfork == XFS_DATA_FORK) {
bma->datatype |= XFS_ALLOC_INITIAL_USER_DATA; if (bma->offset == 0)
bma->datatype |= XFS_ALLOC_INITIAL_USER_DATA;
else
bma->datatype |= XFS_ALLOC_USERDATA;
}
if (bma->flags & XFS_BMAPI_ZERO) if (bma->flags & XFS_BMAPI_ZERO)
bma->datatype |= XFS_ALLOC_USERDATA_ZERO; bma->datatype |= XFS_ALLOC_USERDATA_ZERO;
} }
...@@ -5621,6 +5625,11 @@ xfs_bmse_merge( ...@@ -5621,6 +5625,11 @@ xfs_bmse_merge(
if (error) if (error)
return 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: done:
xfs_iext_remove(ip, icur, 0); xfs_iext_remove(ip, icur, 0);
xfs_iext_prev(XFS_IFORK_PTR(ip, whichfork), icur); xfs_iext_prev(XFS_IFORK_PTR(ip, whichfork), icur);
......
...@@ -928,7 +928,7 @@ xfs_log_sb( ...@@ -928,7 +928,7 @@ xfs_log_sb(
xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_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_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);
} }
/* /*
......
...@@ -97,7 +97,6 @@ xchk_allocbt_rec( ...@@ -97,7 +97,6 @@ xchk_allocbt_rec(
xfs_agnumber_t agno = bs->cur->bc_private.a.agno; xfs_agnumber_t agno = bs->cur->bc_private.a.agno;
xfs_agblock_t bno; xfs_agblock_t bno;
xfs_extlen_t len; xfs_extlen_t len;
int error = 0;
bno = be32_to_cpu(rec->alloc.ar_startblock); bno = be32_to_cpu(rec->alloc.ar_startblock);
len = be32_to_cpu(rec->alloc.ar_blockcount); len = be32_to_cpu(rec->alloc.ar_blockcount);
...@@ -109,7 +108,7 @@ xchk_allocbt_rec( ...@@ -109,7 +108,7 @@ xchk_allocbt_rec(
xchk_allocbt_xref(bs->sc, bno, len); xchk_allocbt_xref(bs->sc, bno, len);
return error; return 0;
} }
/* Scrub the freespace btrees for some AG. */ /* Scrub the freespace btrees for some AG. */
......
...@@ -63,19 +63,6 @@ static const struct sysfs_ops xfs_sysfs_ops = { ...@@ -63,19 +63,6 @@ static const struct sysfs_ops xfs_sysfs_ops = {
.store = xfs_sysfs_object_store, .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[] = { static struct attribute *xfs_mp_attrs[] = {
NULL, NULL,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment