ALSA: Revert "ALSA: snd-usb-caiaq: Set default input mode of A4DJ"
[safe/jmp/linux-2.6] / fs / adfs / adfs.h
index e0a85db..2ff622f 100644 (file)
@@ -1,3 +1,6 @@
+#include <linux/fs.h>
+#include <linux/adfs_fs.h>
+
 /* Internal data structures for ADFS */
 
 #define ADFS_FREE_FRAG          0
 struct buffer_head;
 
 /*
+ * adfs file system inode data in memory
+ */
+struct adfs_inode_info {
+       loff_t          mmu_private;
+       unsigned long   parent_id;      /* object id of parent          */
+       __u32           loadaddr;       /* RISC OS load address         */
+       __u32           execaddr;       /* RISC OS exec address         */
+       unsigned int    filetype;       /* RISC OS file type            */
+       unsigned int    attr;           /* RISC OS permissions          */
+       unsigned int    stamped:1;      /* RISC OS file has date/time   */
+       struct inode vfs_inode;
+};
+
+/*
+ * Forward-declare this
+ */
+struct adfs_discmap;
+struct adfs_dir_ops;
+
+/*
+ * ADFS file system superblock data in memory
+ */
+struct adfs_sb_info {
+       struct adfs_discmap *s_map;     /* bh list containing map                */
+       struct adfs_dir_ops *s_dir;     /* directory operations                  */
+
+       uid_t           s_uid;          /* owner uid                             */
+       gid_t           s_gid;          /* owner gid                             */
+       umode_t         s_owner_mask;   /* ADFS owner perm -> unix perm          */
+       umode_t         s_other_mask;   /* ADFS other perm -> unix perm          */
+
+       __u32           s_ids_per_zone; /* max. no ids in one zone               */
+       __u32           s_idlen;        /* length of ID in map                   */
+       __u32           s_map_size;     /* sector size of a map                  */
+       unsigned long   s_size;         /* total size (in blocks) of this fs     */
+       signed int      s_map2blk;      /* shift left by this for map->sector    */
+       unsigned int    s_log2sharesize;/* log2 share size                       */
+       __le32          s_version;      /* disc format version                   */
+       unsigned int    s_namelen;      /* maximum number of characters in name  */
+};
+
+static inline struct adfs_sb_info *ADFS_SB(struct super_block *sb)
+{
+       return sb->s_fs_info;
+}
+
+static inline struct adfs_inode_info *ADFS_I(struct inode *inode)
+{
+       return container_of(inode, struct adfs_inode_info, vfs_inode);
+}
+
+/*
  * Directory handling
  */
 struct adfs_dir {
@@ -53,6 +108,7 @@ struct adfs_dir_ops {
        int     (*update)(struct adfs_dir *dir, struct object_info *obj);
        int     (*create)(struct adfs_dir *dir, struct object_info *obj);
        int     (*remove)(struct adfs_dir *dir, struct object_info *obj);
+       int     (*sync)(struct adfs_dir *dir);
        void    (*free)(struct adfs_dir *dir);
 };
 
@@ -65,7 +121,7 @@ struct adfs_discmap {
 
 /* Inode stuff */
 struct inode *adfs_iget(struct super_block *sb, struct object_info *obj);
-int adfs_write_inode(struct inode *inode,int unused);
+int adfs_write_inode(struct inode *inode, struct writeback_control *wbc);
 int adfs_notify_change(struct dentry *dentry, struct iattr *attr);
 
 /* map.c */
@@ -90,7 +146,8 @@ extern const struct dentry_operations adfs_dentry_operations;
 extern struct adfs_dir_ops adfs_f_dir_ops;
 extern struct adfs_dir_ops adfs_fplus_dir_ops;
 
-extern int adfs_dir_update(struct super_block *sb, struct object_info *obj);
+extern int adfs_dir_update(struct super_block *sb, struct object_info *obj,
+                          int wait);
 
 /* file.c */
 extern const struct inode_operations adfs_file_inode_operations;