]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/jfs/jfs_extent.c
Merge tag 'jfs-5.19' of https://github.com/kleikamp/linux-shaggy
[people/ms/linux.git] / fs / jfs / jfs_extent.c
index bb4a342a193d4491bac4d43d8901864942641316..ae99a7e232eebd1c06aaaf4e8bc9d9ef3f9c95ec 100644 (file)
@@ -16,9 +16,6 @@
  * forward references
  */
 static int extBalloc(struct inode *, s64, s64 *, s64 *);
-#ifdef _NOTYET
-static int extBrealloc(struct inode *, s64, s64, s64 *, s64 *);
-#endif
 static s64 extRoundDown(s64 nb);
 
 #define DPD(a)         (printk("(a): %d\n",(a)))
@@ -177,162 +174,6 @@ extAlloc(struct inode *ip, s64 xlen, s64 pno, xad_t * xp, bool abnr)
        return (0);
 }
 
-
-#ifdef _NOTYET
-/*
- * NAME:       extRealloc()
- *
- * FUNCTION:   extend the allocation of a file extent containing a
- *             partial back last page.
- *
- * PARAMETERS:
- *     ip      - the inode of the file.
- *     cp      - cbuf for the partial backed last page.
- *     xlen    - request size of the resulting extent.
- *     xp      - pointer to an xad. on successful exit, the xad
- *               describes the newly allocated extent.
- *     abnr    - bool indicating whether the newly allocated extent
- *               should be marked as allocated but not recorded.
- *
- * RETURN VALUES:
- *     0       - success
- *     -EIO    - i/o error.
- *     -ENOSPC - insufficient disk resources.
- */
-int extRealloc(struct inode *ip, s64 nxlen, xad_t * xp, bool abnr)
-{
-       struct super_block *sb = ip->i_sb;
-       s64 xaddr, xlen, nxaddr, delta, xoff;
-       s64 ntail, nextend, ninsert;
-       int rc, nbperpage = JFS_SBI(sb)->nbperpage;
-       int xflag;
-
-       /* This blocks if we are low on resources */
-       txBeginAnon(ip->i_sb);
-
-       mutex_lock(&JFS_IP(ip)->commit_mutex);
-       /* validate extent length */
-       if (nxlen > MAXXLEN)
-               nxlen = MAXXLEN;
-
-       /* get the extend (partial) page's disk block address and
-        * number of blocks.
-        */
-       xaddr = addressXAD(xp);
-       xlen = lengthXAD(xp);
-       xoff = offsetXAD(xp);
-
-       /* if the extend page is abnr and if the request is for
-        * the extent to be allocated and recorded,
-        * make the page allocated and recorded.
-        */
-       if ((xp->flag & XAD_NOTRECORDED) && !abnr) {
-               xp->flag = 0;
-               if ((rc = xtUpdate(0, ip, xp)))
-                       goto exit;
-       }
-
-       /* try to allocated the request number of blocks for the
-        * extent.  dbRealloc() first tries to satisfy the request
-        * by extending the allocation in place. otherwise, it will
-        * try to allocate a new set of blocks large enough for the
-        * request.  in satisfying a request, dbReAlloc() may allocate
-        * less than what was request but will always allocate enough
-        * space as to satisfy the extend page.
-        */
-       if ((rc = extBrealloc(ip, xaddr, xlen, &nxlen, &nxaddr)))
-               goto exit;
-
-       /* Allocat blocks to quota. */
-       rc = dquot_alloc_block(ip, nxlen);
-       if (rc) {
-               dbFree(ip, nxaddr, (s64) nxlen);
-               mutex_unlock(&JFS_IP(ip)->commit_mutex);
-               return rc;
-       }
-
-       delta = nxlen - xlen;
-
-       /* check if the extend page is not abnr but the request is abnr
-        * and the allocated disk space is for more than one page.  if this
-        * is the case, there is a miss match of abnr between the extend page
-        * and the one or more pages following the extend page.  as a result,
-        * two extents will have to be manipulated. the first will be that
-        * of the extent of the extend page and will be manipulated thru
-        * an xtExtend() or an xtTailgate(), depending upon whether the
-        * disk allocation occurred as an inplace extension.  the second
-        * extent will be manipulated (created) through an xtInsert() and
-        * will be for the pages following the extend page.
-        */
-       if (abnr && (!(xp->flag & XAD_NOTRECORDED)) && (nxlen > nbperpage)) {
-               ntail = nbperpage;
-               nextend = ntail - xlen;
-               ninsert = nxlen - nbperpage;
-
-               xflag = XAD_NOTRECORDED;
-       } else {
-               ntail = nxlen;
-               nextend = delta;
-               ninsert = 0;
-
-               xflag = xp->flag;
-       }
-
-       /* if we were able to extend the disk allocation in place,
-        * extend the extent.  otherwise, move the extent to a
-        * new disk location.
-        */
-       if (xaddr == nxaddr) {
-               /* extend the extent */
-               if ((rc = xtExtend(0, ip, xoff + xlen, (int) nextend, 0))) {
-                       dbFree(ip, xaddr + xlen, delta);
-                       dquot_free_block(ip, nxlen);
-                       goto exit;
-               }
-       } else {
-               /*
-                * move the extent to a new location:
-                *
-                * xtTailgate() accounts for relocated tail extent;
-                */
-               if ((rc = xtTailgate(0, ip, xoff, (int) ntail, nxaddr, 0))) {
-                       dbFree(ip, nxaddr, nxlen);
-                       dquot_free_block(ip, nxlen);
-                       goto exit;
-               }
-       }
-
-
-       /* check if we need to also insert a new extent */
-       if (ninsert) {
-               /* perform the insert.  if it fails, free the blocks
-                * to be inserted and make it appear that we only did
-                * the xtExtend() or xtTailgate() above.
-                */
-               xaddr = nxaddr + ntail;
-               if (xtInsert (0, ip, xflag, xoff + ntail, (int) ninsert,
-                             &xaddr, 0)) {
-                       dbFree(ip, xaddr, (s64) ninsert);
-                       delta = nextend;
-                       nxlen = ntail;
-                       xflag = 0;
-               }
-       }
-
-       /* set the return results */
-       XADaddress(xp, nxaddr);
-       XADlength(xp, nxlen);
-       XADoffset(xp, xoff);
-       xp->flag = xflag;
-
-       mark_inode_dirty(ip);
-exit:
-       mutex_unlock(&JFS_IP(ip)->commit_mutex);
-       return (rc);
-}
-#endif                 /* _NOTYET */
-
-
 /*
  * NAME:       extHint()
  *
@@ -423,44 +264,6 @@ int extRecord(struct inode *ip, xad_t * xp)
        return rc;
 }
 
-
-#ifdef _NOTYET
-/*
- * NAME:       extFill()
- *
- * FUNCTION:   allocate disk space for a file page that represents
- *             a file hole.
- *
- * PARAMETERS:
- *     ip      - the inode of the file.
- *     cp      - cbuf of the file page represent the hole.
- *
- * RETURN VALUES:
- *     0       - success
- *     -EIO    - i/o error.
- *     -ENOSPC - insufficient disk resources.
- */
-int extFill(struct inode *ip, xad_t * xp)
-{
-       int rc, nbperpage = JFS_SBI(ip->i_sb)->nbperpage;
-       s64 blkno = offsetXAD(xp) >> ip->i_blkbits;
-
-//     assert(ISSPARSE(ip));
-
-       /* initialize the extent allocation hint */
-       XADaddress(xp, 0);
-
-       /* allocate an extent to fill the hole */
-       if ((rc = extAlloc(ip, nbperpage, blkno, xp, false)))
-               return (rc);
-
-       assert(lengthPXD(xp) == nbperpage);
-
-       return (0);
-}
-#endif                 /* _NOTYET */
-
-
 /*
  * NAME:       extBalloc()
  *
@@ -550,64 +353,6 @@ extBalloc(struct inode *ip, s64 hint, s64 * nblocks, s64 * blkno)
        return (0);
 }
 
-
-#ifdef _NOTYET
-/*
- * NAME:       extBrealloc()
- *
- * FUNCTION:   attempt to extend an extent's allocation.
- *
- *             Initially, we will try to extend the extent's allocation
- *             in place.  If this fails, we'll try to move the extent
- *             to a new set of blocks.  If moving the extent, we initially
- *             will try to allocate disk blocks for the requested size
- *             (newnblks).  if this fails (new contiguous free blocks not
- *             available), we'll try to allocate a smaller number of
- *             blocks (producing a smaller extent), with this smaller
- *             number of blocks consisting of the requested number of
- *             blocks rounded down to the next smaller power of 2
- *             number (i.e. 16 -> 8).  We'll continue to round down and
- *             retry the allocation until the number of blocks to allocate
- *             is smaller than the number of blocks per page.
- *
- * PARAMETERS:
- *     ip       - the inode of the file.
- *     blkno    - starting block number of 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
- *                new desired extent size (number of blocks).  on
- *                successful exit, this value is set to the extent's actual
- *                new size (new number of blocks).
- *     newblkno - the starting block number of the extents new allocation.
- *
- * RETURN VALUES:
- *     0       - success
- *     -EIO    - i/o error.
- *     -ENOSPC - insufficient disk resources.
- */
-static int
-extBrealloc(struct inode *ip,
-           s64 blkno, s64 nblks, s64 * newnblks, s64 * newblkno)
-{
-       int rc;
-
-       /* try to extend in place */
-       if ((rc = dbExtend(ip, blkno, nblks, *newnblks - nblks)) == 0) {
-               *newblkno = blkno;
-               return (0);
-       } else {
-               if (rc != -ENOSPC)
-                       return (rc);
-       }
-
-       /* in place extension not possible.
-        * try to move the extent to a new set of blocks.
-        */
-       return (extBalloc(ip, blkno, newnblks, newblkno));
-}
-#endif                 /* _NOTYET */
-
-
 /*
  * NAME:       extRoundDown()
  *