LINUX: move afs_notify_change to osi_vnodeops.c
[openafs.git] / src / afs / LINUX24 / osi_vfsops.c
index 8b9cdea..77b821b 100644 (file)
@@ -39,9 +39,9 @@ extern afs_rwlock_t afs_xvcache;
 extern struct afs_q VLRU;
 
 extern struct dentry_operations afs_dentry_operations;
+extern int afs_notify_change(struct dentry *dp, struct iattr *iattrp);
 
 /* Forward declarations */
-static void iattr2vattr(struct vattr *vattrp, struct iattr *iattrp);
 static int afs_root(struct super_block *afsp);
 struct super_block *afs_read_super(struct super_block *sb, void *data, int silent);
 int afs_fill_super(struct super_block *sb, void *data, int silent);
@@ -175,33 +175,6 @@ afs_root(struct super_block *afsp)
 
 /* super_operations */
 
-/* afs_notify_change
- * Linux version of setattr call. What to change is in the iattr struct.
- * We need to set bits in both the Linux inode as well as the vcache.
- */
-int
-afs_notify_change(struct dentry *dp, struct iattr *iattrp)
-{
-    struct vattr vattr;
-    cred_t *credp = crref();
-    struct inode *ip = dp->d_inode;
-    int code;
-
-    VATTR_NULL(&vattr);
-    iattr2vattr(&vattr, iattrp);       /* Convert for AFS vnodeops call. */
-
-    AFS_GLOCK();
-    code = afs_setattr(VTOAFS(ip), &vattr, credp);
-    if (!code) {
-       afs_getattr(VTOAFS(ip), &vattr, credp);
-       vattr2inode(ip, &vattr);
-    }
-    AFS_GUNLOCK();
-    crfree(credp);
-    return -code;
-}
-
-
 #if defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE)
 #if defined(HAVE_KMEM_CACHE_T)
 static kmem_cache_t *afs_inode_cachep;
@@ -395,59 +368,3 @@ struct super_operations afs_sops = {
   .notify_change =     afs_notify_change,
 #endif
 };
-
-/************** Support routines ************************/
-
-/* vattr_setattr
- * Set iattr data into vattr. Assume vattr cleared before call.
- */
-static void
-iattr2vattr(struct vattr *vattrp, struct iattr *iattrp)
-{
-    vattrp->va_mask = iattrp->ia_valid;
-    if (iattrp->ia_valid & ATTR_MODE)
-       vattrp->va_mode = iattrp->ia_mode;
-    if (iattrp->ia_valid & ATTR_UID)
-       vattrp->va_uid = iattrp->ia_uid;
-    if (iattrp->ia_valid & ATTR_GID)
-       vattrp->va_gid = iattrp->ia_gid;
-    if (iattrp->ia_valid & ATTR_SIZE)
-       vattrp->va_size = iattrp->ia_size;
-    if (iattrp->ia_valid & ATTR_ATIME) {
-       vattrp->va_atime.tv_sec = iattrp->ia_atime;
-       vattrp->va_atime.tv_usec = 0;
-    }
-    if (iattrp->ia_valid & ATTR_MTIME) {
-       vattrp->va_mtime.tv_sec = iattrp->ia_mtime;
-       vattrp->va_mtime.tv_usec = 0;
-    }
-    if (iattrp->ia_valid & ATTR_CTIME) {
-       vattrp->va_ctime.tv_sec = iattrp->ia_ctime;
-       vattrp->va_ctime.tv_usec = 0;
-    }
-}
-
-/* vattr2inode
- * Rewrite the inode cache from the attr. Assumes all vattr fields are valid.
- */
-void
-vattr2inode(struct inode *ip, struct vattr *vp)
-{
-    ip->i_ino = vp->va_nodeid;
-    ip->i_nlink = vp->va_nlink;
-    ip->i_blocks = vp->va_blocks;
-#ifdef STRUCT_INODE_HAS_I_BLKBITS
-    ip->i_blkbits = AFS_BLKBITS;
-#endif
-#ifdef STRUCT_INODE_HAS_I_BLKSIZE
-    ip->i_blksize = vp->va_blocksize;
-#endif
-    ip->i_rdev = vp->va_rdev;
-    ip->i_mode = vp->va_mode;
-    ip->i_uid = vp->va_uid;
-    ip->i_gid = vp->va_gid;
-    i_size_write(ip, vp->va_size);
-    ip->i_atime = vp->va_atime.tv_sec;
-    ip->i_mtime = vp->va_mtime.tv_sec;
-    ip->i_ctime = vp->va_ctime.tv_sec;
-}