afs: Fix cell DNS lookup
[linux-2.6-microblaze.git] / fs / afs / internal.h
index 5269824..50d925f 100644 (file)
@@ -367,13 +367,13 @@ struct afs_cell {
        time64_t                last_inactive;  /* Time of last drop of usage count */
        atomic_t                usage;
        unsigned long           flags;
-#define AFS_CELL_FL_NOT_READY  0               /* The cell record is not ready for use */
-#define AFS_CELL_FL_NO_GC      1               /* The cell was added manually, don't auto-gc */
-#define AFS_CELL_FL_NOT_FOUND  2               /* Permanent DNS error */
-#define AFS_CELL_FL_DNS_FAIL   3               /* Failed to access DNS */
-#define AFS_CELL_FL_NO_LOOKUP_YET 4            /* Not completed first DNS lookup yet */
+#define AFS_CELL_FL_NO_GC      0               /* The cell was added manually, don't auto-gc */
+#define AFS_CELL_FL_DO_LOOKUP  1               /* DNS lookup requested */
        enum afs_cell_state     state;
        short                   error;
+       enum dns_record_source  dns_source:8;   /* Latest source of data from lookup */
+       enum dns_lookup_status  dns_status:8;   /* Latest status of data from lookup */
+       unsigned int            dns_lookup_count; /* Counter of DNS lookups */
 
        /* Active fileserver interaction state. */
        struct list_head        proc_volumes;   /* procfs volume list */
@@ -1371,6 +1371,20 @@ extern int yfs_fs_inline_bulk_status(struct afs_fs_cursor *, struct afs_net *,
                                     struct afs_callback *, unsigned int,
                                     struct afs_volsync *);
 
+struct yfs_acl {
+       struct afs_acl  *acl;           /* Dir/file/symlink ACL */
+       struct afs_acl  *vol_acl;       /* Whole volume ACL */
+       u32             inherit_flag;   /* True if ACL is inherited from parent dir */
+       u32             num_cleaned;    /* Number of ACEs removed due to subject removal */
+       unsigned int    flags;
+#define YFS_ACL_WANT_ACL       0x01    /* Set if caller wants ->acl */
+#define YFS_ACL_WANT_VOL_ACL   0x02    /* Set if caller wants ->vol_acl */
+};
+
+extern void yfs_free_opaque_acl(struct yfs_acl *);
+extern struct yfs_acl *yfs_fs_fetch_opaque_acl(struct afs_fs_cursor *, struct yfs_acl *);
+extern int yfs_fs_store_opaque_acl2(struct afs_fs_cursor *, const struct afs_acl *);
+
 /*
  * Miscellaneous inline functions.
  */