@@ -45,6 +45,10 @@
struct cifs_sb_info {
struct rb_root tlink_tree;
spinlock_t tlink_tree_lock;
+ struct rb_root uidtree;
+ spinlock_t siduidlock;
+ struct rb_root gidtree;
+ spinlock_t sidgidlock;
struct tcon_link *master_tlink;
struct nls_table *local_nls;
unsigned int rsize;
@@ -74,6 +74,12 @@ struct cifs_wksid {
char sidname[SIDNAMELENGTH];
} __attribute__((packed));
+struct cifs_sid_id {
+ struct rb_node rbnode;
+ struct cifs_sid sid;
+ unsigned long id;
+} __attribute__((packed));
+
extern int match_sid(struct cifs_sid *);
extern int compare_sids(const struct cifs_sid *, const struct cifs_sid *);
@@ -122,6 +122,12 @@ cifs_read_super(struct super_block *sb, void *data,
spin_lock_init(&cifs_sb->tlink_tree_lock);
cifs_sb->tlink_tree = RB_ROOT;
+ spin_lock_init(&cifs_sb->siduidlock);
+ cifs_sb->uidtree = RB_ROOT;
+
+ spin_lock_init(&cifs_sb->sidgidlock);
+ cifs_sb->gidtree = RB_ROOT;
+
rc = bdi_setup_and_register(&cifs_sb->bdi, "cifs", BDI_CAP_MAP_COPY);
if (rc) {
kfree(cifs_sb);