mirror of https://gitee.com/openkylin/linux.git
Changes since last update:
- Fix some compiler warnings - Fix block rservations for transactions created during log recovery - Fix resource leaks when respecifying mount options -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCgAGBQJalEvWAAoJEPh/dxk0SrTrdDcQAKgYcpg8Ip6uKNqc38hm79l+ RXjHQFbpgKiojBzjgI8+lPNsVBEhSSh65rXB6nEVSS/TFS0ONScRbNKrcH9Selkn cH1RsuhKk1NvKWaLMMFJWMTZK5Z6cHLtJU2szqnPdCsv/2EqdS6NylyYSFhljtSl xbD8vffjnJ1HU9ijZsSoZkiu0DO1yoXYu7EUQkWKPRSb/el+qYIMKSwFC8qQdxrp KGPyYH1CENm2jarKXAgTgqmUmrdJ9ikLHLT0sXQPZ9AbOjOoGlZ9Bn0KmvggQFmq TyE0je7L2EWrDRJ6R+lcFKC0fHDgo7ec8Iz/CJlOiExSebbNZgtsn0bbPMfq2Rnz 8IMYPAV+NBY8RQWumgBN2aOjyjV9EUd+TkeJh5aIubyFOE2GtEmHjlR4p0bG9os9 yOZJv+5JDF09oN1dLDf/xpEwXsHho6KHDYtVqbKhBWfQiw84sAlW9/NwfQOEugJS 6RXN3LaExSvpFSc9qcGqsrdGvEuMcNLo+XtTwz9g8DNR0Ztp1bFE64xh4KYlNsx5 QQj256Hx56R7vZ2/DC73MiT/hOSgfPpqnwOZP+Yc7I3DeO65DLwdCt9m2c0f1Odn 6xi3ZPXuq+QutJEp3iAfj5XXVmwSVgcub8EmtVmyK2fttiK3+SXbZdvo6JqyuEMX ZxwBaZkNuYWikHhj5iAp =A2Bo -----END PGP SIGNATURE----- Merge tag 'xfs-4.16-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux Pull xfs fixes from Darrick Wong: - fix some compiler warnings - fix block reservations for transactions created during log recovery - fix resource leaks when respecifying mount options * tag 'xfs-4.16-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: xfs: fix potential memory leak in mount option parsing xfs: reserve blocks for refcount / rmap log item recovery xfs: use memset to initialize xfs_scrub_agfl_info
This commit is contained in:
commit
c02be2334e
|
@ -767,7 +767,7 @@ int
|
|||
xfs_scrub_agfl(
|
||||
struct xfs_scrub_context *sc)
|
||||
{
|
||||
struct xfs_scrub_agfl_info sai = { 0 };
|
||||
struct xfs_scrub_agfl_info sai;
|
||||
struct xfs_agf *agf;
|
||||
xfs_agnumber_t agno;
|
||||
unsigned int agflcount;
|
||||
|
@ -795,6 +795,7 @@ xfs_scrub_agfl(
|
|||
xfs_scrub_block_set_corrupt(sc, sc->sa.agf_bp);
|
||||
goto out;
|
||||
}
|
||||
memset(&sai, 0, sizeof(sai));
|
||||
sai.sz_entries = agflcount;
|
||||
sai.entries = kmem_zalloc(sizeof(xfs_agblock_t) * agflcount, KM_NOFS);
|
||||
if (!sai.entries) {
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "xfs_log_format.h"
|
||||
#include "xfs_trans_resv.h"
|
||||
#include "xfs_bit.h"
|
||||
#include "xfs_shared.h"
|
||||
#include "xfs_mount.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_trans.h"
|
||||
|
@ -456,10 +457,12 @@ xfs_cui_recover(
|
|||
* transaction. Normally, any work that needs to be deferred
|
||||
* gets attached to the same defer_ops that scheduled the
|
||||
* refcount update. However, we're in log recovery here, so we
|
||||
* we create our own defer_ops and use that to finish up any
|
||||
* work that doesn't fit.
|
||||
* we use the passed in defer_ops and to finish up any work that
|
||||
* doesn't fit. We need to reserve enough blocks to handle a
|
||||
* full btree split on either end of the refcount range.
|
||||
*/
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate,
|
||||
mp->m_refc_maxlevels * 2, 0, XFS_TRANS_RESERVE, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
cudp = xfs_trans_get_cud(tp, cuip);
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "xfs_log_format.h"
|
||||
#include "xfs_trans_resv.h"
|
||||
#include "xfs_bit.h"
|
||||
#include "xfs_shared.h"
|
||||
#include "xfs_mount.h"
|
||||
#include "xfs_defer.h"
|
||||
#include "xfs_trans.h"
|
||||
|
@ -470,7 +471,8 @@ xfs_rui_recover(
|
|||
}
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate,
|
||||
mp->m_rmap_maxlevels, 0, XFS_TRANS_RESERVE, &tp);
|
||||
if (error)
|
||||
return error;
|
||||
rudp = xfs_trans_get_rud(tp, ruip);
|
||||
|
|
|
@ -250,6 +250,7 @@ xfs_parseargs(
|
|||
return -EINVAL;
|
||||
break;
|
||||
case Opt_logdev:
|
||||
kfree(mp->m_logname);
|
||||
mp->m_logname = match_strdup(args);
|
||||
if (!mp->m_logname)
|
||||
return -ENOMEM;
|
||||
|
@ -258,6 +259,7 @@ xfs_parseargs(
|
|||
xfs_warn(mp, "%s option not allowed on this system", p);
|
||||
return -EINVAL;
|
||||
case Opt_rtdev:
|
||||
kfree(mp->m_rtname);
|
||||
mp->m_rtname = match_strdup(args);
|
||||
if (!mp->m_rtname)
|
||||
return -ENOMEM;
|
||||
|
|
Loading…
Reference in New Issue