X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fsmfs%2Ffile.c;h=d7806bb70bf6b34d8a82d51e0144728c1f7b5de5;hb=c1f0d31d6bca15ae08f44a8b76eac2f849436b39;hp=49763fd018c7e2752d237b5de2d0993b941f5efc;hpb=0ae1c575448dbb0700bc45a88f964645c37a774c;p=fs%2Flustre-release.git diff --git a/lustre/smfs/file.c b/lustre/smfs/file.c index 49763fd..d7806bb 100644 --- a/lustre/smfs/file.c +++ b/lustre/smfs/file.c @@ -62,33 +62,20 @@ static ssize_t smfs_write(struct file *filp, const char *buf, size_t count, LASSERT(cache_inode->i_fop->write); sfi = F2SMFI(filp); - - if (sfi->magic != SMFS_FILE_MAGIC) - LBUG(); + LASSERT(sfi->magic == SMFS_FILE_MAGIC); if (filp->f_flags & O_APPEND) msg.pos = filp->f_dentry->d_inode->i_size; - pre_smfs_inode(filp->f_dentry->d_inode, cache_inode); - + pre_smfs_file(filp, &msg.pos, &cache_ppos); SMFS_PRE_HOOK(filp->f_dentry->d_inode, HOOK_WRITE, &msg); - if (ppos != &(filp->f_pos)) { - cache_ppos = &msg.pos; - } else { - cache_ppos = &sfi->c_file->f_pos; - } - - *cache_ppos = *ppos; - rc = cache_inode->i_fop->write(sfi->c_file, buf, count, cache_ppos); SMFS_POST_HOOK(filp->f_dentry->d_inode, HOOK_WRITE, &msg, rc); - - post_smfs_inode(filp->f_dentry->d_inode, cache_inode); + post_smfs_file(filp); *ppos = *cache_ppos; - duplicate_file(filp, sfi->c_file); RETURN(rc); } @@ -110,7 +97,7 @@ int smfs_ioctl(struct inode * inode, struct file * filp, LBUG(); pre_smfs_inode(inode, cache_inode); - + rc = cache_inode->i_fop->ioctl(cache_inode, sfi->c_file, cmd, arg); post_smfs_inode(inode, cache_inode); @@ -124,7 +111,6 @@ static ssize_t smfs_read(struct file *filp, char *buf, { struct inode *cache_inode = I2CI(filp->f_dentry->d_inode); struct smfs_file_info *sfi; - loff_t tmp_ppos; loff_t *cache_ppos = NULL; ssize_t rc = 0; @@ -137,21 +123,10 @@ static ssize_t smfs_read(struct file *filp, char *buf, if (sfi->magic != SMFS_FILE_MAGIC) LBUG(); - if (ppos != &(filp->f_pos)) { - cache_ppos = &tmp_ppos; - } else { - cache_ppos = &sfi->c_file->f_pos; - } - *cache_ppos = *ppos; - - pre_smfs_inode(filp->f_dentry->d_inode, cache_inode); - + pre_smfs_file(filp, ppos, &cache_ppos); rc = cache_inode->i_fop->read(sfi->c_file, buf, count, cache_ppos); + post_smfs_file(filp); - *ppos = *cache_ppos; - post_smfs_inode(filp->f_dentry->d_inode, cache_inode); - duplicate_file(filp, sfi->c_file); - RETURN(rc); } @@ -427,8 +402,8 @@ exit: RETURN(rc); } -int smfs_setxattr(struct dentry *dentry, const char *name, const void *value, - size_t size, int flags) +int smfs_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) { struct inode *cache_inode = I2CI(dentry->d_inode); struct dentry *cache_dentry = NULL; @@ -460,8 +435,8 @@ int smfs_setxattr(struct dentry *dentry, const char *name, const void *value, RETURN(rc); } -int smfs_getxattr(struct dentry *dentry, const char *name, void *buffer, - size_t size) +int smfs_getxattr(struct dentry *dentry, const char *name, + void *buffer, size_t size) { struct inode *cache_inode = I2CI(dentry->d_inode); struct dentry *cache_dentry;