aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs/ffs/ffs_extern.h
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2011-06-12 19:27:05 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2011-06-12 19:27:05 +0000
commit9eb8728aa5a55f1b4e8449758d183b49da4dea71 (patch)
tree7d0ae8580a1a7287703c44a2b3ddbe41275f5102 /sys/ufs/ffs/ffs_extern.h
parent8e6cab54e8ab97c0cd55d92735c570267bfb853c (diff)
downloadsrc-9eb8728aa5a55f1b4e8449758d183b49da4dea71.tar.gz
src-9eb8728aa5a55f1b4e8449758d183b49da4dea71.zip
Update to soft updates journaling to properly track freed blocks
that get claimed by snapshots. Submitted by: Jeff Roberson Tested by: Peter Holm
Notes
Notes: svn path=/head/; revision=223020
Diffstat (limited to 'sys/ufs/ffs/ffs_extern.h')
-rw-r--r--sys/ufs/ffs/ffs_extern.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_extern.h b/sys/ufs/ffs/ffs_extern.h
index 58d612145e01..fbda5a8956b3 100644
--- a/sys/ufs/ffs/ffs_extern.h
+++ b/sys/ufs/ffs/ffs_extern.h
@@ -80,12 +80,14 @@ int ffs_realloccg(struct inode *, ufs2_daddr_t, ufs2_daddr_t,
ufs2_daddr_t, int, int, int, struct ucred *, struct buf **);
int ffs_sbupdate(struct ufsmount *, int, int);
void ffs_setblock(struct fs *, u_char *, ufs1_daddr_t);
-int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t);
+int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t,
+ struct workhead *);
void ffs_snapremove(struct vnode *vp);
int ffs_snapshot(struct mount *mp, char *snapfile);
void ffs_snapshot_mount(struct mount *mp);
void ffs_snapshot_unmount(struct mount *mp);
void process_deferred_inactive(struct mount *mp);
+void ffs_sync_snap(struct mount *, int);
int ffs_syncvnode(struct vnode *vp, int waitfor);
int ffs_truncate(struct vnode *, off_t, int, struct ucred *, struct thread *);
int ffs_update(struct vnode *, int);
@@ -149,6 +151,9 @@ int softdep_prealloc(struct vnode *, int);
int softdep_journal_lookup(struct mount *, struct vnode **);
void softdep_journal_freeblocks(struct inode *, struct ucred *, off_t, int);
void softdep_journal_fsync(struct inode *);
+void softdep_buf_append(struct buf *, struct workhead *);
+void softdep_inode_append(struct inode *, struct ucred *, struct workhead *);
+void softdep_freework(struct workhead *);
/*
@@ -161,4 +166,14 @@ void softdep_journal_fsync(struct inode *);
int ffs_rdonly(struct inode *);
+TAILQ_HEAD(snaphead, inode);
+
+struct snapdata {
+ LIST_ENTRY(snapdata) sn_link;
+ struct snaphead sn_head;
+ daddr_t sn_listsize;
+ daddr_t *sn_blklist;
+ struct lock sn_lock;
+};
+
#endif /* !_UFS_FFS_EXTERN_H */