|
@@ -5122,9 +5122,7 @@ __xfs_bunmapi(
|
|
xfs_fileoff_t start, /* first file offset deleted */
|
|
xfs_fileoff_t start, /* first file offset deleted */
|
|
xfs_filblks_t *rlen, /* i/o: amount remaining */
|
|
xfs_filblks_t *rlen, /* i/o: amount remaining */
|
|
int flags, /* misc flags */
|
|
int flags, /* misc flags */
|
|
- xfs_extnum_t nexts, /* number of extents max */
|
|
|
|
- xfs_fsblock_t *firstblock) /* first allocated block
|
|
|
|
- controls a.g. for allocs */
|
|
|
|
|
|
+ xfs_extnum_t nexts) /* number of extents max */
|
|
{
|
|
{
|
|
struct xfs_btree_cur *cur; /* bmap btree cursor */
|
|
struct xfs_btree_cur *cur; /* bmap btree cursor */
|
|
struct xfs_bmbt_irec del; /* extent being deleted */
|
|
struct xfs_bmbt_irec del; /* extent being deleted */
|
|
@@ -5198,7 +5196,7 @@ __xfs_bunmapi(
|
|
if (ifp->if_flags & XFS_IFBROOT) {
|
|
if (ifp->if_flags & XFS_IFBROOT) {
|
|
ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE);
|
|
ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE);
|
|
cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork);
|
|
cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork);
|
|
- cur->bc_private.b.firstblock = *firstblock;
|
|
|
|
|
|
+ cur->bc_private.b.firstblock = tp->t_firstblock;
|
|
cur->bc_private.b.flags = 0;
|
|
cur->bc_private.b.flags = 0;
|
|
} else
|
|
} else
|
|
cur = NULL;
|
|
cur = NULL;
|
|
@@ -5314,7 +5312,7 @@ __xfs_bunmapi(
|
|
del.br_state = XFS_EXT_UNWRITTEN;
|
|
del.br_state = XFS_EXT_UNWRITTEN;
|
|
error = xfs_bmap_add_extent_unwritten_real(tp, ip,
|
|
error = xfs_bmap_add_extent_unwritten_real(tp, ip,
|
|
whichfork, &icur, &cur, &del,
|
|
whichfork, &icur, &cur, &del,
|
|
- firstblock, &logflags);
|
|
|
|
|
|
+ &tp->t_firstblock, &logflags);
|
|
if (error)
|
|
if (error)
|
|
goto error0;
|
|
goto error0;
|
|
goto nodelete;
|
|
goto nodelete;
|
|
@@ -5371,7 +5369,8 @@ __xfs_bunmapi(
|
|
prev.br_state = XFS_EXT_UNWRITTEN;
|
|
prev.br_state = XFS_EXT_UNWRITTEN;
|
|
error = xfs_bmap_add_extent_unwritten_real(tp,
|
|
error = xfs_bmap_add_extent_unwritten_real(tp,
|
|
ip, whichfork, &icur, &cur,
|
|
ip, whichfork, &icur, &cur,
|
|
- &prev, firstblock, &logflags);
|
|
|
|
|
|
+ &prev, &tp->t_firstblock,
|
|
|
|
+ &logflags);
|
|
if (error)
|
|
if (error)
|
|
goto error0;
|
|
goto error0;
|
|
goto nodelete;
|
|
goto nodelete;
|
|
@@ -5380,7 +5379,8 @@ __xfs_bunmapi(
|
|
del.br_state = XFS_EXT_UNWRITTEN;
|
|
del.br_state = XFS_EXT_UNWRITTEN;
|
|
error = xfs_bmap_add_extent_unwritten_real(tp,
|
|
error = xfs_bmap_add_extent_unwritten_real(tp,
|
|
ip, whichfork, &icur, &cur,
|
|
ip, whichfork, &icur, &cur,
|
|
- &del, firstblock, &logflags);
|
|
|
|
|
|
+ &del, &tp->t_firstblock,
|
|
|
|
+ &logflags);
|
|
if (error)
|
|
if (error)
|
|
goto error0;
|
|
goto error0;
|
|
goto nodelete;
|
|
goto nodelete;
|
|
@@ -5427,8 +5427,8 @@ nodelete:
|
|
*/
|
|
*/
|
|
if (xfs_bmap_needs_btree(ip, whichfork)) {
|
|
if (xfs_bmap_needs_btree(ip, whichfork)) {
|
|
ASSERT(cur == NULL);
|
|
ASSERT(cur == NULL);
|
|
- error = xfs_bmap_extents_to_btree(tp, ip, firstblock, &cur, 0,
|
|
|
|
- &tmp_logflags, whichfork);
|
|
|
|
|
|
+ error = xfs_bmap_extents_to_btree(tp, ip, &tp->t_firstblock,
|
|
|
|
+ &cur, 0, &tmp_logflags, whichfork);
|
|
logflags |= tmp_logflags;
|
|
logflags |= tmp_logflags;
|
|
if (error)
|
|
if (error)
|
|
goto error0;
|
|
goto error0;
|
|
@@ -5467,7 +5467,7 @@ error0:
|
|
xfs_trans_log_inode(tp, ip, logflags);
|
|
xfs_trans_log_inode(tp, ip, logflags);
|
|
if (cur) {
|
|
if (cur) {
|
|
if (!error) {
|
|
if (!error) {
|
|
- *firstblock = cur->bc_private.b.firstblock;
|
|
|
|
|
|
+ tp->t_firstblock = cur->bc_private.b.firstblock;
|
|
cur->bc_private.b.allocated = 0;
|
|
cur->bc_private.b.allocated = 0;
|
|
}
|
|
}
|
|
xfs_btree_del_cursor(cur,
|
|
xfs_btree_del_cursor(cur,
|
|
@@ -5485,12 +5485,11 @@ xfs_bunmapi(
|
|
xfs_filblks_t len,
|
|
xfs_filblks_t len,
|
|
int flags,
|
|
int flags,
|
|
xfs_extnum_t nexts,
|
|
xfs_extnum_t nexts,
|
|
- xfs_fsblock_t *firstblock,
|
|
|
|
int *done)
|
|
int *done)
|
|
{
|
|
{
|
|
int error;
|
|
int error;
|
|
|
|
|
|
- error = __xfs_bunmapi(tp, ip, bno, &len, flags, nexts, firstblock);
|
|
|
|
|
|
+ error = __xfs_bunmapi(tp, ip, bno, &len, flags, nexts);
|
|
*done = (len == 0);
|
|
*done = (len == 0);
|
|
return error;
|
|
return error;
|
|
}
|
|
}
|
|
@@ -6148,7 +6147,7 @@ xfs_bmap_finish_one(
|
|
break;
|
|
break;
|
|
case XFS_BMAP_UNMAP:
|
|
case XFS_BMAP_UNMAP:
|
|
error = __xfs_bunmapi(tp, ip, startoff, blockcount,
|
|
error = __xfs_bunmapi(tp, ip, startoff, blockcount,
|
|
- XFS_BMAPI_REMAP, 1, &tp->t_firstblock);
|
|
|
|
|
|
+ XFS_BMAPI_REMAP, 1);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
ASSERT(0);
|
|
ASSERT(0);
|