EXIT;
}
+inline int obdfs_has_inline(struct inode *inode)
+{
+ struct obdfs_inode_info *oinfo = inode->u.generic_ip;
+
+ return (oinfo->oi_flags & OBD_FL_INLINEDATA);
+}
+
+void inline obdfs_from_inode(struct obdo *oa, struct inode *inode)
+{
+ struct obdfs_inode_info *oinfo = inode->u.generic_ip;
+
+ obdo_from_inode(oa, inode);
+ if (obdfs_has_inline(inode)) {
+ memcpy(oa->o_inline, oinfo->oi_inline, OBD_INLINESZ);
+ oa->o_flags |= OBD_FL_INLINEDATA;
+ }
+}
+
+void inline obdfs_to_inode(struct inode *inode, struct obdo *oa)
+{
+ struct obdfs_inode_info *oinfo = inode->u.generic_ip;
+
+ obdo_to_inode(inode, oa);
+ if (obdo_has_inline(oa)) {
+ memcpy(oinfo->oi_inline, oa->o_inline, OBD_INLINESZ);
+ oinfo->oi_flags |= OBD_FL_INLINEDATA;
+ }
+}
+
/* all filling in of inodes postponed until lookup */
void obdfs_read_inode(struct inode *inode)
{
}
ODEBUG(oa);
- obdo_to_inode(inode, oa);
+ obdfs_to_inode(inode, oa);
obdo_free(oa);
IDEBUG(inode);
oa = obdo_alloc();
oa->o_valid = OBD_MD_FLALL;
- obdo_from_inode(oa, inode);
+ obdfs_from_inode(oa, inode);
err = IOPS(inode, setattr)(IID(inode), oa);
obdo_free(oa);
oa->o_id = inode->i_ino;
obdo_from_iattr(oa, attr);
err = IOPS(inode, setattr)(IID(inode), oa);
+ obdo_free(oa);
+
if ( err ) {
printk("obdfs_notify_change: obd_setattr fails (%d)\n", err);
return err;
ENTRY;
obdfs_sysctl_clean();
+ obdfs_cleanup_wreqcache();
unregister_filesystem(&obdfs_fs_type);
}