#include <lustre_intent.h>
#include <linux/compat.h>
#include <linux/aio.h>
-
#include <lustre_compat.h>
+
#include "vvp_internal.h"
#include "range_lock.h"
/* update atime from MDS no matter if it's older than
* local inode atime. */
- unsigned int lli_update_atime:1,
- lli_inode_locked:1;
+ unsigned int lli_update_atime:1;
/* Try to make the d::member and f::member are aligned. Before using
* these members, make clear whether it is directory or not. */
unsigned int lli_sa_enabled:1;
/* generation for statahead */
unsigned int lli_sa_generation;
+ /* rw lock protects lli_lsm_md */
+ struct rw_semaphore lli_lsm_sem;
/* directory stripe information */
struct lmv_stripe_md *lli_lsm_md;
/* default directory stripe offset. This is extracted
* suppress_pings */
#define LL_SBI_FAST_READ 0x400000 /* fast read support */
#define LL_SBI_FILE_SECCTX 0x800000 /* set file security context at create */
-#define LL_SBI_PIO 0x1000000 /* parallel IO support */
+/* LL_SBI_PIO 0x1000000 parallel IO support, introduced in
+ 2.10, abandoned */
#define LL_SBI_TINY_WRITE 0x2000000 /* tiny write support */
#define LL_SBI_FLAGS { \
"fast_read", \
"file_secctx", \
"pio", \
- "tiny_write", \
+ "tiny_write", \
}
/* This is embedded into llite super-blocks to keep track of connect
struct ll_sb_info {
/* this protects pglist and ra_info. It isn't safe to
* grab from interrupt contexts */
- spinlock_t ll_lock;
- spinlock_t ll_pp_extent_lock; /* pp_extent entry*/
- spinlock_t ll_process_lock; /* ll_rw_process_info */
- struct obd_uuid ll_sb_uuid;
- struct obd_export *ll_md_exp;
- struct obd_export *ll_dt_exp;
- struct obd_device *ll_md_obd;
- struct obd_device *ll_dt_obd;
- struct proc_dir_entry* ll_proc_root;
- struct lu_fid ll_root_fid; /* root object fid */
+ spinlock_t ll_lock;
+ spinlock_t ll_pp_extent_lock; /* pp_extent entry*/
+ spinlock_t ll_process_lock; /* ll_rw_process_info */
+ struct obd_uuid ll_sb_uuid;
+ struct obd_export *ll_md_exp;
+ struct obd_export *ll_dt_exp;
+ struct obd_device *ll_md_obd;
+ struct obd_device *ll_dt_obd;
+ struct dentry *ll_debugfs_entry;
+ struct lu_fid ll_root_fid; /* root object fid */
int ll_flags;
unsigned int ll_umounting:1,
__u32 fd_layout_version;
};
-extern struct proc_dir_entry *proc_lustre_fs_root;
void llite_tunables_unregister(void);
int llite_tunables_register(void);
void cl_put_grouplock(struct ll_grouplock *lg);
/* llite/lproc_llite.c */
-#ifdef CONFIG_PROC_FS
-void ll_stats_ops_tally(struct ll_sb_info *sbi, int op, int count);
-extern struct lprocfs_vars lprocfs_llite_obd_vars[];
-#else
-static inline int ll_debugs_register_super(struct super_block *sb,
- const char *name)
-{ return 0; }
-static void ll_stats_ops_tally(struct ll_sb_info *sbi, int op, int count) {}
-#endif
int ll_debugfs_register_super(struct super_block *sb, const char *name);
void ll_debugfs_unregister_super(struct super_block *sb);
+void ll_stats_ops_tally(struct ll_sb_info *sbi, int op, int count);
enum {
LPROC_LL_DIRTY_HITS,
LUSTRE_OPC_ANY = 5,
};
+void ll_unlock_md_op_lsm(struct md_op_data *op_data);
struct md_op_data *ll_prep_md_op_data(struct md_op_data *op_data,
struct inode *i1, struct inode *i2,
const char *name, size_t namelen,