mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
Changes for 4.12:
- various code cleanups - introduce GETFSMAP ioctl - various refactoring - avoid dio reads past eof - fix memory corruption and other errors with fragmented directory blocks - fix accidental userspace memory corruptions - publish fs uuid in superblock - make fstrim terminatable - fix race between quotaoff and in-core inode creation - Avoid use-after-free when finishing up w/ buffer heads - Reserve enough space to handle bmap tree resizing during cow remap -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCgAGBQJZDfIzAAoJEPh/dxk0SrTrsEgP/3TjYbaqsad2e6KqtZwqN/Qx DUljUxReZl4rgnAaFD55XOPYWGZ2bBGNtAQlAR7/JYZuZs6obbBrqUukS19jPVi7 SeQdknnU3yTq17LrwEeeQUOhem28GHxYtQYazdgNoTigZXABeXWzi53HzvPw5+Ci 3a+zB1clu3cycKsD+UAhz/m0Z40ckjDMsDueJMOACiax+vPjlzSu36H9wzlF/h0R nq7VGSDZy6aS3H75PDjWVxoJGUSdO7jHYxwQflkk6wxrcmTCLZxuiDeSANOZ2KxM y8qTln6hqxalQSH9r6n84/XrQstYWfdLqwngIL5wMSvN6UbuFyNQKuouEkWs6EEZ 4cuSqfihT7o5VcIpYiq1ZDgNzzpmDDMMeho4J9WBvm5Qt5hgPCo3gzweE/C6Sscs m+V1NvLd+kBiHoMhYPB8/lm4nXa/wT1Y3TtHc+8A/qkZKAwoOdxWKNIY58jfmdzb Rvv0LKi+6W5zanzXlNs3NXJBwZAeHuHXKY3UJT4BAWfjdtS6QvIf1Bcpj9ApyqE2 oOnNMRhF+wSS9dSFoPXkRjzIyoR5CoOylB0KYV9OYELYPDLczwbvtX/9+tjDEol9 odCZyyzJtKxYQbwf2TQ/ZqXQV4vw6lWOB7G4Itx7yv0Taa9vQ7cxSX2MnE7TA/pW IQKsE6C2I24Bfr2oPfms =oKCc -----END PGP SIGNATURE----- Merge tag 'xfs-4.12-merge-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux Pull xfs updates from Darrick Wong: "Here are the XFS changes for 4.12. The big new feature for this release is the new space mapping ioctl that we've been discussing since LSF2016, but other than that most of the patches are larger bug fixes, memory corruption prevention, and other cleanups. Summary: - various code cleanups - introduce GETFSMAP ioctl - various refactoring - avoid dio reads past eof - fix memory corruption and other errors with fragmented directory blocks - fix accidental userspace memory corruptions - publish fs uuid in superblock - make fstrim terminatable - fix race between quotaoff and in-core inode creation - avoid use-after-free when finishing up w/ buffer heads - reserve enough space to handle bmap tree resizing during cow remap" * tag 'xfs-4.12-merge-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (53 commits) xfs: fix use-after-free in xfs_finish_page_writeback xfs: reserve enough blocks to handle btree splits when remapping xfs: wait on new inodes during quotaoff dquot release xfs: update ag iterator to support wait on new inodes xfs: support ability to wait on new inodes xfs: publish UUID in struct super_block xfs: Allow user to kill fstrim process xfs: better log intent item refcount checking xfs: fix up quotacheck buffer list error handling xfs: remove xfs_trans_ail_delete_bulk xfs: don't use bool values in trace buffers xfs: fix getfsmap userspace memory corruption while setting OF_LAST xfs: fix __user annotations for xfs_ioc_getfsmap xfs: corruption needs to respect endianess too! xfs: use NULL instead of 0 to initialize a pointer in xfs_ioc_getfsmap xfs: use NULL instead of 0 to initialize a pointer in xfs_getfsmap xfs: simplify validation of the unwritten extent bit xfs: remove unused values from xfs_exntst_t xfs: remove the unused XFS_MAXLINK_1 define xfs: more do_div cleanups ...
This commit is contained in:
commit
d484467c86
56 changed files with 2163 additions and 668 deletions
|
@ -262,6 +262,28 @@ xfs_trans_alloc(
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create an empty transaction with no reservation. This is a defensive
|
||||
* mechanism for routines that query metadata without actually modifying
|
||||
* them -- if the metadata being queried is somehow cross-linked (think a
|
||||
* btree block pointer that points higher in the tree), we risk deadlock.
|
||||
* However, blocks grabbed as part of a transaction can be re-grabbed.
|
||||
* The verifiers will notice the corrupt block and the operation will fail
|
||||
* back to userspace without deadlocking.
|
||||
*
|
||||
* Note the zero-length reservation; this transaction MUST be cancelled
|
||||
* without any dirty data.
|
||||
*/
|
||||
int
|
||||
xfs_trans_alloc_empty(
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_trans **tpp)
|
||||
{
|
||||
struct xfs_trans_res resv = {0};
|
||||
|
||||
return xfs_trans_alloc(mp, &resv, 0, 0, XFS_TRANS_NO_WRITECOUNT, tpp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Record the indicated change to the given field for application
|
||||
* to the file system's superblock when the transaction commits.
|
||||
|
@ -1012,17 +1034,14 @@ xfs_trans_cancel(
|
|||
* chunk we've been working on and get a new transaction to continue.
|
||||
*/
|
||||
int
|
||||
__xfs_trans_roll(
|
||||
xfs_trans_roll(
|
||||
struct xfs_trans **tpp,
|
||||
struct xfs_inode *dp,
|
||||
int *committed)
|
||||
struct xfs_inode *dp)
|
||||
{
|
||||
struct xfs_trans *trans;
|
||||
struct xfs_trans_res tres;
|
||||
int error;
|
||||
|
||||
*committed = 0;
|
||||
|
||||
/*
|
||||
* Ensure that the inode is always logged.
|
||||
*/
|
||||
|
@ -1048,7 +1067,6 @@ __xfs_trans_roll(
|
|||
if (error)
|
||||
return error;
|
||||
|
||||
*committed = 1;
|
||||
trans = *tpp;
|
||||
|
||||
/*
|
||||
|
@ -1071,12 +1089,3 @@ __xfs_trans_roll(
|
|||
xfs_trans_ijoin(trans, dp, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
xfs_trans_roll(
|
||||
struct xfs_trans **tpp,
|
||||
struct xfs_inode *dp)
|
||||
{
|
||||
int committed;
|
||||
return __xfs_trans_roll(tpp, dp, &committed);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue