X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=include%2Fsys%2Fzfs_vfsops.h;h=7b70f32ea5947a8f6d36c9b15696db31d61d0a9d;hb=4b787d75c869a7f633607ecb17f3a7c482a553d2;hp=c8861f6e2bd57cf70f983c8a73a5b530eae4ddd6;hpb=76659dc110ef2ada13bcb8e4e2ec60d8216c6836;p=zfs.git diff --git a/include/sys/zfs_vfsops.h b/include/sys/zfs_vfsops.h index c8861f6..7b70f32 100644 --- a/include/sys/zfs_vfsops.h +++ b/include/sys/zfs_vfsops.h @@ -67,7 +67,8 @@ typedef struct zfs_sb { boolean_t z_unmounted; /* unmounted */ rrwlock_t z_teardown_lock; krwlock_t z_teardown_inactive_lock; - list_t z_all_znodes; /* all vnodes in the fs */ + list_t z_all_znodes; /* all znodes in the fs */ + uint64_t z_nr_znodes; /* number of znodes in the fs */ kmutex_t z_znodes_lock; /* lock for z_all_znodes */ struct inode *z_ctldir; /* .zfs directory inode */ boolean_t z_show_ctldir; /* expose .zfs in the root dir */ @@ -76,6 +77,7 @@ typedef struct zfs_sb { boolean_t z_use_fuids; /* version allows fuids */ boolean_t z_replay; /* set during ZIL replay */ boolean_t z_use_sa; /* version allow system attributes */ + boolean_t z_xattr_sa; /* allow xattrs to be stores as SA */ uint64_t z_version; /* ZPL version */ uint64_t z_shares_dir; /* hidden shares dir */ kmutex_t z_lock; @@ -111,10 +113,10 @@ typedef struct zfs_sb { /* * Allow a maximum number of links. While ZFS does not internally limit - * this most Linux filesystems do. It's probably a good idea to limit - * this to a large value until it is validated that this is safe. + * this the inode->i_nlink member is defined as an unsigned int. To be + * safe we use 2^31-1 as the limit. */ -#define ZFS_LINK_MAX 65536 +#define ZFS_LINK_MAX ((1U << 31) - 1U) /* * Normal filesystems (those not under .zfs/snapshot) have a total @@ -179,8 +181,14 @@ extern boolean_t zfs_owner_overquota(zfs_sb_t *zsb, struct znode *, extern boolean_t zfs_fuid_overquota(zfs_sb_t *zsb, boolean_t isgroup, uint64_t fuid); extern int zfs_set_version(zfs_sb_t *zsb, uint64_t newvers); +extern int zfs_get_zplprop(objset_t *os, zfs_prop_t prop, + uint64_t *value); extern int zfs_sb_create(const char *name, zfs_sb_t **zsbp); +extern int zfs_sb_setup(zfs_sb_t *zsb, boolean_t mounting); extern void zfs_sb_free(zfs_sb_t *zsb); +extern int zfs_sb_prune(struct super_block *sb, unsigned long nr_to_scan, + int *objects); +extern int zfs_sb_teardown(zfs_sb_t *zsb, boolean_t unmounting); extern int zfs_check_global_label(const char *dsname, const char *hexsl); extern boolean_t zfs_is_readonly(zfs_sb_t *zsb);