X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=include%2Fsys%2Fzfs_vfsops.h;h=f685c1296401493c3b2765f5727a5ff97e9a957e;hb=556011dbec2d10579819078559a77630fc559112;hp=7b70f32ea5947a8f6d36c9b15696db31d61d0a9d;hpb=a8783adf24a8c40dcae0fbfa90eb231212f26884;p=zfs.git diff --git a/include/sys/zfs_vfsops.h b/include/sys/zfs_vfsops.h index 7b70f32..f685c12 100644 --- a/include/sys/zfs_vfsops.h +++ b/include/sys/zfs_vfsops.h @@ -69,8 +69,11 @@ typedef struct zfs_sb { krwlock_t z_teardown_inactive_lock; list_t z_all_znodes; /* all znodes in the fs */ uint64_t z_nr_znodes; /* number of znodes in the fs */ + unsigned long z_rollback_time;/* last online rollback time */ kmutex_t z_znodes_lock; /* lock for z_all_znodes */ struct inode *z_ctldir; /* .zfs directory inode */ + avl_tree_t z_ctldir_snaps; /* .zfs/snapshot entries */ + kmutex_t z_ctldir_lock; /* .zfs ctldir lock */ boolean_t z_show_ctldir; /* expose .zfs in the root dir */ boolean_t z_issnap; /* true if this is a snapshot */ boolean_t z_vscan; /* virus scan on/off */ @@ -85,7 +88,7 @@ typedef struct zfs_sb { uint64_t z_groupquota_obj; uint64_t z_replay_eof; /* New end of file - replay only */ sa_attr_type_t *z_attr_table; /* SA attr mapping->id */ -#define ZFS_OBJ_MTX_SZ 64 +#define ZFS_OBJ_MTX_SZ 256 kmutex_t z_hold_mtx[ZFS_OBJ_MTX_SZ]; /* znode hold locks */ } zfs_sb_t; @@ -93,24 +96,6 @@ typedef struct zfs_sb { #define ZSB_XATTR 0x0001 /* Enable user xattrs */ - -/* - * Minimal snapshot helpers, the bulk of the Linux snapshot implementation - * lives in the zpl_snap.c file which is part of the zpl source. - */ -#define ZFS_CTLDIR_NAME ".zfs" - -#define zfs_has_ctldir(zdp) \ - ((zdp)->z_id == ZTOZSB(zdp)->z_root && \ - (ZTOZSB(zdp)->z_ctldir != NULL)) -#define zfs_show_ctldir(zdp) \ - (zfs_has_ctldir(zdp) && \ - (ZTOZSB(zdp)->z_show_ctldir)) - -#define ZFSCTL_INO_ROOT 0x1 -#define ZFSCTL_INO_SNAPDIR 0x2 -#define ZFSCTL_INO_SHARES 0x3 - /* * Allow a maximum number of links. While ZFS does not internally limit * this the inode->i_nlink member is defined as an unsigned int. To be @@ -195,6 +180,7 @@ extern boolean_t zfs_is_readonly(zfs_sb_t *zsb); extern int zfs_register_callbacks(zfs_sb_t *zsb); extern void zfs_unregister_callbacks(zfs_sb_t *zsb); extern int zfs_domount(struct super_block *sb, void *data, int silent); +extern void zfs_preumount(struct super_block *sb); extern int zfs_umount(struct super_block *sb); extern int zfs_remount(struct super_block *sb, int *flags, char *data); extern int zfs_root(zfs_sb_t *zsb, struct inode **ipp);