#include <linux/lustre_idl.h>
#include <linux/lustre_fsfilt.h>
#include <linux/lustre_smfs.h>
+#include <linux/lustre_snap.h>
#include "smfs_internal.h"
if (sfi->magic != SMFS_FILE_MAGIC)
LBUG();
+ if (filp->f_flags & O_APPEND)
+ tmp_ppos = filp->f_dentry->d_inode->i_size;
+ else {
+ tmp_ppos = *ppos;
+ }
+ SMFS_HOOK(filp->f_dentry->d_inode, filp->f_dentry, &count, &tmp_ppos,
+ HOOK_WRITE, NULL, PRE_HOOK, rc, exit);
+
if (ppos != &(filp->f_pos)) {
cache_ppos = &tmp_ppos;
} else {
count, cache_ppos);
}
- SMFS_KML_POST(filp->f_dentry->d_inode, filp->f_dentry,
- ppos, &count, REINT_WRITE, "write", rc, exit);
+ SMFS_HOOK(filp->f_dentry->d_inode, filp->f_dentry, ppos, &count,
+ HOOK_WRITE, NULL, POST_HOOK, rc, exit);
exit:
post_smfs_inode(filp->f_dentry->d_inode, cache_inode);
*ppos = *cache_ppos;
if ((rc = smfs_init_cache_file(inode, filp)))
RETURN(rc);
- pre_smfs_inode(inode, cache_inode);
if (cache_inode->i_fop->open)
rc = cache_inode->i_fop->open(cache_inode, F2CF(filp));
- post_smfs_inode(inode, cache_inode);
duplicate_file(filp, F2CF(filp));
RETURN(rc);
}
LBUG();
cache_file = sfi->c_file;
}
- pre_smfs_inode(inode, cache_inode);
if (cache_inode->i_fop->release)
rc = cache_inode->i_fop->release(cache_inode, cache_file);
post_smfs_inode(inode, cache_inode);
- duplicate_file(filp, cache_file);
smfs_cleanup_cache_file(filp);
RETURN(rc);
if (cache_inode->i_op->setattr)
rc = cache_inode->i_op->setattr(cache_dentry, attr);
- SMFS_KML_POST(dentry->d_inode, dentry, attr, NULL,
- REINT_SETATTR, "setattr", rc, exit);
+ SMFS_HOOK(dentry->d_inode, dentry, attr, NULL, HOOK_SETATTR, NULL,
+ POST_HOOK, rc, exit);
+
exit:
post_smfs_inode(dentry->d_inode, cache_inode);
post_smfs_dentry(cache_dentry);