Merge tag 'jfs-5.11' of git://github.com/kleikamp/linux-shaggy
Pull jfs updates from David Kleikamp: "A few jfs fixes" * tag 'jfs-5.11' of git://github.com/kleikamp/linux-shaggy: jfs: Fix array index bounds check in dbAdjTree jfs: Fix memleak in dbAdjCtl jfs: delete duplicated words + other fixes
This commit is contained in:
@@ -668,7 +668,7 @@ unlock:
|
|||||||
* this does not succeed, we finally try to allocate anywhere
|
* this does not succeed, we finally try to allocate anywhere
|
||||||
* within the aggregate.
|
* within the aggregate.
|
||||||
*
|
*
|
||||||
* we also try to allocate anywhere within the aggregate for
|
* we also try to allocate anywhere within the aggregate
|
||||||
* for allocation requests larger than the allocation group
|
* for allocation requests larger than the allocation group
|
||||||
* size or requests that specify no hint value.
|
* size or requests that specify no hint value.
|
||||||
*
|
*
|
||||||
@@ -2549,16 +2549,20 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level)
|
|||||||
*/
|
*/
|
||||||
if (oldval == NOFREE) {
|
if (oldval == NOFREE) {
|
||||||
rc = dbBackSplit((dmtree_t *) dcp, leafno);
|
rc = dbBackSplit((dmtree_t *) dcp, leafno);
|
||||||
if (rc)
|
if (rc) {
|
||||||
|
release_metapage(mp);
|
||||||
return rc;
|
return rc;
|
||||||
|
}
|
||||||
oldval = dcp->stree[ti];
|
oldval = dcp->stree[ti];
|
||||||
}
|
}
|
||||||
dbSplit((dmtree_t *) dcp, leafno, dcp->budmin, newval);
|
dbSplit((dmtree_t *) dcp, leafno, dcp->budmin, newval);
|
||||||
} else {
|
} else {
|
||||||
rc = dbJoin((dmtree_t *) dcp, leafno, newval);
|
rc = dbJoin((dmtree_t *) dcp, leafno, newval);
|
||||||
if (rc)
|
if (rc) {
|
||||||
|
release_metapage(mp);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* check if the root of the current dmap control page changed due
|
/* check if the root of the current dmap control page changed due
|
||||||
* to the update and if the current dmap control page is not at
|
* to the update and if the current dmap control page is not at
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ typedef union dmtree {
|
|||||||
#define dmt_leafidx t1.leafidx
|
#define dmt_leafidx t1.leafidx
|
||||||
#define dmt_height t1.height
|
#define dmt_height t1.height
|
||||||
#define dmt_budmin t1.budmin
|
#define dmt_budmin t1.budmin
|
||||||
#define dmt_stree t1.stree
|
#define dmt_stree t2.stree
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* on-disk aggregate disk allocation map descriptor.
|
* on-disk aggregate disk allocation map descriptor.
|
||||||
|
|||||||
@@ -575,7 +575,7 @@ extBalloc(struct inode *ip, s64 hint, s64 * nblocks, s64 * blkno)
|
|||||||
* blkno - starting block number of the extents current allocation.
|
* blkno - starting block number of the extents current allocation.
|
||||||
* nblks - number of blocks within the extents current allocation.
|
* nblks - number of blocks within the extents current allocation.
|
||||||
* newnblks - pointer to a s64 value. on entry, this value is the
|
* newnblks - pointer to a s64 value. on entry, this value is the
|
||||||
* the new desired extent size (number of blocks). on
|
* new desired extent size (number of blocks). on
|
||||||
* successful exit, this value is set to the extent's actual
|
* successful exit, this value is set to the extent's actual
|
||||||
* new size (new number of blocks).
|
* new size (new number of blocks).
|
||||||
* newblkno - the starting block number of the extents new allocation.
|
* newblkno - the starting block number of the extents new allocation.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#ifndef _H_JFS_EXTENT
|
#ifndef _H_JFS_EXTENT
|
||||||
#define _H_JFS_EXTENT
|
#define _H_JFS_EXTENT
|
||||||
|
|
||||||
/* get block allocation allocation hint as location of disk inode */
|
/* get block allocation hint as location of disk inode */
|
||||||
#define INOHINT(ip) \
|
#define INOHINT(ip) \
|
||||||
(addressPXD(&(JFS_IP(ip)->ixpxd)) + lengthPXD(&(JFS_IP(ip)->ixpxd)) - 1)
|
(addressPXD(&(JFS_IP(ip)->ixpxd)) + lengthPXD(&(JFS_IP(ip)->ixpxd)) - 1)
|
||||||
|
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ struct logpage {
|
|||||||
* (this comment should be rewritten !)
|
* (this comment should be rewritten !)
|
||||||
* jfs uses only "after" log records (only a single writer is allowed
|
* jfs uses only "after" log records (only a single writer is allowed
|
||||||
* in a page, pages are written to temporary paging space if
|
* in a page, pages are written to temporary paging space if
|
||||||
* if they must be written to disk before commit, and i/o is
|
* they must be written to disk before commit, and i/o is
|
||||||
* scheduled for modified pages to their home location after
|
* scheduled for modified pages to their home location after
|
||||||
* the log records containing the after values and the commit
|
* the log records containing the after values and the commit
|
||||||
* record is written to the log on disk, undo discards the copy
|
* record is written to the log on disk, undo discards the copy
|
||||||
|
|||||||
@@ -1474,7 +1474,7 @@ static int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
|
|||||||
* For the LOG_NOREDOINOEXT record, we need
|
* For the LOG_NOREDOINOEXT record, we need
|
||||||
* to pass the IAG number and inode extent
|
* to pass the IAG number and inode extent
|
||||||
* index (within that IAG) from which the
|
* index (within that IAG) from which the
|
||||||
* the extent being released. These have been
|
* extent is being released. These have been
|
||||||
* passed to us in the iplist[1] and iplist[2].
|
* passed to us in the iplist[1] and iplist[2].
|
||||||
*/
|
*/
|
||||||
lrd->log.noredoinoext.iagnum =
|
lrd->log.noredoinoext.iagnum =
|
||||||
|
|||||||
@@ -3684,7 +3684,7 @@ s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag)
|
|||||||
*
|
*
|
||||||
* function:
|
* function:
|
||||||
* Perform truncate to zero length for deleted file, leaving the
|
* Perform truncate to zero length for deleted file, leaving the
|
||||||
* the xtree and working map untouched. This allows the file to
|
* xtree and working map untouched. This allows the file to
|
||||||
* be accessed via open file handles, while the delete of the file
|
* be accessed via open file handles, while the delete of the file
|
||||||
* is committed to disk.
|
* is committed to disk.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user