Changes since last update:
- Clean up duplicate includes - Remove ancient 'no-alloc' crap code that occasionally caused hard fs shutdowns due to lack of proper space reservations - Fix regression in FIEMAP behavior when reporting xattr extents -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCgAGBQJaK0JUAAoJEPh/dxk0SrTrWOcP/iDoE1nV8BHru8ynwCr0ABun Hc+dmtQ1uQezu1qewzWkxH/zkyvpMBtH3wkqkYQApbPw7jSN4WDUazEGPY4Ju6pJ gMyg64EEC6UEGN8B9M2mf1QB/Q/TjZSeFiKOLw78ikWYSG/dbf814zC2fyWO79eG mjGzNbdvBbId35HLd62vd8VAW7zYY3acOyzQEl41LqKoGXD9eFWIh/uvH0bGuxN3 3YipW/PM7MBq+1rCi6pFVX+wt7pemi8hQ4vRZqMp24SB5JmvruP9E45iOt/8sep+ D/x1YjDyhutshAjbXyIaruxeIfsrs/r/3SAkOQgktwc8ihadBTJF3TPL9aTUGwLS 1dCL7Gd2Mx317yeHzSFs+FCq8pc+ioysbyZcCIlJPnhb1ZCaA98XD/desbNL/BY4 uf/Uq/5dJ6Kwllzol1VVz4CVKne4x1vQhPuIT1/wYsd2tSIYiBg+XlFV67CB7Fsv 9wRetybw2c22qINLNPc50tocGcormQT940PieketssFsOHa96GduT5Z5DEbZa7FV /yk68o50VU2zlKuAMtTYbLT+uL/TimgeHU1pSCXOwT2wvJA/O5hVQEadIZ51cMct KSFlY8xEGwDZM8S88Xf1H7yFmUpGvmAnIwPHCZSJur026rZMWeANl6MTZJTJSpTx Wdj87C+2s5awNUcZmX0n =cmic -----END PGP SIGNATURE----- Merge tag 'xfs-4.15-fixes-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux Pull xfs fixes from Darrick Wong: "Here are a few more bug fixes & cleanups for 4.15-rc4: - clean up duplicate includes - remove ancient 'no-alloc' crap code that occasionally caused hard fs shutdowns due to lack of proper space reservations - fix regression in FIEMAP behavior when reporting xattr extents" * tag 'xfs-4.15-fixes-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: xfs: make iomap_begin functions trim iomaps consistently xfs: remove "no-allocation" reservations for file creations fs: xfs: remove duplicate includes
This commit is contained in:
commit
7c5cac1bc7
|
@ -920,8 +920,7 @@ STATIC xfs_agnumber_t
|
|||
xfs_ialloc_ag_select(
|
||||
xfs_trans_t *tp, /* transaction pointer */
|
||||
xfs_ino_t parent, /* parent directory inode number */
|
||||
umode_t mode, /* bits set to indicate file type */
|
||||
int okalloc) /* ok to allocate more space */
|
||||
umode_t mode) /* bits set to indicate file type */
|
||||
{
|
||||
xfs_agnumber_t agcount; /* number of ag's in the filesystem */
|
||||
xfs_agnumber_t agno; /* current ag number */
|
||||
|
@ -978,9 +977,6 @@ xfs_ialloc_ag_select(
|
|||
return agno;
|
||||
}
|
||||
|
||||
if (!okalloc)
|
||||
goto nextag;
|
||||
|
||||
if (!pag->pagf_init) {
|
||||
error = xfs_alloc_pagf_init(mp, tp, agno, flags);
|
||||
if (error)
|
||||
|
@ -1680,7 +1676,6 @@ xfs_dialloc(
|
|||
struct xfs_trans *tp,
|
||||
xfs_ino_t parent,
|
||||
umode_t mode,
|
||||
int okalloc,
|
||||
struct xfs_buf **IO_agbp,
|
||||
xfs_ino_t *inop)
|
||||
{
|
||||
|
@ -1692,6 +1687,7 @@ xfs_dialloc(
|
|||
int noroom = 0;
|
||||
xfs_agnumber_t start_agno;
|
||||
struct xfs_perag *pag;
|
||||
int okalloc = 1;
|
||||
|
||||
if (*IO_agbp) {
|
||||
/*
|
||||
|
@ -1707,7 +1703,7 @@ xfs_dialloc(
|
|||
* We do not have an agbp, so select an initial allocation
|
||||
* group for inode allocation.
|
||||
*/
|
||||
start_agno = xfs_ialloc_ag_select(tp, parent, mode, okalloc);
|
||||
start_agno = xfs_ialloc_ag_select(tp, parent, mode);
|
||||
if (start_agno == NULLAGNUMBER) {
|
||||
*inop = NULLFSINO;
|
||||
return 0;
|
||||
|
|
|
@ -81,7 +81,6 @@ xfs_dialloc(
|
|||
struct xfs_trans *tp, /* transaction pointer */
|
||||
xfs_ino_t parent, /* parent inode (directory) */
|
||||
umode_t mode, /* mode bits for new inode */
|
||||
int okalloc, /* ok to allocate more space */
|
||||
struct xfs_buf **agbp, /* buf for a.g. inode header */
|
||||
xfs_ino_t *inop); /* inode number allocated */
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include "scrub/scrub.h"
|
||||
#include "scrub/common.h"
|
||||
#include "scrub/trace.h"
|
||||
#include "scrub/scrub.h"
|
||||
#include "scrub/btree.h"
|
||||
|
||||
/*
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include "xfs_mount.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_da_format.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_inode.h"
|
||||
#include "xfs_btree.h"
|
||||
#include "xfs_trans.h"
|
||||
|
|
|
@ -749,7 +749,6 @@ xfs_ialloc(
|
|||
xfs_nlink_t nlink,
|
||||
dev_t rdev,
|
||||
prid_t prid,
|
||||
int okalloc,
|
||||
xfs_buf_t **ialloc_context,
|
||||
xfs_inode_t **ipp)
|
||||
{
|
||||
|
@ -765,7 +764,7 @@ xfs_ialloc(
|
|||
* Call the space management code to pick
|
||||
* the on-disk inode to be allocated.
|
||||
*/
|
||||
error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode, okalloc,
|
||||
error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode,
|
||||
ialloc_context, &ino);
|
||||
if (error)
|
||||
return error;
|
||||
|
@ -957,7 +956,6 @@ xfs_dir_ialloc(
|
|||
xfs_nlink_t nlink,
|
||||
dev_t rdev,
|
||||
prid_t prid, /* project id */
|
||||
int okalloc, /* ok to allocate new space */
|
||||
xfs_inode_t **ipp, /* pointer to inode; it will be
|
||||
locked. */
|
||||
int *committed)
|
||||
|
@ -988,8 +986,8 @@ xfs_dir_ialloc(
|
|||
* transaction commit so that no other process can steal
|
||||
* the inode(s) that we've just allocated.
|
||||
*/
|
||||
code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, okalloc,
|
||||
&ialloc_context, &ip);
|
||||
code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, &ialloc_context,
|
||||
&ip);
|
||||
|
||||
/*
|
||||
* Return an error if we were unable to allocate a new inode.
|
||||
|
@ -1061,7 +1059,7 @@ xfs_dir_ialloc(
|
|||
* this call should always succeed.
|
||||
*/
|
||||
code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid,
|
||||
okalloc, &ialloc_context, &ip);
|
||||
&ialloc_context, &ip);
|
||||
|
||||
/*
|
||||
* If we get an error at this point, return to the caller
|
||||
|
@ -1182,11 +1180,6 @@ xfs_create(
|
|||
xfs_flush_inodes(mp);
|
||||
error = xfs_trans_alloc(mp, tres, resblks, 0, 0, &tp);
|
||||
}
|
||||
if (error == -ENOSPC) {
|
||||
/* No space at all so try a "no-allocation" reservation */
|
||||
resblks = 0;
|
||||
error = xfs_trans_alloc(mp, tres, 0, 0, 0, &tp);
|
||||
}
|
||||
if (error)
|
||||
goto out_release_inode;
|
||||
|
||||
|
@ -1203,19 +1196,13 @@ xfs_create(
|
|||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
if (!resblks) {
|
||||
error = xfs_dir_canenter(tp, dp, name);
|
||||
if (error)
|
||||
goto out_trans_cancel;
|
||||
}
|
||||
|
||||
/*
|
||||
* A newly created regular or special file just has one directory
|
||||
* entry pointing to them, but a directory also the "." entry
|
||||
* pointing to itself.
|
||||
*/
|
||||
error = xfs_dir_ialloc(&tp, dp, mode, is_dir ? 2 : 1, rdev,
|
||||
prid, resblks > 0, &ip, NULL);
|
||||
error = xfs_dir_ialloc(&tp, dp, mode, is_dir ? 2 : 1, rdev, prid, &ip,
|
||||
NULL);
|
||||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
|
@ -1340,11 +1327,6 @@ xfs_create_tmpfile(
|
|||
tres = &M_RES(mp)->tr_create_tmpfile;
|
||||
|
||||
error = xfs_trans_alloc(mp, tres, resblks, 0, 0, &tp);
|
||||
if (error == -ENOSPC) {
|
||||
/* No space at all so try a "no-allocation" reservation */
|
||||
resblks = 0;
|
||||
error = xfs_trans_alloc(mp, tres, 0, 0, 0, &tp);
|
||||
}
|
||||
if (error)
|
||||
goto out_release_inode;
|
||||
|
||||
|
@ -1353,8 +1335,7 @@ xfs_create_tmpfile(
|
|||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
error = xfs_dir_ialloc(&tp, dp, mode, 1, 0,
|
||||
prid, resblks > 0, &ip, NULL);
|
||||
error = xfs_dir_ialloc(&tp, dp, mode, 1, 0, prid, &ip, NULL);
|
||||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
|
|
|
@ -428,7 +428,7 @@ xfs_extlen_t xfs_get_extsz_hint(struct xfs_inode *ip);
|
|||
xfs_extlen_t xfs_get_cowextsz_hint(struct xfs_inode *ip);
|
||||
|
||||
int xfs_dir_ialloc(struct xfs_trans **, struct xfs_inode *, umode_t,
|
||||
xfs_nlink_t, dev_t, prid_t, int,
|
||||
xfs_nlink_t, dev_t, prid_t,
|
||||
struct xfs_inode **, int *);
|
||||
|
||||
/* from xfs_file.c */
|
||||
|
|
|
@ -1213,7 +1213,7 @@ xfs_xattr_iomap_begin(
|
|||
|
||||
ASSERT(ip->i_d.di_aformat != XFS_DINODE_FMT_LOCAL);
|
||||
error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, &imap,
|
||||
&nimaps, XFS_BMAPI_ENTIRE | XFS_BMAPI_ATTRFORK);
|
||||
&nimaps, XFS_BMAPI_ATTRFORK);
|
||||
out_unlock:
|
||||
xfs_iunlock(ip, lockmode);
|
||||
|
||||
|
|
|
@ -793,8 +793,8 @@ xfs_qm_qino_alloc(
|
|||
return error;
|
||||
|
||||
if (need_alloc) {
|
||||
error = xfs_dir_ialloc(&tp, NULL, S_IFREG, 1, 0, 0, 1, ip,
|
||||
&committed);
|
||||
error = xfs_dir_ialloc(&tp, NULL, S_IFREG, 1, 0, 0, ip,
|
||||
&committed);
|
||||
if (error) {
|
||||
xfs_trans_cancel(tp);
|
||||
return error;
|
||||
|
|
|
@ -49,8 +49,6 @@
|
|||
#include "xfs_alloc.h"
|
||||
#include "xfs_quota_defs.h"
|
||||
#include "xfs_quota.h"
|
||||
#include "xfs_btree.h"
|
||||
#include "xfs_bmap_btree.h"
|
||||
#include "xfs_reflink.h"
|
||||
#include "xfs_iomap.h"
|
||||
#include "xfs_rmap_btree.h"
|
||||
|
|
|
@ -232,11 +232,6 @@ xfs_symlink(
|
|||
resblks = XFS_SYMLINK_SPACE_RES(mp, link_name->len, fs_blocks);
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_symlink, resblks, 0, 0, &tp);
|
||||
if (error == -ENOSPC && fs_blocks == 0) {
|
||||
resblks = 0;
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_symlink, 0, 0, 0,
|
||||
&tp);
|
||||
}
|
||||
if (error)
|
||||
goto out_release_inode;
|
||||
|
||||
|
@ -259,14 +254,6 @@ xfs_symlink(
|
|||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
/*
|
||||
* Check for ability to enter directory entry, if no space reserved.
|
||||
*/
|
||||
if (!resblks) {
|
||||
error = xfs_dir_canenter(tp, dp, link_name);
|
||||
if (error)
|
||||
goto out_trans_cancel;
|
||||
}
|
||||
/*
|
||||
* Initialize the bmap freelist prior to calling either
|
||||
* bmapi or the directory create code.
|
||||
|
@ -277,7 +264,7 @@ xfs_symlink(
|
|||
* Allocate an inode for the symlink.
|
||||
*/
|
||||
error = xfs_dir_ialloc(&tp, dp, S_IFLNK | (mode & ~S_IFMT), 1, 0,
|
||||
prid, resblks > 0, &ip, NULL);
|
||||
prid, &ip, NULL);
|
||||
if (error)
|
||||
goto out_trans_cancel;
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "xfs_mount.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_da_format.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_inode.h"
|
||||
#include "xfs_btree.h"
|
||||
#include "xfs_da_btree.h"
|
||||
|
|
Loading…
Reference in New Issue