Lines Matching refs:td
1616 ffs_blkfree_td(struct fs *fs, struct discardopdata *td)
1618 struct mount *mp = spec_node_getmountedfs(td->devvp);
1622 while (td->size) {
1623 todo = uimin(td->size,
1624 ffs_lfragtosize(fs, (fs->fs_frag - ffs_fragnum(fs, td->bno))));
1631 ffs_blkfree_cg(fs, td->devvp, td->bno, todo);
1633 td->bno += ffs_numfrags(fs, todo);
1634 td->size -= todo;
1641 struct discardopdata *td = (void *)wk;
1654 start = FFS_FSBTOBYTES(fs, td->bno);
1655 len = td->size;
1656 vn_lock(td->devvp, LK_EXCLUSIVE | LK_RETRY);
1660 VOP_FDISCARD(td->devvp, start, len);
1661 VOP_UNLOCK(td->devvp);
1663 printf("trim(%" PRId64 ",%ld):%d\n", td->bno, td->size, error);
1666 ffs_blkfree_td(fs, td);
1667 kmem_free(td, sizeof(*td));
1700 struct discardopdata *td = NULL;
1712 td = ts->entry;
1716 if (td) {
1718 ffs_blkfree_td(ts->fs, td);
1720 printf("finish(%" PRId64 ",%ld)\n", td->bno, td->size);
1722 kmem_free(td, sizeof(*td));
1740 struct discardopdata *td;
1760 td = NULL;
1764 td = ts->entry;
1766 if (td->bno == bno + ffs_numfrags(fs, size)
1767 && td->size + size <= ts->maxsize) {
1768 td->bno = bno;
1769 td->size += size;
1770 if (td->size < ts->maxsize) {
1772 printf("defer(%" PRId64 ",%ld)\n", td->bno, td->size);
1783 if (td) {
1785 printf("enq old(%" PRId64 ",%ld)\n", td->bno, td->size);
1790 workqueue_enqueue(ts->wq, &td->wk, NULL);
1795 td = kmem_alloc(sizeof(*td), KM_SLEEP);
1796 td->devvp = devvp;
1797 td->bno = bno;
1798 td->size = size;
1800 if (td->size < ts->maxsize) { /* XXX always the case */
1804 printf("defer(%" PRId64 ",%ld)\n", td->bno, td->size);
1806 ts->entry = td;
1807 td = NULL;
1811 if (td) {
1813 printf("enq new(%" PRId64 ",%ld)\n", td->bno, td->size);
1818 workqueue_enqueue(ts->wq, &td->wk, NULL);