} u;
};
-/* got from mds_update_record.
- * FIXME: maybe some attribute in reint_record and update_record will be
- * changed later. */
-/* XXX BUG 3188 -- must return to one set of structures. */
-/* XXX use fixed-sized fields (__u32) instead of dev_t and iattr->gid_t, etc */
-
-struct update_record {
- __u32 ur_opcode;
- __u32 ur_fsuid;
- __u32 ur_fsgid;
- dev_t ur_rdev;
- struct iattr ur_iattr;
- struct iattr ur_pattr;
- __u32 ur_flags;
- __u32 ur_len;
-};
-
-struct reint_record {
- struct update_record u_rec;
- char *rec_data1;
- int rec1_size;
- char *rec_data2;
- int rec2_size;
-};
-
-struct llog_smfs_rec {
- struct llog_rec_hdr lsr_hdr;
- struct update_record lsr_rec;
- struct llog_rec_tail lsr_tail;
-};
-
/* llog.c - general API */
typedef int (*llog_cb_t)(struct llog_handle *, struct llog_rec_hdr *, void *);
struct llog_handle *llog_alloc_handle(void);
iattr->ia_size = inode->i_size;
}
-void smfs_rec_pack(struct update_record *rec, struct inode *dst,
- void *data, int op)
-{
- rec->ur_fsuid = current->fsuid;
- rec->ur_fsgid = current->fsgid;
- rec->ur_rdev = dst->i_rdev;
- rec->ur_opcode = op;
- copy_inode_attr(&rec->ur_iattr, dst);
- if (data) {
- switch (op) {
- case REINT_CREATE:
- case REINT_LINK:
- case REINT_UNLINK:
- case REINT_RENAME: {
- struct inode *dir = (struct inode *)data;
- copy_inode_attr(&rec->ur_pattr, dir);
- break;
- }
- case REINT_SETATTR: {
- struct iattr *attr = (struct iattr *)data;
- memcpy(&rec->ur_pattr, attr, sizeof(struct iattr));
- break;
- }
- }
- }
- return;
-}
-
static inline int unpack_rec_data(char **p_buffer, int *size,
char *in_data, char *args_data)
{
char **pbuf, int *opcode);
extern int smfs_process_rec(struct super_block *sb, int count,
char *dir, int flags);
-extern void smfs_rec_pack(struct update_record *rec,
- struct inode *dst, void* data, int op);
-
extern smfs_pack_rec_func smfs_get_rec_pack_type(struct super_block *sb);
extern int ost_rec_pack_init(struct super_block *sb);