2017-01-08 12:13:18 +03:00
|
|
|
#ifndef _BCACHE_FS_H
|
|
|
|
#define _BCACHE_FS_H
|
|
|
|
|
|
|
|
#include "str_hash.h"
|
|
|
|
|
|
|
|
#include <linux/seqlock.h>
|
2017-03-20 08:39:19 +03:00
|
|
|
#include <linux/stat.h>
|
2017-01-08 12:13:18 +03:00
|
|
|
|
|
|
|
struct bch_inode_info {
|
|
|
|
struct inode vfs_inode;
|
|
|
|
|
|
|
|
struct mutex update_lock;
|
|
|
|
u64 journal_seq;
|
|
|
|
|
|
|
|
atomic_long_t i_size_dirty_count;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* these are updated whenever we update the inode in the btree - for
|
|
|
|
* e.g. fsync
|
|
|
|
*/
|
|
|
|
u64 i_size;
|
|
|
|
u32 i_flags;
|
|
|
|
|
|
|
|
atomic_long_t i_sectors_dirty_count;
|
|
|
|
atomic64_t i_sectors;
|
|
|
|
|
|
|
|
struct bch_hash_info str_hash;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define to_bch_ei(_inode) \
|
|
|
|
container_of(_inode, struct bch_inode_info, vfs_inode)
|
|
|
|
|
|
|
|
static inline u8 mode_to_type(umode_t mode)
|
|
|
|
{
|
|
|
|
return (mode >> 12) & 15;
|
|
|
|
}
|
|
|
|
|
2016-10-04 06:22:17 +03:00
|
|
|
static inline unsigned nlink_bias(umode_t mode)
|
|
|
|
{
|
|
|
|
return S_ISDIR(mode) ? 2 : 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
struct bch_inode_unpacked;
|
|
|
|
|
2017-03-04 09:09:52 +03:00
|
|
|
#ifndef NO_BCACHE_FS
|
|
|
|
|
2017-01-08 12:13:18 +03:00
|
|
|
/* returns 0 if we want to do the update, or error is passed up */
|
|
|
|
typedef int (*inode_set_fn)(struct bch_inode_info *,
|
2016-10-04 06:22:17 +03:00
|
|
|
struct bch_inode_unpacked *, void *);
|
2017-01-08 12:13:18 +03:00
|
|
|
|
2017-03-20 02:56:34 +03:00
|
|
|
int __must_check __bch2_write_inode(struct bch_fs *, struct bch_inode_info *,
|
|
|
|
inode_set_fn, void *);
|
|
|
|
int __must_check bch2_write_inode(struct bch_fs *,
|
|
|
|
struct bch_inode_info *);
|
2017-01-08 12:13:18 +03:00
|
|
|
|
2017-03-20 02:56:34 +03:00
|
|
|
void bch2_vfs_exit(void);
|
|
|
|
int bch2_vfs_init(void);
|
2017-01-08 12:13:18 +03:00
|
|
|
|
2017-03-04 09:09:52 +03:00
|
|
|
#else
|
|
|
|
|
2017-03-20 02:56:34 +03:00
|
|
|
static inline void bch2_vfs_exit(void) {}
|
|
|
|
static inline int bch2_vfs_init(void) { return 0; }
|
2017-03-04 09:09:52 +03:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2017-01-08 12:13:18 +03:00
|
|
|
#endif /* _BCACHE_FS_H */
|