aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs/ffs/ffs_extern.h
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2018-08-18 22:21:59 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2018-08-18 22:21:59 +0000
commit7e038bc257e9c5f7563695b88b481e493a33576f (patch)
treed1186e77ac4b97483067bb633ce79107e226047e /sys/ufs/ffs/ffs_extern.h
parentdb7c2a482248b83d7e325ffa36ce14d93ab78ad2 (diff)
downloadsrc-7e038bc257e9c5f7563695b88b481e493a33576f.tar.gz
src-7e038bc257e9c5f7563695b88b481e493a33576f.zip
Replace the TRIM consolodation framework originally added in -r337396
driven by problems found with the algorithms being tested for TRIM consolodation. Reported by: Peter Holm Suggested by: kib Reviewed by: kib Sponsored by: Netflix
Notes
Notes: svn path=/head/; revision=338031
Diffstat (limited to 'sys/ufs/ffs/ffs_extern.h')
-rw-r--r--sys/ufs/ffs/ffs_extern.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_extern.h b/sys/ufs/ffs/ffs_extern.h
index 2df48ec91de9..6b8e708f7371 100644
--- a/sys/ufs/ffs/ffs_extern.h
+++ b/sys/ufs/ffs/ffs_extern.h
@@ -63,9 +63,11 @@ int ffs_balloc_ufs2(struct vnode *a_vp, off_t a_startoffset, int a_size,
struct ucred *a_cred, int a_flags, struct buf **a_bpp);
int ffs_blkatoff(struct vnode *, off_t, char **, struct buf **);
void ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *,
- ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *);
+ ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *, u_long);
ufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *);
ufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *);
+void ffs_blkrelease_finish(struct ufsmount *, u_long);
+u_long ffs_blkrelease_start(struct ufsmount *, struct vnode *, ino_t);
int ffs_checkfreefile(struct fs *, struct vnode *, ino_t);
void ffs_clrblock(struct fs *, u_char *, ufs1_daddr_t);
void ffs_clusteracct(struct fs *, struct cg *, ufs1_daddr_t, int);
@@ -111,11 +113,27 @@ vfs_vget_t ffs_vget;
int ffs_vgetf(struct mount *, ino_t, int, struct vnode **, int);
void process_deferred_inactive(struct mount *mp);
+/*
+ * Flags to ffs_vgetf
+ */
#define FFSV_FORCEINSMQ 0x0001
+/*
+ * Flags to ffs_reload
+ */
#define FFSR_FORCE 0x0001
#define FFSR_UNSUSPEND 0x0002
+/*
+ * Definitions for TRIM interface
+ *
+ * Special keys and recommended hash table size
+ */
+#define NOTRIM_KEY 1 /* never written, so don't call trim for it */
+#define SINGLETON_KEY 2 /* only block being freed, so trim it now */
+#define FIRST_VALID_KEY 3 /* first valid key describing a block range */
+#define MAXTRIMIO 1024 /* maximum expected outstanding trim requests */
+
extern struct vop_vector ffs_vnodeops1;
extern struct vop_vector ffs_fifoops1;
extern struct vop_vector ffs_vnodeops2;