lprocfs_counter_incr(mds->mds_counters, opcode);
#endif
+#ifdef __KERNEL__
+/* Open counts for files. No longer atomic, must hold inode->i_sem */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
+# define mds_inode_oatomic(inode) ((inode)->i_cindex)
+#else
+# define mds_inode_oatomic(inode) ((inode)->i_attr_flags)
+#endif
+
+static inline int mds_orphan_open_count(struct inode *inode)
+{
+ LASSERT_MDS_ORPHAN_READ_LOCKED(inode);
+ return mds_inode_oatomic(inode);
+}
+
+static inline int mds_orphan_open_inc(struct inode *inode)
+{
+ LASSERT_MDS_ORPHAN_WRITE_LOCKED(inode);
+ return ++mds_inode_oatomic(inode);
+}
+
+static inline int mds_orphan_open_dec_test(struct inode *inode)
+{
+ LASSERT_MDS_ORPHAN_WRITE_LOCKED(inode);
+ return --mds_inode_oatomic(inode) == 0;
+}
+
+#define mds_inode_is_orphan(inode) ((inode)->i_flags & 0x4000000)
+#define mds_inode_set_orphan(inode) \
+do { \
+ (inode)->i_flags |= 0x4000000; \
+ CDEBUG(D_VFSTRACE, "setting orphan flag on inode %p\n", inode); \
+} while (0)
+#define mds_inode_unset_orphan(inode) \
+do { \
+ (inode)->i_flags &= ~(0x4000000); \
+ CDEBUG(D_VFSTRACE, "removing orphan flag from inode %p\n", inode); \
+} while (0)
+#endif /* __KERNEL__ */
+
/* mds/mds_reint.c */
int enqueue_ordered_locks(struct obd_device *obd, struct ldlm_res_id *p1_res_id,
struct lustre_handle *p1_lockh, int p1_lock_mode,
char *name, int namelen,
struct lustre_handle *child_lockh,
struct dentry **dchildp, int child_mode,
- __u64 child_lockpart, void* clone_info);
+ __u64 child_lockpart);
int mds_lock_new_child(struct obd_device *obd, struct inode *inode,
struct lustre_handle *child_lockh);
void mds_exit_ucred(struct lvfs_ucred *ucred);
/* mds/mds_unlink_open.c */
-int mds_open_unlink_rename(struct mds_update_record *rec,
- struct obd_device *obd, struct dentry *dparent,
- struct dentry *dchild, void **handle);
int mds_cleanup_orphans(struct obd_device *obd);