__u64 ur_time;
};
+#define MDS_LR_CLIENT 1024
+#define MDS_LR_SIZE 128
+
+#define MDS_MOUNT_RECOV 2
+
+/* Data stored per server at the head of the last_rcvd file */
+struct mds_server_data {
+ __u8 msd_uuid[37]; /* server UUID */
+ __u8 uuid_padding[3]; /* in case we decide to store UUIDs as ASCII */
+ __u64 msd_last_rcvd; /* last completed transaction ID */
+ __u64 msd_mount_count; /* MDS incarnation number */
+ __u8 padding[512 - 56];
+};
+
+/* Data stored per client in the last_rcvd file */
+struct mds_client_data {
+ __u8 mcd_uuid[37]; /* client UUID */
+ __u8 uuid_padding[3]; /* in case we decide to store UUIDs as ASCII */
+ __u64 mcd_last_rcvd; /* last completed transaction ID */
+ __u64 mcd_mount_count; /* MDS incarnation number */
+ __u8 padding[MDS_LR_SIZE - 56];
+};
+
/* mds/mds_reint.c */
int mds_reint_rec(struct mds_update_record *r, struct ptlrpc_request *req);
loff_t *offset);
void (* fs_delete_inode)(struct inode *inode);
void (* cl_delete_inode)(struct inode *inode);
+ int (* fs_journal_data)(struct inode *inode, struct file *file);
};
#define MDS_FSOP_UNLINK 1
#define MDS_FSOP_MKDIR 5
#define MDS_FSOP_SYMLINK 6
#define MDS_FSOP_MKNOD 7
+#define MDS_FSOP_SETATTR 8
+#define MDS_FSOP_LINK 9
static inline void *mds_fs_start(struct mds_obd *mds, struct inode *inode,
int op)
return mds->mds_fsops->fs_readpage(file, buf, count, offset);
}
+static inline ssize_t mds_fs_journal_data(struct mds_obd *mds,
+ struct inode *inode,
+ struct file *file)
+{
+ return mds->mds_fsops->fs_journal_data(inode, file);
+}
+
extern struct mds_fs_operations mds_ext2_fs_ops;
extern struct mds_fs_operations mds_ext3_fs_ops;
mds_ext2_fs_ops.cl_delete_inode(inode);
}
+int mds_ext2_journal_data(struct inode *inode, struct file *filp)
+{
+ return 0;
+}
+
struct mds_fs_operations mds_ext2_fs_ops = {
fs_start: mds_ext2_start,
fs_commit: mds_ext2_stop,
fs_readpage: mds_ext2_readpage,
fs_delete_inode:mds_ext2_delete_inode,
cl_delete_inode:clear_inode,
+ fs_journal_data:mds_ext2_journal_data,
};
struct mds_fs_operations mds_ext3_fs_ops;
-void mds_ext3_delete_inode(struct inode * inode)
+void mds_ext3_delete_inode(struct inode *inode)
{
void *handle;
mds_ext3_fs_ops.cl_delete_inode(inode);
}
+int mds_ext3_journal_data(struct inode *inode, struct file *filp)
+{
+ EXT3_I(inode)->i_flags |= EXT3_JOURNAL_DATA_FL;
+
+ return 0;
+}
+
struct mds_fs_operations mds_ext3_fs_ops = {
fs_start: mds_ext3_start,
fs_commit: mds_ext3_commit,
fs_readpage: mds_ext3_readpage,
fs_delete_inode:mds_ext3_delete_inode,
cl_delete_inode:clear_inode,
+ fs_journal_data:mds_ext3_journal_data,
};