static ssize_t smfs_write(struct file *filp, const char *buf, size_t count,
loff_t *ppos)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(filp->f_dentry->d_inode);
struct smfs_file_info *sfi;
loff_t *cache_ppos = NULL;
int rc = 0;
ENTRY;
- cache_inode = I2CI(filp->f_dentry->d_inode);
- if (!cache_inode || !cache_inode->i_fop->write)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_fop->write);
sfi = F2SMFI(filp);
int smfs_ioctl(struct inode * inode, struct file * filp,
unsigned int cmd, unsigned long arg)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(filp->f_dentry->d_inode);
struct smfs_file_info *sfi;
ssize_t rc = 0;
ENTRY;
- cache_inode = I2CI(filp->f_dentry->d_inode);
- if (!cache_inode || !cache_inode->i_fop->ioctl)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_fop->ioctl);
sfi = F2SMFI(filp);
if (sfi->magic != SMFS_FILE_MAGIC)
static ssize_t smfs_read(struct file *filp, char *buf,
size_t count, loff_t *ppos)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(filp->f_dentry->d_inode);
struct smfs_file_info *sfi;
loff_t tmp_ppos;
loff_t *cache_ppos = NULL;
ENTRY;
- cache_inode = I2CI(filp->f_dentry->d_inode);
- if (!cache_inode || !cache_inode->i_fop->read)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_fop->read);
sfi = F2SMFI(filp);
if (sfi->magic != SMFS_FILE_MAGIC)
RETURN(rc);
}
-static loff_t smfs_llseek(struct file *file,
- loff_t offset,
- int origin)
+static loff_t smfs_llseek(struct file *file, loff_t offset, int origin)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(file->f_dentry->d_inode);
struct smfs_file_info *sfi;
ssize_t rc = 0;
ENTRY;
- cache_inode = I2CI(file->f_dentry->d_inode);
- if (!cache_inode || !cache_inode->i_fop->llseek)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_fop->llseek);
sfi = F2SMFI(file);
if (sfi->magic != SMFS_FILE_MAGIC)
{
struct inode *inode = file->f_dentry->d_inode;
struct smfs_file_info *sfi;
- struct inode *cache_inode = NULL;
+ struct inode *cache_inode = I2CI(inode);
int rc = 0;
ENTRY;
- cache_inode = I2CI(inode);
- if (!cache_inode)
- RETURN(-ENOENT);
-
+ LASSERT(cache_inode);
+
sfi = F2SMFI(file);
if (sfi->magic != SMFS_FILE_MAGIC)
LBUG();
int smfs_open(struct inode *inode, struct file *filp)
{
- struct inode *cache_inode = NULL;
+ struct inode *cache_inode = I2CI(inode);
int rc = 0;
ENTRY;
- cache_inode = I2CI(inode);
- if (!cache_inode)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
if ((rc = smfs_init_cache_file(inode, filp)))
RETURN(rc);
-
+ //it possible that backstore fs has no open(),
+ //but we need it to init cache filp
if (cache_inode->i_fop->open) {
rc = cache_inode->i_fop->open(cache_inode, F2CF(filp));
duplicate_file(filp, F2CF(filp));
int smfs_release(struct inode *inode, struct file *filp)
{
- struct inode *cache_inode = NULL;
+ struct inode *cache_inode = I2CI(inode);
struct file *cache_file = NULL;
struct smfs_file_info *sfi = NULL;
int rc = 0;
+
ENTRY;
- cache_inode = I2CI(inode);
- if (!cache_inode)
- RETURN(-ENOENT);
+ LASSERT(cache_inode);
if (filp) {
sfi = F2SMFI(filp);
struct smfs_file_info *sfi = NULL;
struct dentry *cache_dentry = NULL;
struct file *cache_file = NULL;
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
int rc = 0;
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_fop->fsync)
- RETURN(-ENOENT);
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_fop->fsync);
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)
int smfs_setattr(struct dentry *dentry, struct iattr *attr)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
struct dentry *cache_dentry;
void *handle = NULL;
int rc = 0;
.attr = attr
};
-
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_op->setattr)
- RETURN(-ENOENT);
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_op->setattr);
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)
int smfs_setxattr(struct dentry *dentry, const char *name, const void *value,
size_t size, int flags)
{
- struct inode *cache_inode;
- struct dentry *cache_dentry;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
+ struct dentry *cache_dentry = NULL;
int rc = 0;
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_op->setxattr)
- RETURN(-ENOENT);
-
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_op->setxattr);
+
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)
RETURN(-ENOMEM);
int smfs_getxattr(struct dentry *dentry, const char *name, void *buffer,
size_t size)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
struct dentry *cache_dentry;
int rc = 0;
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_op->getattr)
- RETURN(-ENOENT);
-
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_op->getxattr);
+
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)
RETURN(-ENOMEM);
ssize_t smfs_listxattr(struct dentry *dentry, char *buffer, size_t size)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
struct dentry *cache_dentry;
int rc = 0;
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_op->listxattr)
- RETURN(-ENOENT);
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_op->listxattr);
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)
int smfs_removexattr(struct dentry *dentry, const char *name)
{
- struct inode *cache_inode;
+ struct inode *cache_inode = I2CI(dentry->d_inode);
struct dentry *cache_dentry;
int rc = 0;
- cache_inode = I2CI(dentry->d_inode);
- if (!cache_inode || !cache_inode->i_op->removexattr)
- RETURN(-ENOENT);
+ ENTRY;
+
+ LASSERT(cache_inode);
+ LASSERT(cache_inode->i_op->removexattr);
cache_dentry = pre_smfs_dentry(NULL, cache_inode, dentry);
if (!cache_dentry)