Beispiel #1
0
int coda_notify_change(struct dentry *de, struct iattr *iattr)
{
	struct inode *inode = de->d_inode;
        struct coda_vattr vattr;
        int error;
	
	ENTRY;
        memset(&vattr, 0, sizeof(vattr)); 

        coda_iattr_to_vattr(iattr, &vattr);
        vattr.va_type = C_VNON; /* cannot set type */
	CDEBUG(D_SUPER, "vattr.va_mode %o\n", vattr.va_mode);

	/* Venus is responsible for truncating the container-file!!! */
	error = venus_setattr(inode->i_sb, coda_i2f(inode), &vattr);

	if ( !error ) {
	        coda_vattr_to_iattr(inode, &vattr); 
		coda_cache_clear_inode(inode);
	}
	CDEBUG(D_SUPER, "inode.i_mode %o, error %d\n", inode->i_mode, error);

	EXIT;
	return error;
}
Beispiel #2
0
static int  coda_notify_change(struct dentry *de, struct iattr *iattr)
{
    struct inode *inode = de->d_inode;
    struct coda_inode_info *cii;
    struct coda_vattr vattr;
    int error;

    ENTRY;
    memset(&vattr, 0, sizeof(vattr));
    cii = ITOC(inode);
    CHECK_CNODE(cii);

    coda_iattr_to_vattr(iattr, &vattr);
    vattr.va_type = C_VNON; /* cannot set type */
    CDEBUG(D_SUPER, "vattr.va_mode %o\n", vattr.va_mode);

    error = venus_setattr(inode->i_sb, &cii->c_fid, &vattr);

    if ( !error ) {
        coda_vattr_to_iattr(inode, &vattr);
        coda_cache_clear_inode(inode);
    }
    CDEBUG(D_SUPER, "inode.i_mode %o, error %d\n",
           inode->i_mode, error);

    EXIT;
    return error;
}
Beispiel #3
0
int coda_setattr(struct dentry *de, struct iattr *iattr)
{
	struct inode *inode = de->d_inode;
	struct coda_vattr vattr;
	int error;

	memset(&vattr, 0, sizeof(vattr)); 

	inode->i_ctime = CURRENT_TIME_SEC;
	coda_iattr_to_vattr(iattr, &vattr);
	vattr.va_type = C_VNON; /* cannot set type */

	/* Venus is responsible for truncating the container-file!!! */
	error = venus_setattr(inode->i_sb, coda_i2f(inode), &vattr);

	if (!error) {
	        coda_vattr_to_iattr(inode, &vattr); 
		coda_cache_clear_inode(inode);
	}
	return error;
}